Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Softwareengineering Graphen und Bäume Teil II

Ähnliche Präsentationen


Präsentation zum Thema: "Softwareengineering Graphen und Bäume Teil II"—  Präsentation transkript:

1 Softwareengineering Graphen und Bäume Teil II
Prof. Dr.-Ing. Axel Benz, Berlin School of Economics and Law se_7_graphen_und_baeume_III.ppt

2 Typische Operationen auf Graphen
Test, ob der Graph ein zusammenhängender Graph ist Zyklensuche im Graphen Kürzester Weg von Knoten a nach Knoten b usw. Wir konzentrieren uns hier beispielhaft auf die Zyklensuche se_7_graphen_und_baeume_III.ppt

3 Standard-Technik für Graphen:
"Einfärben" von Knoten Der Graph wird, den Kanten folgend, durchlaufen und die besuchten Knoten werden eingefärbt. Wenn ich von einem Knoten nicht weiter komme, liegt er nicht in einem Zyklus und wird gestrichen. Wenn ich einen neuen Knoten besuche, kann ich nachschauen, ob er bereits eingefärbt wurde. se_7_graphen_und_baeume_III.ppt

4 Properties und Methoden für einen Graphen
Konstruktor: new Graph() Aufbau des Graphen: Graph.add_node(Node n) Graph.add_edge(Node source, Node target) Informationen über den Graphen bekommen: Node[] getAllNodes() Boolean isInCycle(Node n) Boolen hasCycle(); Knotenoperationen: Node[] nextNodes(Node n) // Direkt von n erreichbaren Knoten) Konstruktor: new Node(); new Node(String content); Einfärben: setColor(String color); se_7_graphen_und_baeume_III.ppt

5 Jeder Knoten erhält eine Liste seiner Folgeknoten Methoden der Knoten:
Verwaltung der Kanten (Adjazenzliste wäre auch möglich, aber hier mal anders) Jeder Knoten erhält eine Liste seiner Folgeknoten Methoden der Knoten: void addFollower(node n) Liste getFollowers() n f1 f2 f3 f4 se_7_graphen_und_baeume_III.ppt

6 Implementierung Bei den Vorüberlegungen hat sich gezeigt, dass wir ein Array mit wachsender Größe brauchen. Wir wählen dazu die Datenstruktur java.util.vector. import java.util.Vector; public class Node { private Vector followers; private String content; private String color; public void addFollower(Node n) { followers.add(n); } public Vector getFollowers(){ return followers; se_7_graphen_und_baeume_III.ppt

7 Zyklensuche: Intiale Funktion
se_7_graphen_und_baeume_III.ppt

8 Zyklensuche: Kernfunktion
se_7_graphen_und_baeume_III.ppt

9 Baumdurchlauf Ein Baum hat keine Zyklen, deswegen kann man beim Durchlauf auf das Färben verzichten. Der Baumdurchlauf ist eine Tiefensuche: Es werde immer zuerst die Kinder bis zum Ende verfolgt, dann wird auf das nächste Geschwisterkind übergegangen. se_7_graphen_und_baeume_III.ppt

10 Baumdurchlauf Präfix Eine Operation, die beim ersten Besuch eines Knotens durchgeführt wird, wird als Präfix bezeichnet. se_7_graphen_und_baeume_III.ppt

11 Baumdurchlauf Postfix
Eine Operation, die beim letzten Besuch eines Knotens durchgeführt wird, wird als Postfix bezeichnet. se_7_graphen_und_baeume_III.ppt

12 Baumdurchlauf Infix Eine Operation, die beim Wechsel von einem Kind zum nächsten ausgeführt wird (oder wenn gar keine Kinder da sind), wird als Infix bezeichnet. se_7_graphen_und_baeume_III.ppt

13 Anwendung Infix: Sortieren über Bäume
Wir bilden spezielle Bäume: Jeder Knoten hat höchstens 2 Kinder Die Kinder sind "geordnet" (siehe unten): Ausgangssituation: 4,1,23,6,4,67,43,32,5,3 soll sortiert werden. Algorithmus: erste Zahl, wird erster Knoten Ab diesem Moment hängen wir Knoten unten an, die niedrigeren Knoten links, die höheren Knoten rechts. 4 se_7_graphen_und_baeume_III.ppt

14 Anwendung Infix: Sortieren über Bäume
Ausgangssituation: 4,1,23,6,67,43,32,5,3 Infix-Durchlauf ergibt geordnete Werte: 1,3,4,5,6,23,32, 43,67 4 1 23 3 6 67 5 43 32 se_7_graphen_und_baeume_III.ppt


Herunterladen ppt "Softwareengineering Graphen und Bäume Teil II"

Ähnliche Präsentationen


Google-Anzeigen