Bin - PowerPoint PPT Presentation

1 / 62
About This Presentation
Title:

Bin

Description:

Title: Objektorientierte Programmierung Last modified by: Klaus Becker Document presentation format: Bildschirmpr sentation Other titles: Arial Tahoma Wingdings ... – PowerPoint PPT presentation

Number of Views:42
Avg rating:3.0/5.0
Slides: 63
Provided by: informati70
Category:
Tags: bin

less

Transcript and Presenter's Notes

Title: Bin


1
Binärbäume
  • Klaus Becker
  • 2003

2
Datenstrukturierung mit Bäumen
Löwe 12
Esel 4
Pfau 27
Wolf 31
Jaguar 8
Panther 4
Esel 9
Affe 24
Kamel 45
Giraffe 6
Zebra 10
Tiger 6
Gorilla 23
3
Teil 1
Termbäume
4
Termbaum
Ein Termbaum dient dazu, einen Rechenterm wie z.
B. (x3)(2x-5) strukturell zu repräsentieren.
Ziel Entwicklung eines Programms zur
Verarbeitung von Term(bäum)en.
5
Binärbaum
Wurzel



x
3
5

linker Teilbaum
2
x
rechter Teilbaum
Ein Binärbaum ist leer oder besteht aus einer
Wurzel und zwei Binärbäumen, dem linken und
rechten Teilbaum.
6
Objektorientierte Modellierung
inhalt
rechts
links
inhalt
inhalt
rechts
links
rechts
links
inhalt x
inhalt 3
inhalt
inhalt 5
rechts
links
rechts
links
rechts
links
rechts
links
inhalt 2
inhalt x
rechts
links
rechts
links
7
Objektorientierte Modellierung



x
3
5

8
OOA-Modell
0..1
0..2
Knoten
Baum
inhalt ... links Knoten rechts Knoten
wurzel Knoten
kennt
kennt
...
...
9
OOD-Modell
0..2
0..1
Knoten
Baum
kennt
- inhalt string - links Knoten - rechts Knoten
- wurzel Knoten
kennt
create(w Knoten) getWurzel Knoten
istLeer boolean ausgebenInOrder(k Knoten)
string ausgebenPreOrder(k Knoten) string
ausgebenPostOrder(k Knoten) string
create(i string l,r Knoten) getInhalt
string getLinks Knoten getRechts Knoten
ist
TermBaum
auswerten(k Knoten w integer)
integer
10
Implementierung
constructor TKnoten.create(inhalt string links,
rechts TKnoten)beginself.inhalt inhalt
self.links links self.rechts
rechtsend function TKnoten.getInhalt
stringbeginresult inhaltend function
TKnoten.getLinks TKnotenbeginresult
linksend function TKnoten.getRechts
TKnotenbeginresult rechtsend
11
Implementierung
constructor TBaum.create(w TKnoten)beginwurzel
wend function TBaum.istLeer
booleanbeginresult (wurzel
nil)end function TBaum.getWurzel
TKnotenbeginresult wurzelend procedure
TBaum.setWurzel(k TKnoten)beginwurzel
kend
12
Erzeugung des Termbaums
Aufgabe Ein Binärbaum (wie der hier
dargestellte) soll mit Hilfe der bisher
implementierten Baumoperationen erzeugt werden.
13
Erzeugung des Termbaums Version 1
k1 TKnoten.create('2', nil, nil)k2
TKnoten.create('x', nil, nil)k3
TKnoten.create('', k1, k2)k4
TKnoten.create('5', nil, nil)k5
TKnoten.create('-', k3, k4)k6
TKnoten.create('x', nil, nil)k7
TKnoten.create('3', nil, nil)k8
TKnoten.create('', k6, k7)k9
TKnoten.create('', k8, k5)baum
TTermBaum.create(k9)
14
Erzeugung des Termbaums Version 2
baum TTermBaum.create(
TKnoten.create('', TKnoten.create('',
TKnoten.create('x', nil, nil),
TKnoten.create('3', nil, nil)),
TKnoten.create('-', TKnoten.create('',
TKnoten.create('2', nil, nil),
TKnoten.create('x', nil, nil)),
TKnoten.create('5', nil, nil))))
15
Traversierung eines Binärbaums
Aufgabe Ein Binärbaum (wie der hier
dargestellte) soll nach einer vorgegeben Regel
durchlaufen und verarbeitet (z. B. ausgegeben)
werden.



