Bäume als spezielle Graphen

Werbung
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
Herunterladen