EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I
-
Upload
leo-delgado -
Category
Documents
-
view
28 -
download
2
description
Transcript of EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I
![Page 1: EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I](https://reader035.fdokument.com/reader035/viewer/2022062422/5681352f550346895d9c96fa/html5/thumbnails/1.jpg)
EINI-IEINI-IEinführung in die Informatik Einführung in die Informatik für Naturwissenschaftler und für Naturwissenschaftler und
Ingenieure IIngenieure I
Vorlesung 2 SWS WS ‘99/00
Gisbert Dittrich
FBI Unido
![Page 2: EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I](https://reader035.fdokument.com/reader035/viewer/2022062422/5681352f550346895d9c96fa/html5/thumbnails/2.jpg)
2
Kap 8: Binäre Bäume + Suchen Vorl “EINI-I"Prof. Dr. G. Dittrich
20.1.2000
Gliederung Kapitel 8Gliederung Kapitel 8
• Motivation – Suchen in einfach verketteter Liste
+ deren Nachteile
• Binärer Suchbaum– Grobideen: Suchen, Suchstruktur– Idee Baum– Binärer Baum, Knotenmarkierung, Implementierung
knotenmarkierter bin. Bäume, Suchbaum – Suchen– Einfügen– Analyse
![Page 3: EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I](https://reader035.fdokument.com/reader035/viewer/2022062422/5681352f550346895d9c96fa/html5/thumbnails/3.jpg)
3
Kap 8: Binäre Bäume + Suchen Vorl “EINI-I"Prof. Dr. G. Dittrich
20.1.2000
Suchen in einer ListeSuchen in einer Liste
bool Suchen (int i, Liste * L) { if (L == NULL) return false; else return
(L->Element == i? true: Suchen(i, L->weiter));}
![Page 4: EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I](https://reader035.fdokument.com/reader035/viewer/2022062422/5681352f550346895d9c96fa/html5/thumbnails/4.jpg)
4
Kap 8: Binäre Bäume + Suchen Vorl “EINI-I"Prof. Dr. G. Dittrich
20.1.2000
Suchen in einer ListeSuchen in einer Liste
• Ist L die leere Liste: i kann nicht in L sein.
• Ist L nicht leer– entweder i == L->Element
– oder i wird in L->weiter gesucht
![Page 5: EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I](https://reader035.fdokument.com/reader035/viewer/2022062422/5681352f550346895d9c96fa/html5/thumbnails/5.jpg)
5
Kap 8: Binäre Bäume + Suchen Vorl “EINI-I"Prof. Dr. G. Dittrich
20.1.2000
Suchen in einer ListeSuchen in einer Liste
• Problem: langsame Suche– jedes Element muß bei einer erfolglosen Suche
betrachtet werden
– also: Suchzeit proportional zur Anzahl der Elemente in der Liste (lineare Suchzeit)
![Page 6: EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I](https://reader035.fdokument.com/reader035/viewer/2022062422/5681352f550346895d9c96fa/html5/thumbnails/6.jpg)
6
Kap 8: Binäre Bäume + Suchen Vorl “EINI-I"Prof. Dr. G. Dittrich
20.1.2000
Suchen in einer ListeSuchen in einer Liste
• Beispiel– erfolglose Suche bei 10 Elementen braucht 10
Vergleiche, also (pro Vergleich 10 sec.) 10 sec = 2,7 h
– Bei geschickter Anordnung der Daten geht´s mit 35 Vergleichen, also in 3.5.10 sec.
![Page 7: EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I](https://reader035.fdokument.com/reader035/viewer/2022062422/5681352f550346895d9c96fa/html5/thumbnails/7.jpg)
7
Kap 8: Binäre Bäume + Suchen Vorl “EINI-I"Prof. Dr. G. Dittrich
20.1.2000
Suche „in einer Hälfte“Suche „in einer Hälfte“
• Grobidee: – Suchen in geordneter "Liste" durch Überprüfen des
"mittleren" Elementes + Fortsetzung in einer Hälfte
– Beispiel:
1 2 3 4 5 6 7 8 9
2 4 6 7 8 17 19 36 40
k: 19 k:5OK : nicht vorhanden
![Page 8: EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I](https://reader035.fdokument.com/reader035/viewer/2022062422/5681352f550346895d9c96fa/html5/thumbnails/8.jpg)
8
Kap 8: Binäre Bäume + Suchen Vorl “EINI-I"Prof. Dr. G. Dittrich
20.1.2000
Suchstruktur
Aufgabe: Trage die Zahlen 17, 4, 36, 2, 8, 19, 40, 6, 7 in eine baumförmige Struktur so ein:
17
4 36
2 8
6
7
19 40
![Page 9: EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I](https://reader035.fdokument.com/reader035/viewer/2022062422/5681352f550346895d9c96fa/html5/thumbnails/9.jpg)
9
Kap 8: Binäre Bäume + Suchen Vorl “EINI-I"Prof. Dr. G. Dittrich
20.1.2000
Ziel: Binärer SuchbaumZiel: Binärer Suchbaum
• Zu diesem Ziel nacheinander definieren:– (Binärer) Baum– Knotenmarkierter binärer Baum– Binärer Suchbaum
![Page 10: EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I](https://reader035.fdokument.com/reader035/viewer/2022062422/5681352f550346895d9c96fa/html5/thumbnails/10.jpg)
10
Kap 8: Binäre Bäume + Suchen Vorl “EINI-I"Prof. Dr. G. Dittrich
20.1.2000
Idee von BaumIdee von Baum
KünstlerischAbstrahiert 1Abstrahiert 2Die Informatiksicht:
![Page 11: EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I](https://reader035.fdokument.com/reader035/viewer/2022062422/5681352f550346895d9c96fa/html5/thumbnails/11.jpg)
11
Kap 8: Binäre Bäume + Suchen Vorl “EINI-I"Prof. Dr. G. Dittrich
20.1.2000
Binärer BaumBinärer Baum
Definition: (Binärer Baum)1.) Der "leere" Baum ist ein binärer Baum mit der
Knotenmenge .
2.) Seien Bi binäre Bäume mit den Knotenmengen Ki ,
i = 1,2. Dann ist auch B = (w, B1, B2) ein binärer Baum mit der Knotenmenge
K = {w} –K1 – K2.
(– bezeichnet disjunkte Vereinigung.)
3.) Jeder binäre Baum B läßt sich durch endlich häufige Anwendung von 1.) oder 2.) erhalten.
![Page 12: EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I](https://reader035.fdokument.com/reader035/viewer/2022062422/5681352f550346895d9c96fa/html5/thumbnails/12.jpg)
12
Kap 8: Binäre Bäume + Suchen Vorl “EINI-I"Prof. Dr. G. Dittrich
20.1.2000
Binärer BaumBinärer Baum
• Sprech-/Darstellungsweisen (im Falle 2.)):Sei B = (w, B1, B2) binärer Baum
w heißt Wurzel, B1 linker und B2 rechter Unterbaum.
B1 B2
Wurzel
linker Unterbaum
rechter Unterbaum
w
![Page 13: EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I](https://reader035.fdokument.com/reader035/viewer/2022062422/5681352f550346895d9c96fa/html5/thumbnails/13.jpg)
13
Kap 8: Binäre Bäume + Suchen Vorl “EINI-I"Prof. Dr. G. Dittrich
20.1.2000
Binärer BaumBinärer Baum
• Darstellung eines Beispiels nach Definition: B1 = (k1, , (k2, (k3, , ), )).
k1
k2
k3
![Page 14: EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I](https://reader035.fdokument.com/reader035/viewer/2022062422/5681352f550346895d9c96fa/html5/thumbnails/14.jpg)
14
Kap 8: Binäre Bäume + Suchen Vorl “EINI-I"Prof. Dr. G. Dittrich
20.1.2000
Terminologie Terminologie Binäre BäumeBinäre Bäume
Wurzel
innerer Knoten
Blatt
![Page 15: EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I](https://reader035.fdokument.com/reader035/viewer/2022062422/5681352f550346895d9c96fa/html5/thumbnails/15.jpg)
15
Kap 8: Binäre Bäume + Suchen Vorl “EINI-I"Prof. Dr. G. Dittrich
20.1.2000
Knotenmarkierter binärer BaumKnotenmarkierter binärer Baum
Definition: Sei M eine Menge. (B, km) ist ein knotenmarkierter binärer Baum
(mit Markierungen aus M)
:¤1.) B ist binärer Baum (mit Knotenmenge K = K(B))
2.) km: K --> M Abbildung.
(Markierung/Beschriftung der Knoten k K mit Elementen m M)
![Page 16: EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I](https://reader035.fdokument.com/reader035/viewer/2022062422/5681352f550346895d9c96fa/html5/thumbnails/16.jpg)
16
Kap 8: Binäre Bäume + Suchen Vorl “EINI-I"Prof. Dr. G. Dittrich
20.1.2000
Knotenmarkierter binärer Baum binärer Baum
Beispiel: (M := $, $ := Menge der ganzen Zahlen)
damit existiert auf M eine Ordnung ! Damit: "Übliche" Darstellung der Knotenbeschriftung km durch
"Anschreiben" der Beschriftung an/in die Knoten.
k1
k2
k3
24
18
16
![Page 17: EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I](https://reader035.fdokument.com/reader035/viewer/2022062422/5681352f550346895d9c96fa/html5/thumbnails/17.jpg)
17
Kap 8: Binäre Bäume + Suchen Vorl “EINI-I"Prof. Dr. G. Dittrich
20.1.2000
Datentyp Datentyp BinBaumBinBaum
• Implementierung knotenmarkierter binärer Bäume durch eine struct mit Zeigern:– Inhalt, (hier z. B.) ganzzahlig (Später allgemeiner möglich)
– Zeiger jeweils auf den linken und den rechten Unterbaum
struct BinBaum { int Element; BinBaum *Lsohn, *Rsohn; }
![Page 18: EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I](https://reader035.fdokument.com/reader035/viewer/2022062422/5681352f550346895d9c96fa/html5/thumbnails/18.jpg)
18
Kap 8: Binäre Bäume + Suchen Vorl “EINI-I"Prof. Dr. G. Dittrich
20.1.2000
Binäre SuchbäumeBinäre Suchbäume
Definition: (B, km) ist ein binärer Suchbaum (über $)
:¤1.) (B, km) ist ein binärer, knotenmarkierter Baum.
2.) Ist w die Beschriftung der Wurzel w, so ist die Wurzelmarkierung im linken Unterbaum kleiner als w, die Wurzelmarkierung im rechten Unterbaum größer als w. (Jeweils, sofern diese vorhanden.)
3.) Ist (B, km) mit B , B = (w, B1, B2), so sind (Bi,kmi) mit kmi := km|Bi (i= 1,2) binäre Suchbäume.
![Page 19: EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I](https://reader035.fdokument.com/reader035/viewer/2022062422/5681352f550346895d9c96fa/html5/thumbnails/19.jpg)
19
Kap 8: Binäre Bäume + Suchen Vorl “EINI-I"Prof. Dr. G. Dittrich
20.1.2000
Binäre SuchbäumeBinäre Suchbäume
Beispiel:
Aufgaben im Zusammenhang mit (binären) Suchbäumen:• Suchen nach Markierungen/Elementen im
Suchbaum• Aufbau solcher Bäume• Abbau, z. B. Entfernen eines Knotens mit
Markierung• Durchlaufen aller Knoten
![Page 20: EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I](https://reader035.fdokument.com/reader035/viewer/2022062422/5681352f550346895d9c96fa/html5/thumbnails/20.jpg)
20
Kap 8: Binäre Bäume + Suchen Vorl “EINI-I"Prof. Dr. G. Dittrich
20.1.2000
Binäre Suchbäume: SuchenBinäre Suchbäume: Suchen
Gegeben: ein binärer Suchbaum (durch Zeiger B darauf),
ganze Zahl k
Problem:
Ist k in durch B bezeichneten Baum gespeichert?
Lösungsidee: Stimmt B->Element mit k überein: Antwort ja
Gilt B->Element < k: suche in B->Rsohn
Gilt B->Element > k: suche in B->Lsohn
Ist B leer, Antwort nein
![Page 21: EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I](https://reader035.fdokument.com/reader035/viewer/2022062422/5681352f550346895d9c96fa/html5/thumbnails/21.jpg)
21
Kap 8: Binäre Bäume + Suchen Vorl “EINI-I"Prof. Dr. G. Dittrich
20.1.2000
Binäre Suchbäume: SuchenBinäre Suchbäume: Suchen
17
4 36
2 8
6
7
19 40
Suche nachdem Element 5
Suche nachdem Element 19
![Page 22: EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I](https://reader035.fdokument.com/reader035/viewer/2022062422/5681352f550346895d9c96fa/html5/thumbnails/22.jpg)
22
Kap 8: Binäre Bäume + Suchen Vorl “EINI-I"Prof. Dr. G. Dittrich
20.1.2000
Binäre Suchbäume: SuchenBinäre Suchbäume: Suchen
bool Suche (BinBaum * B, int k) {if (B == NULL) return false;else {
if (B->Element == k) return true;else if (B->Element < k)
return Suche(B->Rsohn, k);Suche(B->Rsohn, k);else if (B->Element > k)
return Suche(B->Lsohn, k);Suche(B->Lsohn, k);}
}
![Page 23: EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I](https://reader035.fdokument.com/reader035/viewer/2022062422/5681352f550346895d9c96fa/html5/thumbnails/23.jpg)
23
Kap 8: Binäre Bäume + Suchen Vorl “EINI-I"Prof. Dr. G. Dittrich
20.1.2000
Binäre Suchbäume: EinfügenBinäre Suchbäume: Einfügen
• Aufbau durch wiederholtes Einfügen in einen leeren binären Suchbaum
• Einfügeoperation für binären Suchbaum *B und eine ganze Zahl k– B == NULL: erzeuge neuen Knoten, weise ihn B zu
und setze B->Element = k– B != NULL
• B->Element < k: Einfügen von k in B->RSohn• B->Element > k: Einfügen von k in B->LSohn
![Page 24: EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I](https://reader035.fdokument.com/reader035/viewer/2022062422/5681352f550346895d9c96fa/html5/thumbnails/24.jpg)
24
Kap 8: Binäre Bäume + Suchen Vorl “EINI-I"Prof. Dr. G. Dittrich
20.1.2000
Binäre Suchbäume: EinfügenBinäre Suchbäume: Einfügen
BinBaum *Einfuegen (BinBaum * B, int k) {
if (B == NULL){
Binbaum *Hilf = new BinBaum;
Hilf->Element = k; Hilf->Lsohn = Hilf->Rsohn = NULL;
return Hilf;
}
else {
if (B->Element < k)
B->Rsohn = Einfuegen(B->Rsohn, k);B->Rsohn = Einfuegen(B->Rsohn, k);
else if (B->Element > k)
B->Lsohn = Einfuegen(B->Lsohn, k);B->Lsohn = Einfuegen(B->Lsohn, k);
return B;
}
}
![Page 25: EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I](https://reader035.fdokument.com/reader035/viewer/2022062422/5681352f550346895d9c96fa/html5/thumbnails/25.jpg)
25
Kap 8: Binäre Bäume + Suchen Vorl “EINI-I"Prof. Dr. G. Dittrich
20.1.2000
Binäre Suchbäume: EinfügenBinäre Suchbäume: Einfügen
• Rekursion wichtiger Bestandteil der Funktion• Idee:
– suche den Unterbaum, in den eingefügt werden soll, – füge in den Unterbaum ein,– weise diesem Unterbaum das Resultat der Einfügung
zu.
![Page 26: EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I](https://reader035.fdokument.com/reader035/viewer/2022062422/5681352f550346895d9c96fa/html5/thumbnails/26.jpg)
26
Kap 8: Binäre Bäume + Suchen Vorl “EINI-I"Prof. Dr. G. Dittrich
20.1.2000
weise dem Unterbaum
das Resultat der Einfügung zu
Kommentar: EinfügenKommentar: Einfügen
if (B->Element < k) B->Rsohn = Einfuegen(B->Rsohn, k);B->Rsohn = Einfuegen(B->Rsohn, k);else if (B->Element > k) B->Lsohn = Einfuegen(B->Lsohn, k);B->Lsohn = Einfuegen(B->Lsohn, k);return B;
Suche den Unterbaum, in den eingefügt wird
![Page 27: EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I](https://reader035.fdokument.com/reader035/viewer/2022062422/5681352f550346895d9c96fa/html5/thumbnails/27.jpg)
27
Kap 8: Binäre Bäume + Suchen Vorl “EINI-I"Prof. Dr. G. Dittrich
20.1.2000
Analyse: EinfügenAnalyse: Einfügen
• Wie schnell geht das eigentlich?• Maß für die Güte eines Algorithmus:
– Anzahl von Operationen und – Speicherplatz-Verbrauch
• hier: – Speicherplatz: pro Knoten eine Instanz von BinBaum,
also relativ uninteressant.– Operationen sind hier Vergleiche: interessant
![Page 28: EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I](https://reader035.fdokument.com/reader035/viewer/2022062422/5681352f550346895d9c96fa/html5/thumbnails/28.jpg)
28
Kap 8: Binäre Bäume + Suchen Vorl “EINI-I"Prof. Dr. G. Dittrich
20.1.2000
Analyse: EinfügenAnalyse: Einfügen
• Frage: wieviele Vergleiche sind beim Einfügen (oder bei der erfolglosen Suche) notwendig?
• Antwort: nicht so leicht zu geben:– ist der günstigste Fall gemeint? (klar: 1)– ist der ungünstigste Fall gemeint? (auch ziemlich
klar: längster Pfad im Baum)– ist der durchschnittliche Fall gemeint? (völlig unklar)
![Page 29: EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I](https://reader035.fdokument.com/reader035/viewer/2022062422/5681352f550346895d9c96fa/html5/thumbnails/29.jpg)
29
Kap 8: Binäre Bäume + Suchen Vorl “EINI-I"Prof. Dr. G. Dittrich
20.1.2000
Suchen: ungünstigster FallSuchen: ungünstigster Fall
• Erfolglose Suche: – suche von der Wurzel zu einem Blatt, jeder Knoten
entspricht einem Vergleich.
• Höhe eines Baums: – gibt den längsten Pfad von der Wurzel zu einem Blatt
an. Ist rekursiv definiert• Höhe des leeren Baums ist 0,
• Höhe eines nicht-leeren Baums ist 1 + max{Höhe Lsohn, Höhe Rsohn}
![Page 30: EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I](https://reader035.fdokument.com/reader035/viewer/2022062422/5681352f550346895d9c96fa/html5/thumbnails/30.jpg)
30
Kap 8: Binäre Bäume + Suchen Vorl “EINI-I"Prof. Dr. G. Dittrich
20.1.2000
Höhe eines binären BaumsHöhe eines binären Baums
17
4 36
2 8
6
7
19 40
37
Der Baum hat die Höhe 5
![Page 31: EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I](https://reader035.fdokument.com/reader035/viewer/2022062422/5681352f550346895d9c96fa/html5/thumbnails/31.jpg)
31
Kap 8: Binäre Bäume + Suchen Vorl “EINI-I"Prof. Dr. G. Dittrich
20.1.2000
Suchen: ungünstigster FallSuchen: ungünstigster Fall
• Es gilt der Satz:
Ein binärer Baum der Höhe n hat zwischen n und 2 n- 1 Knoten.– Daraus folgt: k Knoten können in einem binären
Baum gespeichert werden, der eine Höhe zwischen ~log2 k und k hat
– Also: der schlechteste Fall bei der erfolglosen Suche in einem binären Suchbaum mit k Elementen liegt bei k Vergleichsoperationen
![Page 32: EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I](https://reader035.fdokument.com/reader035/viewer/2022062422/5681352f550346895d9c96fa/html5/thumbnails/32.jpg)
32
Kap 8: Binäre Bäume + Suchen Vorl “EINI-I"Prof. Dr. G. Dittrich
20.1.2000
Suchen: zu erwartender FallSuchen: zu erwartender Fall
• Die erfolglose Suche in einem binären Suchbaum mit k Elementen erfordert im Durchschnitt proportional zu log k Vergleichsoperationen.
• Recht kompliziert herzuleiten.