x
3
5

2
x
16
Preorder-Traversierung eines Binärbaums



x
3
5

2
x
Verarbeite die WurzelTraversiere den linken
Teilbaum in PreorderTraversiere den rechten
Teilbaum in Preorder
x 3 - 2 x 5
17
Inorder-Traversierung eines Binärbaums



x
3
5

2
x
Traversiere den linken Teilbaum in
InorderVerarbeite die WurzelTraversiere den
rechten Teilbaum in Inorder
x 3 2 x - 5
18
Postorder-Traversierung eines Binärbaums



x
3
5

2
x
Traversiere den linken Teilbaum in
PostorderTraversiere den rechten Teilbaum in
PostorderVerarbeite die Wurzel
x 3 2 x 5 -
19
Preorder-Ausgabe
Deklaration
function TBaum.ausgebenPreOrder(kTKnoten)String
beginif (k nil) then result '' else
result k.getInhalt
ausgebenPreOrder(k.getLinks)
ausgebenPreOrder(k.getRechts)end
Aufruf
baum.ausgebenPreOrder(baum.getWurzel)
20
Aufgabe
Im Ordner Termbaum1 finden Sie ein
vorstrukturiertes Programm zur Erzeugung und
Verarbeitung von Binärbäumen / Termbäumen.
Ergänzen Sie die fehlenden Teile (Erzeugung
eines Binärbaums und Ausgabe in Preorder,
Inorder, Postorder). Zur Kontrolle Termbaum2
21
Auswertung eines Termbaums
Aufgabe Ein Termbaum (wie der hier dargestellte)
soll bzgl. eines vorgegeben x-Wertes ausgewertet
werden x-Wert einsetzen und Gesamtwert berechnen
x 3 Auswertung liefert 6
22
Rekursive Problemreduktion
baum.auswerten(k,w)
if k.getInhalt '' then result



x
3
5

2
x
baum.auswerten(k.links,w)
baum.auswerten(k.rechts,w)

