Dr. Johannes Mayer Abteilung Angewandte Informationsverarbeitung 29. April 2005
Hans Braxmeier Blatt 2
Ralph Guderlei


\includegraphics[scale=0.4]{UULogo.eps}



Design und Architektur von Softwaresystemen (SS 2005)


Abgabetermin: 29. April 2005

1 Punktprozesse (20 Punkte)


Stochastische räumliche Prozesse sind beispielsweise Punktprozesse, die Punkte nach einer mathematischen Gesetzmäßigkeit im Raum verteilen. Der einfachste und bekannteste Vertreter aller Punktprozesse ist der Poissonprozess. Er erzeugt eine völlig zufällige Gleichverteilung der Punkte im Raum, wobei die Anzahl der Punkte poissonverteilt ist.

Weitere bekannte Punktprozesse sind Clusterprozesse, bei denen sich Punkte um Clusterzentren häufen oder Hardcoreprozesse, bei denen die einzelnen Punkte einen gewissen Mindestabstand zueinander besitzen.



\fbox{\includegraphics[scale=0.2]{Poisson.ps}} \fbox{\includegraphics[scale=0.2]{Cluster.ps}} \fbox{\includegraphics[scale=0.2]{Hard.ps}}


Realisierungen von Poisson-, Cluster- und Hardcoreprozess


Beim Clusterprozess werden zunächst die Clusterzentren durch einen Poissonprozess simuliert. Anschließend wird für die Clusterzentren eine Umgebung definiert, innerhalb dieser weitere Punkte durch einen zweiten Poissonprozess erzeugt werden. Die Umgebung ist definiert durch eine Kreisscheibe deren Radius der sogenannte Clusterradius ist. D.h. in einem Rechteck um jedes Clusterzentrum wird ein Poissonprozess simuliert und alle Punkte außerhalb des Kreises verworfen. Zur Realisierung des Clusterprozesses gehören alle Punkte außer den Clusterzentren.


Ein Hardcoreprozess ist ebenfalls ein Prozess, bei dem die Punkte zunächst anhand eines Poissonprozesses erzeugt werden. Diese Punkte werden je zufällig mit einer unabhängigen reellen Zufallszahl zwischen 0 und 1 markiert. Diejenigen Punkte, in deren Umgebung (ein Kreis mit dem Hardcoreradius) ein Punkt mit einer kleineren Markierung existiert, werden verworfen. Alle anderen bilden die Realisierung des Hardcoreprozesses.


Die oben gezeigten Realisierungen von Poisson-, Cluster- und Hardcoreprozess wurden mit folgenden Parameterwerten erzeugt:

Folgender Pseudocode beschreibt einen Poissonprozess, wobei minx, maxx, miny, maxy und intensity Eingabeparameter sind.

// size of the sampling window (volume)
double minx, maxx, miny, maxy;
double sizex = maxx-minx;
double sizey = maxy-miny;

// intensity
double intensity;

// modify the volume with the intensity 
// (for the simulation of the Poisson distribution)
double expectpts = sizex * sizey * intensity;

// a Poisson distributed random variable can be simulated by
// adding exponentially distributed random variables
// nextDouble() yields a value within [0,1]
Random generator = new Random();
double e = -Math.log(generator.nextDouble());

while (e <= expectpts) {

        // realise a randomly within the sampling 
        // window distributed point
        double x = minx + generator.nextDouble() * sizex;
        double y = miny + generator.nextDouble() * sizey;

        // ... and e.g. print out the coordinates
        System.out.println("X: " + x + "   Y: " + y);

        e -= Math.log(generator.nextDouble());
}

Teilaufgabe a) (10 Punkte)


Schreiben Sie ein Programm, bestehend aus mehrer Klassen, welches in der Lage ist die beschriebenen 3 Punktprozesse zu simulieren.

Die simulierten Daten sollen anschließend im PBM-Format, welches für das Speichern von monochromen Bildaten entworfen wurde, in eine Datei geschrieben werden. Eine PBM-Datei ist so einfach wie möglich aufgebaut: Sie beginnt jeweils mit einem Header (erste Zeile), dem die Bildinformation unmittelbar (zeilenweise) folgt. Der Header ist immer in ASCII geschrieben, wobei die einzelnen Einträge durch White Spaces getrennt werden. Die Bildinformation kann entweder im ASCII- oder Binärformat gespeichert werden.

Es gibt jeweils zwei Header-Versionen, von denen eine für ASCII- und eine für binäre Bildinformationen benutzt wird. Wir beschränken uns auf den ASCII-Fall. Ein ASCII-PBM-Header besteht aus folgenden Einträgen, jeweils durch White Spaces getrennt:

Beispiel:

   P1 7 7
   0 1 0 1 0 1 0
   1 1 1 1 1 1 1
   0 0 1 1 1 0 0
   0 0 1 1 1 0 0
   0 0 1 1 1 0 0
   1 1 1 1 1 1 1
   0 1 0 1 0 1 0

Für weitere Inforamtionen zum PBM-Bilddateiformat siehe man pbm.



Teilaufgabe b) (10 Punkte)


Erweitern Sie Ihr Programm so, dass auch ein Clusterprozess Basis für einen Hardcoreprozess sein kann und umgekehrt.



Viel Erfolg!



Hans Braxmeier 2005-05-30