Bäume als spezielle Graphen M. Jakob Gymnasium Pegnitz 29. November 2015 Inhaltsverzeichnis 1 Die rekursive Datenstruktur Baum 2 Geordnete Binärbäume 3 Die Datenstruktrur Graph In diesem Abschnitt Die rekursive Datenstruktur Baum 1.1 Listen umstrukturieren 1 Die rekursive Datenstruktur Baum 1 1 Listen umstrukturieren Definition Baum Definition Baum Bestandteile der Datenstruktur Baum sind Knoten und Kanten. Der erste Knoten, der keinen Vorgänger hat, heißt Wurzel. Bei Knoten unterscheidet man zwischen Blättern (Knoten ohne Nachfolger) und inneren Knoten. Die Tiefe oder Ebene eines Knotens ist die Anzahl der Kanten des Weges von der Wurzel bis hin zu diesem Knoten. Die Tiefe n des Baums ist gleich der maximalen Knotentiefe, die Ordnung k des Baums ist gleich der Maximum an Kanten, die von einem Knoten ausgehen. In die n-te Ebene eines Baumes der Ordnung k passen maximal k n Elemente, ein Baum der Tiefe n kann maximal 2n+1 − 1 aufnehmen. M. Jakob (Gymnasium Pegnitz) Bäume als spezielle Graphen 29. November 2015 4 / 71 Die rekursive Datenstruktur Baum 1 1 Listen umstrukturieren Definition Baum M. Jakob (Gymnasium Pegnitz) Bäume als spezielle Graphen 29. November 2015 5 / 71 Die rekursive Datenstruktur Baum 1 1 Listen umstrukturieren Defintion Definition geordneter Binärbaum Ein geordneter Binärbaum ist ein Binärbaum bei dem für jeden Knoten K die Werte in allen Knoten des linken Teilbaums kleiner sind als der Wert dieses Knotens K , die Werte in allen Knoten des rechten Teilbaums sind größer (oder gleich) als der Wert dieses Knotens K . M. Jakob (Gymnasium Pegnitz) Bäume als spezielle Graphen 29. November 2015 6 / 71 Die rekursive Datenstruktur Baum 1 1 Listen umstrukturieren Übung åÜ 1.1: Matheprisma: Binärbäume Ü 1.2: S. 56 / 2, 3 Ü 1.3: S. 57 / 5, 6, 8, 9 Ü 1.4: S. 58 / 11 Ü 1.5: S. 67/1 M. Jakob (Gymnasium Pegnitz) Bäume als spezielle Graphen 29. November 2015 7 / 71 1 Die rekursive Datenstruktur Baum 1 Listen umstrukturieren Klassendiagramm Listen Ü6: KD allg Baum, binBaum erstellen M. Jakob (Gymnasium Pegnitz) Bäume als spezielle Graphen 29. November 2015 8 / 71 1 Die rekursive Datenstruktur Baum 1 Listen umstrukturieren Klassendiagramm Baum M. Jakob (Gymnasium Pegnitz) Bäume als spezielle Graphen 29. November 2015 9 / 71 In diesem Abschnitt 2 2.1 2.2 2.3 2.4 2.5 Geordnete Binärbäume Deklaration und Initialisierung Deklaration Suchen Einfügen Baum in perfekter Komposition Baumdurchläufe 2 1 Klassendiagramm Binärer Baum Geordnete Binärbäume Deklaration und Initialisierung Die Trennung in linken und rechten Nachfolger macht deutlich, dass in Suchbäumen zwingend links und rechts unterschieden werden muss. M. Jakob (Gymnasium Pegnitz) Bäume als spezielle Graphen 29. November 2015 11 / 71 Geordnete Binärbäume 2 1 Deklaration und Initialisierung Klassenkarten M. Jakob (Gymnasium Pegnitz) Bäume als spezielle Graphen 29. November 2015 12 / 71 Geordnete Binärbäume 2 1 Deklaration und Initialisierung Klassenkarten M. Jakob (Gymnasium Pegnitz) Bäume als spezielle Graphen 29. November 2015 12 / 71 2 Geordnete Binärbäume 1 Deklaration und Initialisierung Ablaufprotokoll Suche åbvt M. Jakob (Gymnasium Pegnitz) Bäume als spezielle Graphen 29. November 2015 13 / 71 2 Geordnete Binärbäume 1 Deklaration und Initialisierung Ablaufprotokoll Suche åbvt M. Jakob (Gymnasium Pegnitz) S0: wurzel.suchen(75) Bäume als spezielle Graphen 29. November 2015 13 / 71 2 Geordnete Binärbäume 1 Deklaration und Initialisierung Ablaufprotokoll Suche åbvt M. Jakob (Gymnasium Pegnitz) S0: wurzel.suchen(75) Schlüssel gleich? Bäume als spezielle Graphen 29. November 2015 13 / 71 2 Geordnete Binärbäume 1 Deklaration und Initialisierung Ablaufprotokoll Suche åbvt M. Jakob (Gymnasium Pegnitz) S0: wurzel.suchen(75) Schlüssel gleich? nein Bäume als spezielle Graphen 29. November 2015 13 / 71 2 Geordnete Binärbäume 1 Deklaration und Initialisierung Ablaufprotokoll Suche åbvt M. Jakob (Gymnasium Pegnitz) S0: wurzel.suchen(75) Schlüssel gleich? nein Wo weitersuchen? Bäume als spezielle Graphen 29. November 2015 13 / 71 2 Geordnete Binärbäume 1 Deklaration und Initialisierung Ablaufprotokoll Suche åbvt M. Jakob (Gymnasium Pegnitz) S0: wurzel.suchen(75) Schlüssel gleich? nein Wo weitersuchen? rechts Bäume als spezielle Graphen 29. November 2015 13 / 71 2 Geordnete Binärbäume 1 Deklaration und Initialisierung Ablaufprotokoll Suche åbvt M. Jakob (Gymnasium Pegnitz) S0: wurzel.suchen(75) Schlüssel gleich? nein Wo weitersuchen? rechts Nachfolger vorhanden? Bäume als spezielle Graphen 29. November 2015 13 / 71 2 Geordnete Binärbäume 1 Deklaration und Initialisierung Ablaufprotokoll Suche åbvt M. Jakob (Gymnasium Pegnitz) S0: wurzel.suchen(75) Schlüssel gleich? nein Wo weitersuchen? rechts Nachfolger vorhanden? ja Bäume als spezielle Graphen 29. November 2015 13 / 71 2 Geordnete Binärbäume 1 Deklaration und Initialisierung Ablaufprotokoll Suche åbvt M. Jakob (Gymnasium Pegnitz) S0: wurzel.suchen(75) Schlüssel gleich? nein Wo weitersuchen? rechts Nachfolger vorhanden? ja rechts weitersuchen Bäume als spezielle Graphen 29. November 2015 13 / 71 2 Geordnete Binärbäume 1 Deklaration und Initialisierung Ablaufprotokoll Suche åbvt M. Jakob (Gymnasium Pegnitz) S0: wurzel.suchen(75) Schlüssel gleich? nein Wo weitersuchen? rechts Nachfolger vorhanden? ja rechts weitersuchen S1: wurzel.reNF.suchen(75) Schlüssel gleich? nein Wo weitersuchen? links Nachfolger vorhanden? ja links weitersuchen Bäume als spezielle Graphen 29. November 2015 13 / 71 2 Geordnete Binärbäume 1 Deklaration und Initialisierung Ablaufprotokoll Suche åbvt M. Jakob (Gymnasium Pegnitz) S0: wurzel.suchen(75) Schlüssel gleich? nein Wo weitersuchen? rechts Nachfolger vorhanden? ja rechts weitersuchen S1: wurzel.reNF.suchen(75) Schlüssel gleich? nein Wo weitersuchen? links Nachfolger vorhanden? ja links weitersuchen S2: wurzel.reNF.liNF.suchen(75) Bäume als spezielle Graphen 29. November 2015 13 / 71 2 Geordnete Binärbäume 1 Deklaration und Initialisierung Ablaufprotokoll Suche åbvt M. Jakob (Gymnasium Pegnitz) S0: wurzel.suchen(75) Schlüssel gleich? nein Wo weitersuchen? rechts Nachfolger vorhanden? ja rechts weitersuchen S1: wurzel.reNF.suchen(75) Schlüssel gleich? nein Wo weitersuchen? links Nachfolger vorhanden? ja links weitersuchen S2: wurzel.reNF.liNF.suchen(75) Schlüssel gleich? ja return true true true Bäume als spezielle Graphen 29. November 2015 13 / 71 Geordnete Binärbäume 2 1 Deklaration und Initialisierung Sequenzdiagramm M. Jakob (Gymnasium Pegnitz) Bäume als spezielle Graphen 29. November 2015 14 / 71 Geordnete Binärbäume 2 1 Deklaration und Initialisierung Übungen Ü 2.1: Ablaufprotokoll und Sequenzdiagramm erstellen Erstelle zu dem abgebildeten Baum jeweils das Ablaufprotokoll und das Squenzdiagramm für die Suche der Zahlen 29, 98 und 100 M. Jakob (Gymnasium Pegnitz) Bäume als spezielle Graphen 29. November 2015 15 / 71 Geordnete Binärbäume 2 1 Deklaration und Initialisierung Übungen Ü 2.2: S. 68/2 Ü 2.3: S. 68/3 Ü 2.4: S. 68/4 Ü 2.5: Deklariere die Klassen BINBAUM und KNOTEN. . . M. Jakob (Gymnasium Pegnitz) Bäume als spezielle Graphen 29. November 2015 16 / 71 Deklaration und Initialisierung 2 1 KNOTEN — Deklaration und Initialisierung Geordnete Binärbäume 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 class KNOTEN { private KNOTEN linkerNachfolger ; private KNOTEN rechterNachfolger ; private DATENELEMENT daten ; KNOTEN ( DATENELEMENT d){ linkerNachfolger = null; rechterNachfolger = null; daten = d; } KNOTEN ( DATENELEMENT d, KNOTEN lnf , KNOTEN rnf) { linkerNachfolger = lnf; rechterNachfolger = rnf; daten = d; } } M. Jakob (Gymnasium Pegnitz) Bäume als spezielle Graphen 29. November 2015 17 / 71 Deklaration und Initialisierung 2 1 BINBAUM — Deklaration und Initialisierung Geordnete Binärbäume 1 2 3 4 5 6 class BINBAUM { private KNOTEN wurzel ; BINBAUM (){ wurzel = null; } } M. Jakob (Gymnasium Pegnitz) Bäume als spezielle Graphen 29. November 2015 18 / 71 In diesem Abschnitt 2 2.1 2.2 2.3 2.4 2.5 Geordnete Binärbäume Deklaration und Initialisierung Deklaration Suchen Einfügen Baum in perfekter Komposition Baumdurchläufe 2 2 BINBAUM — Was bisher geschah Geordnete Binärbäume Deklaration Suchen S0: wurzel.suchen(75) Schlüssel gleich?nein Wo weitersuchen?rechts Nachfolger vorhanden?ja rechts weitersuchen S1: wurzel.reNF.suchen(75) Schlüssel gleich? nein Wo weitersuchen? links Nachfolger vorhanden? ja links weitersuchen S2: wurzel.reNF.liNF.suchen(75) Schlüssel gleich? ja return true true true M. Jakob (Gymnasium Pegnitz) Bäume als spezielle Graphen 29. November 2015 20 / 71 Deklaration Suchen 2 2 KNOTEN — Datenflussdiagramm Suchen Geordnete Binärbäume DFD entwickeln M. Jakob (Gymnasium Pegnitz) Bäume als spezielle Graphen 29. November 2015 21 / 71 Deklaration Suchen 2 2 KNOTEN — Datenflussdiagramm Suchen Geordnete Binärbäume DFD entwickeln M. Jakob (Gymnasium Pegnitz) Bäume als spezielle Graphen 29. November 2015 21 / 71 Deklaration Suchen 2 2 KNOTEN — Methode Suchen in Pseudocode Geordnete Binärbäume 1 2 3 4 5 6 7 8 9 10 11 if (sd.key=kd.key) { return sd} else { if (sd.key <kd.key) { if (liNF != null) {liNF. Suchen (sd)} else { return null} } else { //sd.key <= kd.key if (reNF != null) {reNF. Suchen (sd)} else { return null} } } M. Jakob (Gymnasium Pegnitz) Bäume als spezielle Graphen 29. November 2015 22 / 71 Geordnete Binärbäume 2 2 Deklaration Suchen Übungen Ü 2.6: BaumcodeAnalysieren Starte das Paket Baum1Test und stelle den Objektzustand der Testklasse BAUMAUFBAU (Rechtsklick) wieder her. (a) Inspiziere das Objekt baum, erforsche so die Baumstruktur und zeichne den Baum mit yEd. (b) Es soll in der BlueJ-Umgebung getestet werden, ob die Datenelemente 7 und 31 in dem Baum vorkommen. Was ist zu tun? In welcher Form erhält man die gewünschte Information? (c) Vergleiche den Pseudocode für die Methode KNOTEN.Suchen mit dem Code, der in dem Paket Baum1Test implementiert ist. Wo liegen die Unterschiede? Schreibe den Code in Baum1Test so um, dass er genau zu dem Pseudocode passt und teste das Paket erneut. (d) Erläutere den Quellcode BAUM.Suchen. M. Jakob (Gymnasium Pegnitz) Bäume als spezielle Graphen 29. November 2015 23 / 71 Deklaration Suchen 2 2 BINBAUM — Datenflussdiagramm Suchen Geordnete Binärbäume M. Jakob (Gymnasium Pegnitz) Bäume als spezielle Graphen 29. November 2015 24 / 71 In diesem Abschnitt 2 2.1 2.2 2.3 2.4 2.5 Geordnete Binärbäume Deklaration und Initialisierung Deklaration Suchen Einfügen Baum in perfekter Komposition Baumdurchläufe 2 Geordnete Binärbäume 3 Einfügen Die Methode Einfuegen åÜ 2.7: Einfuegen M. Jakob (Gymnasium Pegnitz) Bäume als spezielle Graphen 29. November 2015 26 / 71 In diesem Abschnitt 2 2.1 2.2 2.3 2.4 2.5 Geordnete Binärbäume Deklaration und Initialisierung Deklaration Suchen Einfügen Baum in perfekter Komposition Baumdurchläufe Kompositum 2 4 Ausgangspunkt: Unübersichtlicher Programmcode „Suchen“ Geordnete Binärbäume 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 DATENELEMENT Suchen ( DATENELEMENT wert) { if ( daten . Vergleichen (wert) == 0) { return daten ; } else { if (daten . Vergleichen (wert) < 0) { if ( rechterNachfolger == null) { return null; } else { return rechterNachfolger . Suchen (wert); } } else { if ( linkerNachfolger == null) { return null; } else { return linkerNachfolger . Suchen (wert); } } M. Jakob (Gymnasium Pegnitz) Bäume als spezielle Graphen 29. November 2015 28 / 71 2 4 Ursache der Fallunterscheidungen Geordnete Binärbäume M. Jakob (Gymnasium Pegnitz) Bäume als spezielle Graphen Kompositum 29. November 2015 29 / 71 2 4 Ursache der Fallunterscheidungen Geordnete Binärbäume Kompositum Knoten müssen keine Nachfolger haben M. Jakob (Gymnasium Pegnitz) Bäume als spezielle Graphen 29. November 2015 29 / 71 2 Idee: Nachfolger erzwingen Geordnete Binärbäume x x 4 Kompositum x x M. Jakob (Gymnasium Pegnitz) x Bäume als spezielle Graphen 29. November 2015 30 / 71 2 Idee: Nachfolger erzwingen Geordnete Binärbäume x x x x M. Jakob (Gymnasium Pegnitz) x 4 Kompositum Problem: Die Baumelemente sind keine Konten mehr sondern Knoten oder Abschlusskappen Bäume als spezielle Graphen 29. November 2015 30 / 71 2 Die Klasse „Baumelement“ Geordnete Binärbäume Bisher M. Jakob (Gymnasium Pegnitz) 4 Kompositum Jetzt Bäume als spezielle Graphen 29. November 2015 31 / 71 2 Die Klasse „Baumelement“ Geordnete Binärbäume Bisher M. Jakob (Gymnasium Pegnitz) 4 Kompositum Jetzt Bäume als spezielle Graphen 29. November 2015 31 / 71 2 Geordnete Binärbäume 4 Kompositum Binbaum in Kompositum Bisher M. Jakob (Gymnasium Pegnitz) Jetzt Bäume als spezielle Graphen 29. November 2015 32 / 71 Kompositum 2 4 Suchen in Kompositum — Sequenzdiagramm Geordnete Binärbäume M. Jakob (Gymnasium Pegnitz) Bäume als spezielle Graphen 29. November 2015 33 / 71 Kompositum 2 4 KNOTEN.Suchen in Kompositum — DFD Geordnete Binärbäume M. Jakob (Gymnasium Pegnitz) Bäume als spezielle Graphen 29. November 2015 34 / 71 Geordnete Binärbäume 2 4 Kompositum Übung åÜ 2.8: Kompositum M. Jakob (Gymnasium Pegnitz) Bäume als spezielle Graphen 29. November 2015 35 / 71 In diesem Abschnitt 2 2.1 2.2 2.3 2.4 2.5 Geordnete Binärbäume Deklaration und Initialisierung Deklaration Suchen Einfügen Baum in perfekter Komposition Baumdurchläufe 2 5 Einführung—Rechenbäume Geordnete Binärbäume Baumdurchläufe + ∗ : - + 3 4 7 3 9 8 [(3 + 4) : (7 − 8)] + (3 · 9) rekursive Struktur inorder: linker Term — Operand — rechter Term M. Jakob (Gymnasium Pegnitz) Bäume als spezielle Graphen 29. November 2015 37 / 71 Baumdurchläufe 2 5 Einführung—Rechenbäume funktional betrachtet Geordnete Binärbäume + div mult add 3 3 sub 4 7 9 8 add(div(add(3, 4), sub(7, 8)), mult(3, 9)) kürzer add div add 3 4 sub 7 8 mult 3 9 rekursive Struktur preorder: Operand — linker Term — rechter Term M. Jakob (Gymnasium Pegnitz) Bäume als spezielle Graphen 29. November 2015 38 / 71 2 Geordnete Binärbäume 5 Baumdurchläufe Baumdurchlauf Der Baumdurchlauf dient dazu, alle Elemente des Baums systematisch zu besuchen. Es gibt drei möglichen Durchlaufstrategien. preorder inorder postorder Datenel. <T-Baum li> <T-Baum li> <T-Baum li> Datenel. <T-Baum re> <T-Baum re> <T-Baum re> Datenel. åÜ 2.9: Baumdurchläufe M. Jakob (Gymnasium Pegnitz) Bäume als spezielle Graphen 29. November 2015 39 / 71 In diesem Abschnitt 3 3.1 3.2 3.3 3.4 Die Datenstruktrur Graph Kennzeichen von Graphen Darstellung von Graphen Implementation Graphendurchlauf 3 1 Anwendungen und Definition Graphen Kennzeichen Listen und Bäumen modellieren hierarchische Strukturen. Jetzt sollen netzartige Objekte modelliert werden. M. Jakob (Gymnasium Pegnitz) Bäume als spezielle Graphen 29. November 2015 41 / 71 Graphen 3 1 Kennzeichen Bewerteter Graph M. Jakob (Gymnasium Pegnitz) Bäume als spezielle Graphen 29. November 2015 42 / 71 3 Graphen 1 Kennzeichen Gerichteter Graph Bewertung Kante Knoten M. Jakob (Gymnasium Pegnitz) Bäume als spezielle Graphen 29. November 2015 43 / 71 Graphen 3 1 Kennzeichen Definition Graph Ein Graph besteht aus einer endlichen Menge von Knoten und Kanten. Jede Kante verbindet genau zwei Knoten. Die Kanten können gerichtet oder ungerichtet sein, eine Bewertung haben oder nicht. M. Jakob (Gymnasium Pegnitz) Bäume als spezielle Graphen 29. November 2015 44 / 71 3 Typische Fragestellungen Graphen 1 Kennzeichen Wie kann eine Netzstruktur modelliert werden? Wie ist es möglich, alle Knoten eines Graphen systematisch zu besuchen? Welche Wege gibt es von einem vorgegebenen Startknoten zu einem Zielknoten? Wie kann ein bestimmter Knoten im Netz gefunden werden? Ü 3.1: S.100/5,6 M. Jakob (Gymnasium Pegnitz) Bäume als spezielle Graphen 29. November 2015 45 / 71 In diesem Abschnitt 3 3.1 3.2 3.3 3.4 Die Datenstruktrur Graph Kennzeichen von Graphen Darstellung von Graphen Implementation Graphendurchlauf Graphen 3 2 Darstellung Adjazenzmatrix M. Jakob (Gymnasium Pegnitz) Bäume als spezielle Graphen 29. November 2015 47 / 71 Graphen 3 2 Darstellung Adjazenzmatrix % Da De LV LA Mi SF Se Da De LV LA 0 1258 1983 1258 0 1225 1983 1225 0 435 435 0 1532 1483 919 629 2161 Mi SF Se 1532 1483 2161 919 629 0 2660 0 1306 2660 1306 0 Leerstellen müssen mit unverwechselbaren Werten belegt werden, z.B. −1 oder ∞. M. Jakob (Gymnasium Pegnitz) Bäume als spezielle Graphen 29. November 2015 47 / 71 Graphen 3 2 Darstellung Adjazenzmatrix Adjazenzmatrix Die Adjazenzmatrix eines Graphen ist eine quadratische Matrix (Tabelle), deren Anzahl an Spalten bzw. Zeilen mit der Anzahl der Knoten des Graphen übereinstimmt. Die Einträge in den Zellen der Matrix geben wieder, ob zwischen zwei Knoten eine Kante existiert und welche Bewertung diese gegebenenfalls hat. Bemerkungen Für unbewertete Graphen reichen boolsche Werte in der Adjazenzmatrix. Für einen ungerichteten Graphen ist die Adjazenzmatrix symmetrisch. Ü 3.2: S. 108/2,3 M. Jakob (Gymnasium Pegnitz) Bäume als spezielle Graphen 29. November 2015 48 / 71 Graphen 3 2 Darstellung Klassendiagramm M. Jakob (Gymnasium Pegnitz) Bäume als spezielle Graphen 29. November 2015 49 / 71 3 2 Klassenkarten eines Graphen Graphen M. Jakob (Gymnasium Pegnitz) Bäume als spezielle Graphen Darstellung 29. November 2015 50 / 71 In diesem Abschnitt 3 3.1 3.2 3.3 3.4 Die Datenstruktrur Graph Kennzeichen von Graphen Darstellung von Graphen Implementation Graphendurchlauf Graphen 3 3 Implementation Fahrradwegeplan M. Jakob (Gymnasium Pegnitz) Bäume als spezielle Graphen 29. November 2015 52 / 71 3 3 Radwegeplan—Knoten indizieren Graphen Implementation Tabelle : Knotenindizierung Altdorf Fischbach Weiler Ziegelstein Burg Neustadt Rain M. Jakob (Gymnasium Pegnitz) Bäume als spezielle Graphen 0 1 2 3 4 5 6 29. November 2015 53 / 71 Implementation 3 3 Radwegeplan — Adjazenzmatrix erstellen M. Jakob (Gymnasium Pegnitz) Fischbach Weiler Ziegelstein Burg Neustadt Rain Altdorf Fischbach Weiler Ziegelstein Burg Neustadt Rain % 0 1 2 3 4 5 6 Altdorf Graphen 0 0 10 -1 -1 -1 -1 -1 1 20 0 25 15 15 -1 -1 2 15 10 0 -1 -1 -1 -1 3 -1 -1 5 0 5 -1 -1 4 -1 -1 -1 20 0 -1 25 5 -1 -1 -1 15 -1 0 -1 6 -1 -1 -1 -1 -1 20 0 Bäume als spezielle Graphen 29. November 2015 54 / 71 Implementation 3 3 Radwegplan — lästige Basisimplementationen Datenelement—Attribute Graphen 1 2 3 4 5 class DATENELEMENT { private String ortsname ; private int uebernachtungsplaetze ; private String sehenswuerdigkeiten ; M. Jakob (Gymnasium Pegnitz) Bäume als spezielle Graphen 29. November 2015 55 / 71 Implementation 3 3 Radwegplan — lästige Basisimplementationen Datenelement—Konstruktor Graphen 1 2 3 4 5 6 DATENELEMENT ( String ortsname , int uebernachtungsplaetze , String sehenswuerdigkeiten ) { this. ortsname = ortsname ; this. uebernachtungsplaetze = uebernachtungsplaetze ; this. sehenswuerdigkeiten = sehenswuerdigkeiten ; } M. Jakob (Gymnasium Pegnitz) Bäume als spezielle Graphen 29. November 2015 56 / 71 Implementation 3 3 Radwegplan — lästige Basisimplementationen Datenelement—Ausgabe Graphen 1 2 3 4 5 void ausgeben () { System .out. println ( " Im Ort " + ortsname + " gibt es " + uebernachtungsplaetze + " Betten . "); System .out. println ( " Sie können hier folgendes erleben : " + sehenswuerdigkeiten ); } M. Jakob (Gymnasium Pegnitz) Bäume als spezielle Graphen 29. November 2015 57 / 71 Implementation 3 3 Radwegplan — lästige Basisimplementationen Knoten Graphen 1 2 3 class KNOTEN { private DATENELEMENT daten ; 4 KNOTEN ( DATENELEMENT inhalt ) { daten = inhalt ; } 5 6 7 8 9 DATENELEMENT datenLiefern () { return daten; } 10 11 12 13 14 } M. Jakob (Gymnasium Pegnitz) Bäume als spezielle Graphen 29. November 2015 58 / 71 Implementation 3 3 Radwegplan — Klasse Graph.Attribute Graphen 1 2 3 4 5 class GRAPH { private KNOTEN [] knotenfeld ; private int [][] adjazenzmatrix ; private int anzahlKnoten = 0; M. Jakob (Gymnasium Pegnitz) Bäume als spezielle Graphen 29. November 2015 59 / 71 Implementation 3 3 Radwegplan — Klasse Graph.Konstruktor Graphen 1 2 3 4 GRAPH(int maxAnzahlKnoten ) { knotenfeld = new KNOTEN [ maxAnzahlKnoten ]; adjazenzmatrix = new int[ maxAnzahlKnoten ][ maxAnzahlKnoten ]; M. Jakob (Gymnasium Pegnitz) Bäume als spezielle Graphen 29. November 2015 60 / 71 Implementation 3 3 Radwegplan — Graph.Konstruktor.Adjazenzmatrix Graphen 1 2 3 4 5 6 7 8 9 10 11 12 13 14 for(int i=0; i < maxAnzahlKnoten ; i=i+1) { for(int j=0; j < maxAnzahlKnoten ; j=j +1) { if(i == j) { adjazenzmatrix [i][j] = 0; } else { adjazenzmatrix [i][j] = -1; } } } M. Jakob (Gymnasium Pegnitz) Bäume als spezielle Graphen 29. November 2015 61 / 71 Graphen 3 3 Implementation Übung åÜ 3.3: Graphenimplementation M. Jakob (Gymnasium Pegnitz) Bäume als spezielle Graphen 29. November 2015 62 / 71 In diesem Abschnitt 3 3.1 3.2 3.3 3.4 Die Datenstruktrur Graph Kennzeichen von Graphen Darstellung von Graphen Implementation Graphendurchlauf 3 Typische Fragestellungen Graphen 4 Durchläufe Gesucht ist ein Weg von A nach B der möglichst kurz ist, möglichst wenige Zwischenknoten enthält, jeden anderen Knoten mindestens einmal besucht. M. Jakob (Gymnasium Pegnitz) Bäume als spezielle Graphen 29. November 2015 64 / 71 3 Breiten- und Tiefensuche Graphen 4 Durchläufe åLernprogramm Pirsma S. 1-6 åÜ 3.4: Graphendurchläufe M. Jakob (Gymnasium Pegnitz) Bäume als spezielle Graphen 29. November 2015 65 / 71 3 4 Suchalgorithmen implementieren (MathePrisma-Alogrithmus) Graphen Durchläufe Abhängig davon, ob die Liste D als FIFO- oder FILO-Speicher abgearbeitet wird erhält man einen Tiefen- bzw. Breitensuchalgorithmus. M. Jakob (Gymnasium Pegnitz) Bäume als spezielle Graphen 29. November 2015 66 / 71 3 4 Tiefensuche rekursiv implementieren Graphen M. Jakob (Gymnasium Pegnitz) Bäume als spezielle Graphen Durchläufe 29. November 2015 67 / 71 Durchläufe 3 4 Methode tiefensucheInit — Pseudocode Graphen 1 2 3 4 5 6 7 Methode tiefensucheStarten ( startKnotenNr ) wiederhole für alle Knoten setze Markierung des Knotens auf den Wert für unbesucht endeWiederhole wenn startKnotenNr >=0 und startKnotenNr < anzahlKnoten dann tiefensucheDurchfuehren ( startKnotenNr ) endeWenn M. Jakob (Gymnasium Pegnitz) Bäume als spezielle Graphen 29. November 2015 68 / 71 Durchläufe 3 4 Methode tiefensuche — Hauptteil(Pseudocode) Graphen 1 2 3 4 5 6 7 8 9 Methode tiefensucheDurchfuehren ( knotenNr ) Markiere den Knoten mit der Nummer knotenNr als besucht // Gib evtl. Informationen über den Knoten aus // Tiefensuche für den nächsten direkt erreichbaren unbesuchten Knoten aufrufen wiederhole für j = 0 bis j < anzahlKnoten wenn Knoten mit der Nummer j direkt erreichbarer und nicht besucht ist dann tiefensucheDurchfuehren (j) // rekursiver Aufruf endeWenn endeWiederhole M. Jakob (Gymnasium Pegnitz) Bäume als spezielle Graphen 29. November 2015 69 / 71 Graphen 3 4 Durchläufe Übung åÜ 3.5: Tiefensuche implementieren M. Jakob (Gymnasium Pegnitz) Bäume als spezielle Graphen 29. November 2015 70 / 71