• Keine Ergebnisse gefunden

1 Erd¨ os-Zahl (10 Punkte)

N/A
N/A
Protected

Academic year: 2021

Aktie "1 Erd¨ os-Zahl (10 Punkte)"

Copied!
1
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Prof. Dr. Franz Schweiggert und Dr. Johannes Mayer Abt. Angewandte Informationsverarbeitung 19. Mai 2006

Ralph Guderlei Blatt 4

A

Software Engineering Praxis (SS 2006)

Abgabetermin: 26. Mai 2006

1 Erd¨ os-Zahl (10 Punkte)

Paul Erd¨oes ist einer der bekanntesten Mathematiker des 20. Jahrhunderts. Er publizierte mit einer großen Zahl anderer Autoren, was ihn auf die Idee brachte, die Erd¨os-Zahlen wie folgt zu definieren:

• Paul Erd¨os hat Erd¨os-Zahl 0

• Jeder Koautor von Paul Erd¨os hat Erd¨os-Zahl 1

• Jeder Koautor eines Koautors von Erd¨os hat Erd¨os-Zahl 2

• usw.

Die Erd¨os-Zahl ist eine Veranschaulichung des Kleine-Welt-Ph¨anomens von Stanley Milgram, der behauptet, dass in einer modernen Gesellschaft alle ¨ uber eine unerwartet kleine Anzahl an pers¨onlichen Bekanntschafen zueinander in Verbindung stehen.

Die Erd¨os-Zahl kann ¨ uber einen Beziehungs-Graphen berechnet werden. Die Autoren sind die Knoten des Graphen und zwischen zwei Knoten besteht eine Kante, wenn zwei Autoren miteinander publiziert haben.

Der Graph kann also aus einer Literatur-Datenbank aufgebaut werden. Eine kleine Datenbank steht zur Erzeugung zur Verf¨ ugung. Um die Berarbeitung der Datenbank zu vereinfachen, steht ein jar-file zur Verf¨ ugung, welches Methoden zur Zerlegung der Eintr¨age zur Verf¨ ugung stellt.

Schreiben Sie also als erstes ein Programm zum Einlesen der Datenbank und speichern Sie die Autoren und den Titel der Ver¨offentlichungen ab. Jede Zeile der Datenbank-Datei entspricht ei- nem Eintrag, die Autoren und den Titel erhalten Sie dann mit Hilfe der im jar-file zur Verf¨ ugung gestellten Klasse.

Als n¨achstes schreiben Sie ein Programm, welches aus den Daten die Erd¨os-Zahl jedes Autors bestimmt. Stellen Sie hierzu den Beziehungs-Graphen auf. Sie k¨onnen davon ausgehen, dass jeder Nachname eindeutig einen Autoren bestimmt. Die Erd¨os-Zahl eines Autors X l¨asst sich nun als L¨ange des k¨ urzesten Wegs im Graphen von X zu Paul Erd¨os berechnen, wobei jede Kante die L¨ange 1 hat.

Um den Graphen aufzubauen reicht es aus, in einer geeigneten Datenstruktur f¨ ur jeden Autor dessen Koautoren abzulegen. Beispielsweise eignet sich eine Map. Der Schl¨ ussel ist der Name des Autors, der abgelegte Wert ist die Liste der Koautoren.

Zur Bestimmung aller Pfade zwischen zwei Knoten k¨onnen zwei Algorithmen, die Tiefen- oder Breitensuche verwendet werden. In beiden Verfahren werden ausgehend von einem Start- Knoten alle verbundenen Knoten besucht bis der gesuchte Knoten gefunden wurde. Folgender Code beschreibt das Vorgehen um einen krzesten Pfad zum Knoten ”ziel” zu suchen:

class Node{

public int number;

public int dist;

public Node(int n, int d){

number = n ; dist = d;

}

public boolean equals(Object o){

if(!(o instanceof Node)) return false;

return ((Node)o).number == number && ((Node)o).dist == dist;

}

public int bfs(Node start, Node ziel) {

Queue<Node> toBeVisited = new LinkedList<Node>();

Set<Node> visited = new TreeSet<Node>();

toBeVistited.add(start);

while (!toBeVisited.isEmpty()) { Node node = toBeVisited.poll();

if (node.equals(ziel) return node.dist;

visited.add(node);

for (Node neighbor : getNeighbors(node)) if (!visited.contains(neighbor))

toBeVisited.add(new Node (neighbor.number, node.dist+1});

}

return -1; // nicht erreichbar }

section*Hinweise

• Wikipedia: Breitensuche

• Erd¨ os Number Project

• Wikipedia: Kleine-Welt-Ph¨ anomen

Viel Erfolg!

Referenzen

ÄHNLICHE DOKUMENTE

Detlev Nagl, Jahrgang 1954, ist Facharzt für Transfusi- onsmedizin und seit 26 Jahren – lediglich unter- brochen durch die kli- nische Weiterbildung – für den Blutspendedienst

Ein Graph heißt bipartit, wenn es eine Partitio- nierung seiner Knotenmenge in zwei stabile Mengen

  Felder mit einem Namen zzz, die den Access-Type exposedField haben, haben implizit den Namen zzz_changed, wenn sie als Ausgabe-Feld verwendet werden, und den Namen set_zzz,

Computer-gestützte Programme für das Ge- wichtsmanagmeent seien zwar weniger wirk- sam als persönliche Interventionen, aber auf jeden FAll besser als nichts und auch ange- sichts

Und wenn ich das tue, möchte ich auch nicht Toleranz in Anspruch nehmen müssen - Toleranz würde ja nur bedeuten, dass ich zwar schon was und womöglich begründet dagegen habe,

Entwerfen Sie einen Algorithmus, der entscheiden kann, ob ein gegebener gerichteter Graph G = ( V, E ) einen Zyklus beinhaltet oder nicht. a) Schreiben Sie Ihren Algorithmus

„ Siehe Bild: Für jeden Knoten sind alle Daten links kleiner und alle Daten rechts größer als die Daten des

Für die Beurteilung von abweichenden Situationen wird angenommen, dass sich die Störwirkung in Abhängigkeit der Anzahl Stop &amp; Go Ereignisse verändert. Bei einer minimal