23
Rekursionsanfang
baum.auswerten(k,w)
if ((k.getRechts nil) and (k.getLinks nil))
then
x
3
else result StrToInt(k.getInhalt)
if k.getInhalt 'x' then result w
24
Aufgabe
Implementieren Sie die Operation auswerten und
ergänzen Sie das Testprogramm. Zur Kontrolle
Termbaum2
25
Teil 2
Suchbäume
26
Textindex
Die Geschichte des Kölner ZoosGründung des
Zoo und die ersten JahreAuf Betreiben von Dr.
Caspar Garthe, dem ersten Oberlehrer an der
Höheren Bürgerschule am Quatermarkt zu Köln,
schlossen sich wohlhabende und einflußreiche,
zugleich tierliebende und zoobegeisterte Bürger
der Stadt zu einer Aktiengesellschaft zusammen,
um 1860 in Köln einen Zoologischen Garten zu
gründen.In kaum einem anderen Zoo läßt sich die
Entwicklung der Zoologischen Gärten anhand noch
erhaltener Tierhäuser und -anlagen aus den
verschiedenen Epochen so gut nachvollziehen wie
im Kölner Zoo. Das älteste Monument ist das 1863
unter Leitung von Dr. Heinrich Bodinus
(1859-1869) erbaute Elefantenhaus in
maurischem Stil. ...
Affeninsel 33 Blockhaus-Stil 20 Bodinus
16 Elefantenhaus 79 Elefantenhaus
17 Entwicklung 11 Epochen 14 Funck 19 Garthe
4 Geschichte 1 Gründung 2 Hagenbeck 28...
Ziel Es soll ein Programm entwickelt werden, mit
dessen Hilfe ein Textindex erstellt und zum
Nachschlagen benutzt werden kann. Im
vorliegenden Fall soll der Textindex die
Zeilen-nummern der markierten Begriffe enthalten.
27
Prototyp
28
Zur Wahl der Datenstruktur
Esel 9
Affe 24
Giraffe 6
Esel 4
Jaguar 8
Gorilla 23
Liste ? Lineare Suche
Löwe 12
Esel 4
Pfau 27
Wolf 31
Jaguar 8
Panther 4
Esel 9
Affe 24
Kamel 45
Giraffe 6
Zebra 10
Tiger 6
Gorilla 23
Binärbaum ? Binäre Suche
29
Suchbaum
Löwe 12
Esel 4
Pfau 27
Wolf 31
Jaguar 8
Panther 4
Esel 9
Affe 24
Kamel 45
Giraffe 6
Zebra 10
Tiger 6
Gorilla 23
alle ? Wurzel
alle gt Wurzel
30
Suchbaum
Löwe 12
Esel 4
Pfau 27
Wolf 31
Jaguar 8
Panther 4
Esel 9
Affe 24
Kamel 45
Giraffe 6
Zebra 10
Tiger 6
Gorilla 23
alle ? Wurzel
alle gt Wurzel
31
Einfügen Problemspezifikation
Ausgangszustand
Fasan 13
Löwe 12
Esel 4
Pfau 27
Wolf 31
Jaguar 8
Panther 4
Esel 9
Affe 24
Kamel 45
Giraffe 6
Zebra 10
Tiger 6
Zielzustand
Gorilla 23
Fasan 13
32
Einfügen Lösungsstrategie
Situation aktueller Wurzelknoten
existiertneuer Begriff ? aktueller
Begrifflinker Teilbaum nicht leer
Fasan 13
neu
Löwe 12
aktuell
Esel 4
Pfau 27
Wolf 31
Jaguar 8
Panther 4
Esel 9
Affe 24
Kamel 45
Giraffe 6
Zebra 10
Tiger 6
Gorilla 23
33
Einfügen Lösungsstrategie
Problemreduktion Einfügen im linken Teilbaum
Fasan 13
neu
Löwe 12
aktuell
Esel 4
Pfau 27
Wolf 31
Jaguar 8
Panther 4
Esel 9
Affe 24
Kamel 45
Giraffe 6
Zebra 10
Tiger 6
Gorilla 23
34
Einfügen Lösungsstrategie
Fasan 13
neu
Situation aktueller Wurzelknoten
existiertneuer Begriff gt aktueller
Begriffrechter Teilbaum nicht leer
Löwe 12
Esel 4
Pfau 27
aktuell
Wolf 31
Jaguar 8
Panther 4
Esel 9
Affe 24
Kamel 45
Giraffe 6
Zebra 10
Tiger 6
Gorilla 23
35
Einfügen Lösungsstrategie
Fasan 13
neu
Problemreduktion Einfügen im rechten Teilbaum
Löwe 12
Pfau 27
Esel 4
aktuell
Wolf 31
Jaguar 8
Panther 4
Esel 9
Affe 24
Kamel 45
Giraffe 6
Zebra 10
Tiger 6
Gorilla 23
36
Einfügen Lösungsstrategie
Fasan 13
neu
Situation aktueller Wurzelknoten
existiertneuer Begriff ? aktueller
Begrifflinker Teilbaum nicht leer
Löwe 12
Esel 4
Pfau 27
Wolf 31
Jaguar 8
Panther 4
Esel 9
aktuell
Affe 24
Kamel 45
Giraffe 6
Zebra 10
Tiger 6
Gorilla 23
37
Einfügen Lösungsstrategie
Fasan 13
neu
Problemreduktion Einfügen im linken Teilbaum
Löwe 12
Esel 4
Pfau 27
Wolf 31
Panther 4
Esel 9
Jaguar 8
aktuell
Affe 24
Kamel 45
Giraffe 6
Zebra 10
Tiger 6
Gorilla 23
38
Einfügen Lösungsstrategie
Fasan 13
neu
Situation aktueller Wurzelknoten
existiertneuer Begriff ? aktueller
Begrifflinker Teilbaum ist leer
Löwe 12
Esel 4
Pfau 27
Wolf 31
Jaguar 8
Panther 4
Esel 9
Affe 24
Kamel 45
Giraffe 6
Zebra 10
Tiger 6
aktuell
Gorilla 23
39
Einfügen Lösungsstrategie
Fasan 13
neu
Problemlösung linker Nachfolger ? neuer Knoten
mit neuem Begriff
Löwe 12
Esel 4
Pfau 27
Wolf 31
Jaguar 8
Panther 4
Esel 9
Affe 24
Kamel 45
Giraffe 6
Zebra 10
Tiger 6
aktuell
Gorilla 23
Fasan 13
40
Einfügen Lösungsstrategie
Sonderfall aktueller Wurzelknoten existiert
nicht
Fasan 13
neu
aktuell
Fasan 13
neu
Problemlösung Wurzel ? neuer Knoten mit neuem
Begriff
aktuell
Fasan 13
41
Einfügen Algorithmus
42
Suchen Problemspezifikation
Ausgangszustand
Esel
Suchbegriff
Zielzustand
Suchergebnis Esel 4Esel 9
Löwe 12
Esel 4
Pfau 27
Wolf 31
Jaguar 8
Panther 4
Esel 9
Affe 24
Kamel 45
Giraffe 6
Zebra 10
Tiger 6
Gorilla 23
43
Suchen Problemspezifikation
Ausgangszustand
Esel
Suchbegriff
Suchergebnis Esel 4Esel 9
IdeePreorder-Durchlauf mit Aufsammeln aller
Treffer
Löwe 12
Esel 4
Pfau 27
Wolf 31
Jaguar 8
Panther 4
Esel 9
Affe 24
Kamel 45
Giraffe 6
Zebra 10
Tiger 6
Gorilla 23
44
Suchen Lösungsstrategie
Situation aktueller Wurzelknoten
existiertSuchbegriff ? aktueller Begriff
Esel
Suchbegriff
Suchergebnis
Löwe 12
aktuell
Esel 4
Pfau 27
Wolf 31
Jaguar 8
Panther 4
Esel 9
Affe 24
Kamel 45
Giraffe 6
Zebra 10
Tiger 6
Gorilla 23
45
Suchen Lösungsstrategie
Problemreduktion if Suchbegriff aktueller
Begriff then Daten aufnehmenlinken Teilbaum
durchsuchen
Esel
Suchbegriff
Suchergebnis
Löwe 12
aktuell
Esel 4
Pfau 27
Wolf 31
Jaguar 8
Panther 4
Esel 9
Affe 24
Kamel 45
Giraffe 6
Zebra 10
Tiger 6
Gorilla 23
46
Suchen Lösungsstrategie
Esel
Suchbegriff
Situation aktueller Wurzelknoten
existiertSuchbegriff ? aktueller Begriff
Suchergebnis
Löwe 12
Esel 4
Pfau 27
aktuell
Wolf 31
Jaguar 8
Panther 4
Esel 9
Affe 24
Kamel 45
Giraffe 6
Zebra 10
Tiger 6
Gorilla 23
47
Suchen Lösungsstrategie
Esel
Suchbegriff
Problemreduktion if Suchbegriff aktueller
Begriff then Daten aufnehmenlinken Teilbaum
durchsuchen
Suchergebnis Esel 4
Löwe 12
Esel 4
Pfau 27
aktuell
Wolf 31
Jaguar 8
Panther 4
Esel 9
Affe 24
Kamel 45
Giraffe 6
Zebra 10
Tiger 6
Gorilla 23
48
Suchen Lösungsstrategie
Esel
Suchbegriff
Situation aktueller Wurzelknoten
existiertSuchbegriff ? aktueller Begriff
Suchergebnis Esel 4
Löwe 12
Esel 4
Pfau 27
Wolf 31
Jaguar 8
Panther 4
Esel 9
aktuell
Affe 24
Kamel 45
Giraffe 6
Zebra 10
Tiger 6
Gorilla 23
49
Suchen Lösungsstrategie
Esel
Suchbegriff
Problemreduktion if Suchbegriff aktueller
Begriff then Daten aufnehmenlinken Teilbaum
durchsuchen
Suchergebnis Esel 4Esel 9
Löwe 12
Esel 4
Pfau 27
Wolf 31
Jaguar 8
Panther 4
Esel 9
aktuell
Affe 24
Kamel 45
Giraffe 6
Zebra 10
Tiger 6
Gorilla 23
50
Suchen Lösungsstrategie
Esel
Suchbegriff
Situation aktueller Wurzelknoten
existiertSuchbegriff gt aktueller Begriff
Suchergebnis Esel 4Esel 9
Löwe 12
Esel 4
Pfau 27
Wolf 31
Jaguar 8
Panther 4
Esel 9
Affe 24
Kamel 45
Giraffe 6
Zebra 10
Tiger 6
aktuell
Gorilla 23
51
Suchen Lösungsstrategie
Esel
Suchbegriff
Problemreduktion rechten Teilbaum durchsuchen
Suchergebnis Esel 4Esel 9
Löwe 12
Esel 4
Pfau 27
Wolf 31
Jaguar 8
Panther 4
Esel 9
Affe 24
Kamel 45
Giraffe 6
Zebra 10
Tiger 6
aktuell
Gorilla 23
52
Suchen Lösungsstrategie
Esel
Suchbegriff
Situation aktueller Wurzelknoten existiert nicht
Suchergebnis Esel 4Esel 9
Löwe 12
Esel 4
Pfau 27
Wolf 31
Jaguar 8
Panther 4
Esel 9
Affe 24
Kamel 45
Giraffe 6
Zebra 10
Tiger 6
Gorilla 23
aktuell
53
Suchen Lösungsstrategie
Esel
Suchbegriff
Problemlösung Mache nichts
Suchergebnis Esel 4Esel 9
Löwe 12
Esel 4
Pfau 27
Wolf 31
Jaguar 8
Panther 4
Esel 9
Affe 24
Kamel 45
Giraffe 6
Zebra 10
Tiger 6
Gorilla 23
aktuell
54
Suchen Algorithmus
55
Objektorientierte Modellierung
Löwe 12
Esel 4
Pfau 27
Wolf 31
Jaguar 8
Panther 4
Esel 9
0..1
0..2
Knoten
Baum
- begriff string - zeile integer - links
Knoten - rechts Knoten
- wurzel Knoten
kennt
kennt
create(w Knoten) getWurzel Knoten
istLeer boolean initialisieren einfuegen(b
string z integer aktuell TKnoten) suchen(b
string k TKnoten var s TStringList)
ausgeben(k TKnoten var s TStringList)
create(b string z int. l,r
Knoten) getBegriff string getZeile
integer getLinks Knoten getRechts Knoten
56
Aufgabe
Im Ordner Suchbaum1 finden Sie ein
vorstrukturiertes Programm zur Erzeugung und
Verarbeitung von Suchbäumen. Implementieren Sie
die Operation einfuegen, suchen und
ausgeben. Zur Kontrolle Suchbaum2
57
Teil 3
Zusammenfassung Dynamische Datenstrukturen
58
Datenstrukturierung
Ein Grundproblem der Programmierung Daten
möglichst strukturgetreu zu repräsentieren
59
Datentypen / Datenstrukturen
Ein Datentyp legt einen Wertebereich und die
Grundoperationen, die auf die Elemente des
Wertebereichs angewandt werden können, fest.
Beispiele (für elementare Datentypen)gt boolean
(Wahrheitswert)gt char (Zeichen)gt
integer (ganze Zahl)gt real (Dezimalzahl)
Eine Datenstruktur legt den Aufbau von komplexen
Wertebereichen aus einfacheren Wertebereichen
fest.
Beispiele (für elementare Datenstrukturen)gt
Reihung / Feld gt Verbund
60
Dynamische Datenstrukturen
Dynamische Datenstrukturen werden benutzt, wenn
sich die Struktur der Dateneinheiten zur Laufzeit
dynamisch verändern kann.
61
Erzeugung dynamischer Datenstrukturen
Erzeugung mit Hilfe von Referenzattributen
(Pointer)
Erzeugung mit Hilfe vordefinierter KLassen
TList TStringList TStack ...
62
Literaturhinweise
Helmut Balzert Lehrbuch Grundlagen der
Informatik. Spektrum Ak. Verlag 1999. H.-P. Gumm
u. M. Sommer Einführung in die Informatik.
Oldenbourg Verlag 2002. ...
Write a Comment
User Comments (0)
About PowerShow.com