Informatik I 2. Kapitel. Elementare Datenstrukturen. Datenstrukturen. Datenstrukturen. Rainer Schrader. 28. Mai 2008

Save this PDF as:
 WORD  PNG  TXT  JPG

Größe: px
Ab Seite anzeigen:

Download "Informatik I 2. Kapitel. Elementare Datenstrukturen. Datenstrukturen. Datenstrukturen. Rainer Schrader. 28. Mai 2008"

Transkript

1 Informatik I. Kapitel Rainer Schrader Elementare Zentrum für Angewandte Informatik Köln 8. Mai 008 / / bisher haben wir nur Arrays verwendet, Gliederung Einführung abstrakte Datentypen Listen Stacks und queues Anwendungsbeispiele Bäume effiziente Algorithmen brauchen geeignete Datenstruktur Beispiel: Suche im Telefonbuch gegeben: Name gesucht: Telefonnummer einfach gegeben: Telefonnummer gesucht: Name praktisch unmöglich 3 / 4 /

2 Nichttriviales Beispiel: Posamp-Problem gegeben: n Orte (Postämter) M = {p, p,..., p n } ihre kartesischen Koordinaten p i = (x i, y i ) zusätzlicher Ort p 0 = (x 0, y 0 ) gesucht: das zu p 0 nächstgelegene Postamt p k, d.h. d (p 0, p k ) d (p 0, p i ) für alle i {,..., n} mit d (p i, p j ) = p (x i x j ) + (y i y j ) (Euklidische Distanz) offensichtlich ist das Problem in der Zeit Θ(n) lösbar, aber es geht besser, wenn man viele Anfragen zu einem festen M hat Informelle Beschreibung einer geeigneten Datenstruktur sei VR(p j ) die Menge aller Punkte der Ebene, die näher an p j als an jedem anderen Punkt in M liegen, also VR(p j ) = n o q R d (q, p j ) d (q, p i ) i {,,... n}. VR(p j ) ist die Voronoi-Region von p j das Voronoi-Diagramm ist die Menge VD(M) = {VR(p j ) j {,,..., n}} 5 / 6 / Beispiel: Idee eines effizienten Verfahrens für eine beliebige Anfrage (AD) Aufbau der Datenstruktur: bestimme das Voronoi-Diagramm VD(M). (BA) Beantwortung einer Anfrage: für eine Anfrage p 0 : bestimme VR(p k ) mit p 0 VR(p k ). man kann zeigen: (evtl. Kapitel 0) (AD) benötigt O(n log n) Zeit. (BA) benötigt O(log n) Zeit. 7 / 8 /

3 Gliederung Einführung abstrakte Datentypen Listen Stacks und queues Anwendungsbeispiele Bäume sollen Operationen auf Objekten unterstützen evtl. verschiedene für verschiedene Operationen evtl. Verknüpfung von Objekten und Operationen (Klassen) Abstrakter Datentyp (ADT) besteht aus einer oder mehreren Mengen von Objekten und darauf definierten Operationen 9 / 0 / Beispiel Postamtproblem : Objekte: endliche Mengen M von Punkten in der Ebene ein Punkt p 0 in der Ebene Beispiel: Formulierung eines Algorithmus mit Hilfe von ADT Aufgabe: gegeben eine endliche Menge M von Punkten in der Ebene finde ein Paar p 0, q 0 von Punkten mit minimalem Abstand d (p 0, q 0 ) Operation nächster Nachbar : ordne dem Punkt p 0 Punkt aus M zu Mögliche zusätzliche Operationen: füge einen Punkt zu M hinzu entferne einen Punkt aus M Wir haben jedesmal einen anderen ADT. einen nächstgelegen ADT: Objekt: endliche Punktmenge M Operationen: nächster Nachbar Distanz zweier Punkte Kardinalität von M M := M {p} / /

4 Algorithmus nearest_neighbours(m) liefert p 0, q 0 M mit minimaler Distanz d (p 0, q 0 ) falls M = oder M =, so sind p 0 und q 0 nicht definiert falls M : Implementierung (Realisierung als Computerprogramm) wähle zwei Punkte p 0, q 0 M berechne die Distanz dist := d (p 0, q 0 ) Auswahl von für die Objektmengen Auswahl von Algorithmen für die Operationen for all p M do end do bestimme einen nächsten Nachbarn q M {p} berechne die Distanz d (p, q) falls d (p, q) < dist, so setze: p 0 := p; q 0 := q; dist := d (p, q). 3 / 4 / Lineare Liste Gliederung Einführung abstrakte Datentypen Listen Stacks und queues Anwendungsbeispiele Bäume Objekte: Menge aller endlichen Folgen eines gegebenen Grundtyps die Schreibweise für eine lineare Liste ist L = a, a,..., a n, hierbei ist L = die leere Liste verschiedene Operationen im Folgenden ist L eine lineare Liste, x vom Grundtyp und p eine Position 5 / 6 /

5 Füge_ein(x,p,L) falls L = a, a,..., a p, a p, a p+,..., a n = : Entferne(p,L) für L und p n gilt: L a, a,..., a p, x, a p, a p+,..., a n für < p n L x, a, a,..., a n für p = L a, a,..., a n, x für p = n + falls L = und p = : x undefiniert sonst aus wird undefiniert sonst a, a,..., a p, a p, a p+,... a n a, a,..., a p, a p+,... a n. 7 / 8 / Suche(x,L) liefert eine Position p in L = a, a,..., a n mit a p = x, falls diese existiert, sonst 0. Verkette(L,L,L) liefert für L = a, a,..., a n und L = b, b,..., b n Zugriff(p,L) liefert a p in L = a, a,..., a n, falls p n, sonst undefiniert. die Liste L = a, a,..., a n, b, b,..., b n. 9 / 0 /

6 Gliederung Darstellungen linearer Listen sequentielle Darstellung zusammenhängende Speicherung als Feld mit direktem Zugriff verkettete Listen verteilte Speicherung, durch Zeiger verknüpft Einführung abstrakte Datentypen Listen sequentielle Listen verkettete Listen Stacks und queues Anwendungsbeispiele Bäume / / Füge_ein(x,p,L) Sequentielle Listen Eine sequentiell gespeicherte Liste L besteht aus: einer (hinreichend großen) Konstanten maxelzahl einem Feld element[0,..., maxelzahl] der aktuellen Listengröße elzahl Ist 0 < L.elzahl L.maxelzahl, so ist in L.element(),..., L.element(elzahl) die aktuelle Liste abgelegt. \\ fügt x als neues Element an Stelle p ein, falls p zulässig, gibt andernfalls Fehlermeldung aus if (L.elzahl = L.maxelzahl or p < or p > L.elzahl + ) print Fehler else for i = L.elzahl down to p do L.element(i+) = L.element(i) end do L.element(p) = x L.elzahl = L.elzahl+ end if 3 / 4 /

7 Entferne(p,L) Suche(x,L) \\ entfernt das p. Element, falls p zulässig, gibt andernfalls Fehlermeldung aus if (L.elzahl = 0 or p < or p > L.elzahl) print Fehler else L.elzahl = L.elzahl - for i = p to L.elzahl do L.element(i) = L.element(i+) end do end if \\ liefert die höchste Position, an der x in L vorkommt, 0 sonst L.element(0) = x i = L.elzahl while (L.element(i) x) do i = i- end while return i 5 / 6 / Zugriff(p,L) Verkette(L,L,L) \\ gibt das p. Element aus, falls p zulässig, gibt andernfalls Fehlermeldung aus if (p < or p > L.elzahl) print Fehler else return L.element(p) end if \\ hänge L an L an, falls L ausreichend lang if (L.elzahl + L.elzahl > L.maxelzahl) print Fehler else if (L.elzahl > 0) then do for i = to L.elzahl do L.element(L.elzahl + i) = L.element(i) end do end if L.elzahl = L.elzahl + L.elzahl end if 7 / 8 /

8 Laufzeiten Sei n die Länge der Liste Operation Zeit suche O(n) füge_ein O(n) entferne O(n) Zugriff O() verkette O(n ) Gliederung Einführung abstrakte Datentypen Listen sequentielle Listen verkettete Listen Stacks und queues Anwendungsbeispiele Bäume 9 / 30 / eine mögliche Implementation von verketteten Listen eine Liste L = a, a,..., a n lässt sich wie folgt darstellen: eine verkettete Liste wird kreuz und quer im Speicher abgelegt eine Liste ist gegeben als eine Folge von Knoten a a... a n jeder Knoten besteht aus (a) einem Listenelement dat head DUMMY-Elemente tail (b) einem Zeiger next auf das nächste Listenelement zwei Dummy-Elemente als Kopf und Schwanz der Liste einem Zeiger head auf das Kopfelement eine leere Liste sieht dann wie folgt aus: einem Zeiger tail auf das Schwanzelement der Zeiger des Schwanzelements zeigt auf das vorangehende Element head tail 3 / 3 /

9 Vereinbarung: Die Position p ist gegeben durch einen Zeiger auf den Knoten, dessen Zeiger auf das p.te Listenelement zeigt: Füge_ein(x,p,L) Zeiger von x := Zeiger von Element p Zeiger von Element p := Zeiger auf x Skizze für Füge_ein: a p vorher: a p a p p p nachher: a p a p Die Listenoperationen lassen sich wie folgt durchführen: x Wir überprüfen hier nicht, ob p ein legaler Zeiger ist. 33 / 34 / Entferne(p,L) Zeiger von p := Zeiger von Element p (entferne Knoten p) Suche(x,L) liefert die Position des ersten Listenelements mit dem Schlüssel x, falls es existiert, sonst NULL. Skizze für Entferne(p,L): vorher: nachher: a p a p a p+ p a p a p+ Suche(x,L) kopiere x in das Datumsfeld des Schwanzes beginnend mit dem Kopfelement suche nach x wird x in einem Element p gefunden: ist p nicht das Schwanzelement: gib Zeiger auf p zurück andernfalls gib Null zurück Wir überprüfen hier nicht, ob p ein legaler Zeiger ist. 35 / 36 /

10 Verkette(L,L,L) tail zeigt auf das Schwanzelement von L der Zeiger dieses Schwanzelements zeigt auf das letzte Element von L biege dessen Zeiger auf den Zeiger des Kopfelements von L um entferne das Schwanzelement von L und das Kopfelement von L Skizze für Verkette: head Doppelte Verkettung manchmal ist es hilfreich, eine Kette auch rückwärts durchlaufen zu können wir verwenden einen zusätzlichen Zeiger auf den jeweiligen Vorgänger hier können wir die Position p durch einen Zeiger auf den Knoten mit dat-komponente a p definieren head... a p a p a p+ tail Beispiel für Entferne: p... tail a p a p+ head tail 37 / 38 / Zusammenfassung: Operation sequentiell verkettet suche Θ(n) Θ(n) füge_ein Θ(n) Θ() entferne Θ(n) Θ() Zugriff Θ() Θ() verkette Θ(n ) Θ() Gliederung Einführung abstrakte Datentypen Listen Stacks und queues Anwendungsbeispiele Bäume 39 / 40 /

11 Stapel ist eine spezielle Liste Einfügen und Entfernen nur am Anfang der Liste erlaubt LIFO : last-in-first-out Operationen: empty(l): teste, ob L leer ist push(l,x): füge x am Anfang von L ein pop(l,x): setze x := a ; entferne a Schlange ist eine spezielle Liste Einfügen nur am Ende, Entfernen nur am Anfang der Liste FIFO : first-in-first-out Operationen: enqueue(l,x): füge x am Ende von L ein dequeue(l,x): setze x = a, entferne a aus L empty(l): teste, ob L leer ist top(l,x): setze x := a (ohne zu entfernen) top(l,x): setze x := a (ohne zu entfernen) 4 / 4 / Doppelschlangen beide push- und pop-operationen sowie empty(l), top(l,x), bottom(l,x) alle Stapel-, Schlangen- und Doppelschlangen-Operationen können mit konstanter Laufzeit implementieren werden sowohl sequentiell als auch verkettet Anwendung als Warteschlangen und Vorrangwarteschlangen sequentiell implementierte Schlangen sollten zyklisch verwaltet werden 43 / 44 /

12 Skizzen für sequentielle Speicherung Stapel (Doppel )Schlange maxn frei Stapel Anfang frei maxn Ende Gliederung Einführung abstrakte Datentypen Listen Stacks und queues Anwendungsbeispiele Bäume 45 / 46 / Anwendung eines Stapels: wohlgeformte Klammerausdrücke Test, ob Klammerfolgen wohlgeformt sind Beispiel: (()()) Beispiel: ((())( Definition eines wohlgeformten Klammerausdrucks () () ist ein wohlgeformter Klammerausdruck () sind w und w wohlgeformte Klammerausdrücke, so ist auch w w ein wohlgeformter Klammerausdruck (3) mit w ist auch (w ) ein wohlgeformter Klammerausdruck (4) nur die nach () bis (3) gebildeten Zeichenketten sind wohlgeformte Klammerausdrücke 47 / 48 /

13 Anwendung eines Stapels: Test von Klammerausdrücken durchsuche Zeichenkette von links nach rechts wird ( gefunden: lege sie auf Stapel wird ) gefunden: ist Stapel leer nicht wohlgeformt andernfalls entferne obere Klammer vom Stapel am Ende: ist Stapel nicht leer nicht wohlgeformt andernfalls wohlgeformt Anwendung von Listen: Datenstruktur für Projektplanungen gegeben: n Teilprojekte eines Projekts (Bauprojekt, Kfz-Fertigung, ) mit Zeitangaben über die Dauer der Teilprojekte Reihenfolgebedingungen zwischen einzelnen Teilprojekten bestimme: Gesamtdauer Pufferzeiten kritische Pfade 49 / 50 / Beispiel mit 4 Teilprojekten 6 TP : Dauer: TP : Dauer: 6, muss warten auf Beendigung von TP, TP 3 TP 3 : Dauer: 9, muss warten auf Beendigung von TP TP 4 : Dauer: 7, muss warten auf Beendigung von TP, TP 3 Darstellung mit verketteten Listen NIL 5 / 5 /

14 gerichteter Graph G = (V, E ) besteht aus: einer endlichen Menge V von Knoten einer endlichen Menge E von gerichteten Kanten jeder Kante e E entspricht ein Paar u, v von Knoten u Startknoten, v Endknoten von e wir identifizieren e und das Knotenpaar, d.h. e = (u, v ) Veranschaulichung wie vorher: Knoten als Kreise Kanten als Pfeile Darstellung z.b. durch Adjazenzlisten (ungerichteter) Graph G = (V, E ) besteht aus: einer endlichen Menge V von Knoten einer endlichen Menge E von Kanten jeder Kante e E entspricht ein Paar u, v von Knoten u, v sind die Endknoten von e wir identifizieren e und das Knotenpaar, d.h. e = {u, v } Veranschaulichung: Knoten als Kreise Kanten als Verbindungen, Strecken, Darstellung z.b. durch Adjazenzlisten 53 / 54 / 3 4 Darstellung mit verketteten Listen Gliederung Einführung abstrakte Datentypen Listen Stacks und queues Anwendungsbeispiele Bäume / 56 /

15 Bäume wir werden im Laufe der Vorlesung immer wieder auf graphentheoretische Modelle und Fragestellungen stoßen insbesondere kann die nächste Datenstruktur als gerichteter Graph aufgefasst werden sie stellt ebenso eine Verallgemeinerung von Listen dar bestehen aus: einer endlichen Menge V von Knoten ein Knoten ist als Wurzel ausgezeichnet jeder Knoten hat eine endliche Menge von direkten Nachfolgern (Söhnen) die Wurzel hat keinen direkten Vorgänger (Vater) jeder andere Knoten hat genau einen direkten Vorgänger 57 / 58 / Sprechweisen Bäume (rekursive Definition) bestehen aus einer endlichen Menge V von Knoten, so dass gilt: Sei T ein Baum mit Wurzel r und Unterbäumen T,..., T k. Ferner sei r i die Wurzel des Baumes T i. es gibt einen ausgezeichneten Knoten r (Wurzel) die restlichen Knoten sind partitioniert in Teilmengen T,..., T k, die selbst wieder Bäume sind r zeigt auf die Wurzeln der Teilbäume r,..., r k r i ist i-ter Sohn von r, r ist Vater der r,... r k, r j ist Bruder von r i, u ist Nachfolger von r i, falls u im Unterbaum T i ein Knoten ohne Nachfolger heißt Blatt, liegt, Knoten von T, die nicht Blatt sind, heißen innere Knoten, 59 / 60 /

16 Bezeichnungen Sprechweisen T T Niveau Sei T ein Baum mit Wurzel r und Unterbäumen T,..., T k. 5 Wurzel 0 Ferner sei r i die Wurzel des Baumes T i. eine Folge von Knoten v 0, v,..., v k heißt Weg, falls v i+ Nachfolger von v i ist für alle 0 i k, der Weg v 0, v,..., v k hat die Länge k, 3 5 linker Unterbaum 5 von 7 Knoten 8 3 Kanten Tiefe(7)= 7 Tiefe(v, T ) = Länge des Weges von Knoten v zur Wurzel r, Höhe(v, T ) = Länge des längsten Weges von v zu einem Blatt, Höhe(T ) = Höhe (Wurzel, T ). 3 ist Vater von 3 ist Vater von 5 ist linker Sohn von 3 5 ist rechter Sohn von Blatt / 6 / In der Informatik werden Bäume stets so dargestellt, dass die Wurzel oben und die Blätter unten liegen. Darstellungen von Bäumen verkettete Liste mit variabler Zeigerzahl Wurzel Daten Anzahl der Söhne Pointer zu Sohn Bäume können aufgefasst werden als: spezielle gerichtete Graphen, verallgemeinerte Listen, in denen ein Knoten mehr als einen Nachfolger haben kann. Nachteil: variable Zeigerzahl 63 / 64 /

17 verkettete Liste mit 3 Datentypen jedes Element der Liste besteht aus 3 Teilen: Beispiel: 0 Indikator Datum Zeiger Indikator = 0: Datum ist eine zu speichernde Größe Indikator = : Datum ist ein Zeiger auf eine Liste mit Unterbaum wir betrachten überwiegend Bäume mit spezieller Struktur etwa durch Beschränkung der Anzahl der Söhne ( einfachere Speicherung). 65 / 66 / Binäre Bäume Ein Baum, in dem jeder Knoten höchstens Söhne hat, heißt binär. Darstellung binärer Bäume durch Felder Leftson i und Rightson i dazu ggf. Informationen über: Inhalt der Knoten, Väter, # Nachfolger in zusätzlichen Feldern Lemma Ein binärer Baum der Höhe h hat höchstens h+ Knoten und h Blätter. Beweis: (per Induktion): h = 0 : sei T ein Baum der Höhe h R L T hat höchstens Söhne r und r r, r sind Wurzeln von Unterbäumen der Höhe höchstens h per Induktion haben T und T jeweils höchstens h Knoten und h Blätter damit hat T höchstens ( h ) + = h+ Knoten und ( h ) = h Blätter. 67 / 68 /

18 Satz Die maximale und die mittlere Tiefe eines Blattes in einem Binärbaum mit k Blättern beträgt mindestens log k. Beweis: haben alle Blätter die Tiefe höchstens t, so hat T höchstens t die maximale Tiefe ist mindestens log k. Beweis des zweiten Teils per Induktion: k = :. sei T ein Baum mit k Blättern Blätter seien T, T die Teilbäume unter der Wurzel mit k bzw. k Blättern per Induktion gilt: mittlere Tiefe(T ) log k, mittlere Tiefe(T ) log k per Induktion gilt: mittlere Tiefe(T ) log k, mittlere Tiefe(T ) log k die Tiefe in T ist um größer als in T bzw. T somit: mittlere Tiefe(T ) = k mittlere Tiefe(T ) + k k k (log k + ) + k k (log k + ) = k (k log k + k log k ) := f (k, k ) + k mittlere Tiefe(T ) + k Die Funktion f (k, k ) nimmt ihr Minimum unter der Bedingung k + k = k im Punkt k = k = k an. Somit: mittlere Tiefe(T ) k ( k log k + k log k ) = log k. 69 / 70 / Definition Ein binärer Baum der Höhe h heißt voll, wenn er h+ Knoten hat. Sequentielle Darstellung Die Knoten des vollen binären Baums werden beginnend in der Wurzel auf jedem Tiefenniveau von links nach rechts durchnumeriert. Definition Ein binärer Baum mit n Knoten heißt vollständig, wenn seine Knoten den ersten n Knoten eines sequentiell dargestellten vollen binären Baumes entsprechen / 7 /

19 Lemma Für einen vollständigen binären Baum T mit n Knoten gilt Höhe(T ) = log(n + ). Kompakte Darstellung vollständiger binärer Bäume Vollständige binäre Bäume haben eine kompakte sequentielle Darstellung der Relationen Vater, linker Sohn und rechter Sohn (ohne Zeiger): Beweis (per Induktion): sei h die Höhe von T die Knotenanzahl von T liegt zwischen denen der vollen Bäume der Höhe h und h h < n h+ h < log(n + ) h + h < log(n + ) h + (da h N) h + = log(n + ). Vater (i) = Leftson (i) = Rightson (i) = j i/ : für i > : für i = (Wurzel) j i : für i n : für i > n j i + : für i + n : für i + > n 73 / 74 / j i/ : für i > Vater (i) = : für i = (Wurzel) j i : für i n Leftson (i) = : für i > n j i + : für i + n Rightson (i) = : für i + > n diese Numerierung ist eine spezielle Aufzählung der Knoten eines Baums in einigen Anwendungen müssen wir die Knoten eines Baumes systematisch durchsuchen: zum Ausgeben der Einträge zum Aufsummieren der Einträge zur Bildung eines Mittelwerts über die Einträge,... wir wollen somit die Knoten in einer bestimmten Reihenfolge durchlaufen die gebräuchlichsten Reihenfolgen: Präordnung Postordnung symmetrisches Durchmustern (nur für Binärbäume) 75 / 76 /

20 Sei T ein Baum mit Wurzel r und Söhnen r,..., r k. Präordnung () Durchmustere die Wurzel () Durchmustere in Präordnung nacheinander T,..., T k Postordnung () Durchmustere in Postordnung nacheinander T,..., T k () Durchmustere die Wurzel Eigenschaften der Durchmusterungen Wir identifizieren Knoten mit ihrer Nummer. Präordnung () Durchmustere die Wurzel () Durchmustere in Präordnung nacheinander T,..., T k Sei r die Wurzel des Teilbaums T r. Dann ist v T r r v r + T r. symmetrisches Durchmustern von Binärbäumen () Durchmustere in symmetrischer Ordnung T links (falls er existiert) () Durchmustere die Wurzel (3) Durchmustere in symmetrischer Ordnung T rechts (falls er existiert) Folgerung Ist T r bekannt, so kann in O() Schritten entschieden werden, ob v Nachfolger von r ist. 77 / 78 / Postordnung () Durchmustere in Postordnung nacheinander T,..., T k () Durchmustere die Wurzel Sei r die Wurzel des Teilbaums T r. Dann ist Folgerung v T r r T r + v r. Ist T r bekannt, so kann in O() Schritten entschieden werden, ob v Nachfolger von r ist. symmetrisches Durchmustern von Binärbäumen () Durchmustere in symmetrischer Ordnung T links (falls er existiert) () Durchmustere die Wurzel (3) Durchmustere in symmetrischer Ordnung T rechts (falls er existiert) Die Knoten im linken Teilbaum von r tragen kleinere Nummern als r, die im rechten größere. Folgerung Wir können (auch nach dem Löschen von Knoten) in O(Höhe(T )) entscheiden, ob ein Knoten mit der Nummer p vorkommt. 79 / 80 /

21 Rekursiver Algorithmus zur symmetrischen Durchmusterung begin count = SymmOrd(Wurzel) end //Hauptprogramm procedure SymmOrd(v) end if (leftson(v) leer) then SymmOrd(leftson(v)) Number(v) = count count = count + if (rightson(v) leer) then SymmOrd(rightson(v)) Nichtrekursiver Algorithmus zur symmetrischen Durchmusterung begin count = v = root Top = 0 left: while (leftson(v) leer) then push (Stack, v) v = leftson(v) end while Center: Number(v) = count count = count + if (rightson(v) leer) then v = rightson(v) goto left end if if (top 0) then Pop(Stack, v) goto center end if end 8 / 8 / Stichwortsuche gegeben: ein Lexikon mit n Stichworten Frage: ist ein gegebener Begriff im Lexikon enthalten? Durch Einfügen und Löschen von Stichworten kann der Suchbaum wie folgt aussehen: a g b Zwei möglich Ansätze: verkettete Listen: O(n) im worst-case binärer Baum als Suchbaum organisiert: Folgerung Wörter im linken Unterbaum sind alphabetisch größer als das Wort in der Wurzel Wörter im rechten Unterbaum sind alphabetisch kleiner als das Wort in der Wurzel Wir können in O(Höhe(T )) entscheiden, ob das gesuchte Wort im Lexikon vorkommt. c d j Wir werden versuchen, diese Situation zu verhindern, und balancierte Bäume verwenden. d b f h j a c e Wir verschieben daher die Laufzeituntersuchungen der Operationen Füge_ein, Entferne, Suche und Zugriff auf Bäumen auf ein späteres Kapitel. i 83 / 84 /

Einfache Datenstrukturen

Einfache Datenstrukturen Kapitel 2 Einfache Datenstrukturen Bis vor einigen Jahren hat es für das Telefonieren ausgereicht, neben dem Telefon ein Telefonbuch zur Hand zu haben. Das im wesentlichen auftretende Problem, daß man

Mehr

Datenstrukturen Teil 2. Bäume. Definition. Definition. Definition. Bäume sind verallgemeinerte Listen. Sie sind weiter spezielle Graphen

Datenstrukturen Teil 2. Bäume. Definition. Definition. Definition. Bäume sind verallgemeinerte Listen. Sie sind weiter spezielle Graphen Bäume sind verallgemeinerte Listen Datenstrukturen Teil 2 Bäume Jeder Knoten kann mehrere Nachfolger haben Sie sind weiter spezielle Graphen Graphen bestehen aus Knoten und Kanten Kanten können gerichtet

Mehr

Logische Datenstrukturen

Logische Datenstrukturen Lineare Listen Stapel, Warteschlangen Binärbäume Seite 1 Lineare Liste Begriffe first Funktion: sequentielle Verkettung von Datensätzen Ordnungsprinzip: Schlüssel Begriffe: first - Anker, Wurzel; Adresse

Mehr

Theoretische Informatik 1 WS 2007/2008. Prof. Dr. Rainer Lütticke

Theoretische Informatik 1 WS 2007/2008. Prof. Dr. Rainer Lütticke Theoretische Informatik 1 WS 2007/2008 Prof. Dr. Rainer Lütticke Inhalt der Vorlesung Grundlagen - Mengen, Relationen, Abbildungen/Funktionen - Datenstrukturen - Aussagenlogik Automatentheorie Formale

Mehr

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny Grundlagen der Informatik Prof. Dr. Stefan Enderle NTA Isny 2 Datenstrukturen 2.1 Einführung Syntax: Definition einer formalen Grammatik, um Regeln einer formalen Sprache (Programmiersprache) festzulegen.

Mehr

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

Vorlesung Informatik 2 Algorithmen und Datenstrukturen Vorlesung Informatik 2 Algorithmen und Datenstrukturen (18 Bäume: Grundlagen und natürliche Suchbäume) Prof. Dr. Susanne Albers Bäume (1) Bäume sind verallgemeinerte Listen (jedes Knoten-Element kann mehr

Mehr

Abstrakter Datentyp (ADT): Besteht aus einer Menge von Objekten, sowie Operationen, die auf diesen Objekten wirken.

Abstrakter Datentyp (ADT): Besteht aus einer Menge von Objekten, sowie Operationen, die auf diesen Objekten wirken. Abstrakte Datentypen und Datenstrukturen/ Einfache Beispiele Abstrakter Datentyp (ADT): Besteht aus einer Menge von Objekten, sowie Operationen, die auf diesen Objekten wirken. Datenstruktur (DS): Realisierung

Mehr

Datenstrukturen & Algorithmen

Datenstrukturen & Algorithmen Datenstrukturen & Algorithmen Matthias Zwicker Universität Bern Frühling 2010 Übersicht Binäre Suchbäume Einführung und Begriffe Binäre Suchbäume 2 Binäre Suchbäume Datenstruktur für dynamische Mengen

Mehr

11. Elementare Datenstrukturen

11. Elementare Datenstrukturen 11. Elementare Datenstrukturen Definition 11.1: Eine dynamische Menge ist gegeben durch eine oder mehrer Mengen von Objekten sowie Operationen auf diesen Mengen und den Objekten der Mengen. Dynamische

Mehr

Programm heute. Algorithmen und Datenstrukturen (für ET/IT) Übersicht: Graphen. Definition: Ungerichteter Graph. Definition: Ungerichteter Graph

Programm heute. Algorithmen und Datenstrukturen (für ET/IT) Übersicht: Graphen. Definition: Ungerichteter Graph. Definition: Ungerichteter Graph Programm heute Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 07 Dr. Stefanie Demirci Computer Aided Medical Procedures Technische Universität München 7 Fortgeschrittene Datenstrukturen Graphen

Mehr

Vorlesung Datenstrukturen

Vorlesung Datenstrukturen Vorlesung Datenstrukturen Binärbaum Suchbaum Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 356 Datenstruktur Binärbaum Strukturrepräsentation des mathematischen Konzepts Binärbaum

Mehr

ContainerDatenstrukturen. Große Übung 4

ContainerDatenstrukturen. Große Übung 4 ContainerDatenstrukturen Große Übung 4 Aufgabenstellung Verwalte Kollektion S von n Objekten Grundaufgaben: Iterieren/Auflistung Suche nach Objekt x mit Wert/Schlüssel k Füge ein Objekt x hinzu Entferne

Mehr

Counting - Sort [ [ ] [ [ ] 1. SS 2008 Datenstrukturen und Algorithmen Sortieren in linearer Zeit

Counting - Sort [ [ ] [ [ ] 1. SS 2008 Datenstrukturen und Algorithmen Sortieren in linearer Zeit Counting-Sort Counting - Sort ( A,B,k ). for i to k. do C[ i]. for j to length[ A]. do C[ A[ j ] C[ A[ j ] +. > C[ i] enthält Anzahl der Elemente in 6. for i to k. do C[ i] C[ i] + C[ i ]. > C[ i] enthält

Mehr

(a, b)-bäume / 1. Datenmenge ist so groß, dass sie auf der Festplatte abgespeichert werden muss.

(a, b)-bäume / 1. Datenmenge ist so groß, dass sie auf der Festplatte abgespeichert werden muss. (a, b)-bäume / 1. Szenario: Datenmenge ist so groß, dass sie auf der Festplatte abgespeichert werden muss. Konsequenz: Kommunikation zwischen Hauptspeicher und Festplatte - geschieht nicht Byte für Byte,

Mehr

1. Motivation / Grundlagen 2. Sortierverfahren 3. Elementare Datenstrukturen / Anwendungen 4. Bäume / Graphen 5. Hashing 6. Algorithmische Geometrie

1. Motivation / Grundlagen 2. Sortierverfahren 3. Elementare Datenstrukturen / Anwendungen 4. Bäume / Graphen 5. Hashing 6. Algorithmische Geometrie Gliederung 1. Motivation / Grundlagen 2. Sortierverfahren 3. Elementare Datenstrukturen / Anwendungen 4. Bäume / Graphen 5. Hashing 6. Algorithmische Geometrie 4/3, Folie 1 2010 Prof. Steffen Lange - HDa/FbI

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen 1 Algorithmen und Datenstrukturen Wintersemester 2016/17 13. Vorlesung Binäre Suchbäume Prof. Dr. Alexander Wolff Lehrstuhl für Informatik I 2 Dynamische Menge verwaltet Elemente einer sich ändernden Menge

Mehr

Technische Universität München. Vorlesungsgrobstruktur: wo stehen wir, wie geht s weiter

Technische Universität München. Vorlesungsgrobstruktur: wo stehen wir, wie geht s weiter Vorlesungsgrobstruktur: wo stehen wir, wie geht s weiter Kapitel 7 Fortgeschrittene Datenstrukturen Motivation: Lineare Liste: Suchen eines Elements ist schnell O(log n) Einfügen eines Elements ist langsam

Mehr

Graphdurchmusterung, Breiten- und Tiefensuche

Graphdurchmusterung, Breiten- und Tiefensuche Prof. Thomas Richter 18. Mai 2017 Institut für Analysis und Numerik Otto-von-Guericke-Universität Magdeburg thomas.richter@ovgu.de Material zur Vorlesung Algorithmische Mathematik II am 18.05.2017 Graphdurchmusterung,

Mehr

Voronoi-Diagramme. Dr. Martin Nöllenburg Vorlesung Algorithmische Geometrie INSTITUT FÜR THEORETISCHE INFORMATIK FAKULTÄT FÜR INFORMATIK

Voronoi-Diagramme. Dr. Martin Nöllenburg Vorlesung Algorithmische Geometrie INSTITUT FÜR THEORETISCHE INFORMATIK FAKULTÄT FÜR INFORMATIK Vorlesung Algorithmische Geometrie INSTITUT FÜR THEORETISCHE INFORMATIK FAKULTÄT FÜR INFORMATIK Martin Nöllenburg 29.05.2011 Das Postamt-Problem b(p, q) = {x R 2 : xp = xq } p q h(p, q) h(q, p) = {x :

Mehr

Kapitel 4: Dynamische Datenstrukturen. Algorithmen und Datenstrukturen WS 2017/18. Pro f. Dr. Sán do r Fe k e te

Kapitel 4: Dynamische Datenstrukturen. Algorithmen und Datenstrukturen WS 2017/18. Pro f. Dr. Sán do r Fe k e te Kapitel 4: Dynamische Datenstrukturen Algorithmen und Datenstrukturen WS 2017/18 Pro f. Dr. Sán do r Fe k e te 1 4.1 Grundoperationen Aufgabenstellung: 3 4.1 Grundoperationen Aufgabenstellung: Verwalten

Mehr

Datenstrukturen. einfach verkettete Liste

Datenstrukturen. einfach verkettete Liste einfach verkettete Liste speichert Daten in einer linearen Liste, in der jedes Element auf das nächste Element zeigt Jeder Knoten der Liste enthält beliebige Daten und einen Zeiger auf den nächsten Knoten

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Prof. Martin Lercher Institut für Informatik Heinrich-Heine-Universität Düsseldorf Teil 10 Suche in Graphen Version vom 13. Dezember 2016 1 / 2 Vorlesung 2016 / 2017 2 /

Mehr

Kapitel 4: Dynamische Datenstrukturen. Algorithmen und Datenstrukturen WS 2012/13. Prof. Dr. Sándor Fekete

Kapitel 4: Dynamische Datenstrukturen. Algorithmen und Datenstrukturen WS 2012/13. Prof. Dr. Sándor Fekete Kapitel 4: Dynamische Datenstrukturen Algorithmen und Datenstrukturen WS 2012/13 Prof. Dr. Sándor Fekete 4.4 Binäre Suche Aufgabenstellung: Rate eine Zahl zwischen 100 und 114! Algorithmus 4.1 INPUT: OUTPUT:

Mehr

Informatik II Prüfungsvorbereitungskurs

Informatik II Prüfungsvorbereitungskurs Informatik II Prüfungsvorbereitungskurs Tag 4, 9.6.2017 Giuseppe Accaputo g@accaputo.ch 1 Aufbau des PVK Tag 1: Java Teil 1 Tag 2: Java Teil 2 Tag 3: Algorithmen & Komplexität Tag 4: Dynamische Datenstrukturen,

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Universität Innsbruck Institut für Informatik Zweite Prüfung 16. Oktober 2008 Algorithmen und Datenstrukturen Name: Matrikelnr: Die Prüfung besteht aus 8 Aufgaben. Die verfügbaren Punkte für jede Aufgabe

Mehr

Übung Algorithmen und Datenstrukturen

Übung Algorithmen und Datenstrukturen Übung Algorithmen und Datenstrukturen Sommersemester 2017 Patrick Schäfer, Humboldt-Universität zu Berlin Agenda 1. Sortierte Listen 2. Stacks & Queues 3. Teile und Herrsche Nächste Woche: Vorrechnen (first-come-first-served)

Mehr

Wiederholung. Datenstrukturen und. Bäume. Wiederholung. Suchen in linearen Feldern VO

Wiederholung. Datenstrukturen und. Bäume. Wiederholung. Suchen in linearen Feldern VO Wiederholung Datenstrukturen und Algorithmen VO 708.031 Suchen in linearen Feldern Ohne Vorsortierung: Sequentielle Suche Speicherung nach Zugriffswahrscheinlichkeit Selbstanordnende Felder Mit Vorsortierung:

Mehr

12. Dynamische Datenstrukturen

12. Dynamische Datenstrukturen Motivation: Stapel. Dynamische Datenstrukturen Verkettete Listen, Abstrakte Datentypen Stapel, Warteschlange, Implementationsvarianten der verketteten Liste 0 04 Motivation: Stapel ( push, pop, top, empty

Mehr

Vorlesung Datenstrukturen

Vorlesung Datenstrukturen Vorlesung Datenstrukturen Graphen (1) Darstellung Traversierung Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 441 Generalisierung von Bäumen Verallgemeinerung (von Listen zu Graphen)

Mehr

13. Binäre Suchbäume

13. Binäre Suchbäume 1. Binäre Suchbäume Binäre Suchbäume realiesieren Wörterbücher. Sie unterstützen die Operationen 1. Einfügen (Insert) 2. Entfernen (Delete). Suchen (Search) 4. Maximum/Minimum-Suche 5. Vorgänger (Predecessor),

Mehr

Algorithmen und Datenstrukturen Kapitel 4 Neue Datenstrukturen, besseres (?) Sortieren

Algorithmen und Datenstrukturen Kapitel 4 Neue Datenstrukturen, besseres (?) Sortieren Algorithmen und Datenstrukturen Kapitel 4 Neue Datenstrukturen, besseres (?) Sortieren Frank Heitmann heitmann@informatik.uni-hamburg.de 4. November 2015 Frank Heitmann heitmann@informatik.uni-hamburg.de

Mehr

Informatik II Prüfungsvorbereitungskurs

Informatik II Prüfungsvorbereitungskurs Informatik II Prüfungsvorbereitungskurs Tag 4, 23.6.2016 Giuseppe Accaputo g@accaputo.ch 1 Programm für heute Repetition Datenstrukturen Unter anderem Fragen von gestern Point-in-Polygon Algorithmus Shortest

Mehr

3. Binäre Suchbäume. 3.1 Natürliche binäre Suchbäume. EADS 3.1 Natürliche binäre Suchbäume 78/598 ľernst W. Mayr

3. Binäre Suchbäume. 3.1 Natürliche binäre Suchbäume. EADS 3.1 Natürliche binäre Suchbäume 78/598 ľernst W. Mayr 3. Binäre Suchbäume 3.1 Natürliche binäre Suchbäume Definition 18 Ein natürlicher binärer Suchbaum über einem durch total geordneten Universum U ist ein als interner Suchbaum organisierter Binärbaum (also:

Mehr

Algorithmen & Komplexität

Algorithmen & Komplexität Algorithmen & Komplexität Angelika Steger Institut für Theoretische Informatik steger@inf.ethz.ch Breitensuche, Tiefensuche Wir besprechen nun zwei grundlegende Verfahren, alle Knoten eines Graphen zu

Mehr

Graphentheorie. Eulersche Graphen. Eulersche Graphen. Eulersche Graphen. Rainer Schrader. 14. November Gliederung.

Graphentheorie. Eulersche Graphen. Eulersche Graphen. Eulersche Graphen. Rainer Schrader. 14. November Gliederung. Graphentheorie Rainer Schrader Zentrum für Angewandte Informatik Köln 14. November 2007 1 / 22 2 / 22 Gliederung eulersche und semi-eulersche Graphen Charakterisierung eulerscher Graphen Berechnung eines

Mehr

Voronoi-Diagramme INSTITUT FÜR THEORETISCHE INFORMATIK FAKULTÄT FÜR INFORMATIK. Dr. Martin Nöllenburg Vorlesung Algorithmische Geometrie

Voronoi-Diagramme INSTITUT FÜR THEORETISCHE INFORMATIK FAKULTÄT FÜR INFORMATIK. Dr. Martin Nöllenburg Vorlesung Algorithmische Geometrie Vorlesung Algorithmische Geometrie INSTITUT FÜR THEORETISCHE INFORMATIK FAKULTÄT FÜR INFORMATIK Martin Nöllenburg 03.06.2014 1 Das Postamt-Problem b(p, q) = {x 2 R 2 : xp = xq } p q h(p, q) h(q, p) = {x

Mehr

Wiederholung: Zusammenfassung Felder. Algorithmen und Datenstrukturen (für ET/IT) Definition Abstrakter Datentyp. Programm heute

Wiederholung: Zusammenfassung Felder. Algorithmen und Datenstrukturen (für ET/IT) Definition Abstrakter Datentyp. Programm heute Wiederholung: Zusammenfassung Felder Algorithmen und Datenstrukturen (für ET/IT) Wintersemester / Dr. Tobias Lasser Computer Aided Medical Procedures Technische Universität München Ein Feld A kann repräsentiert

Mehr

Algorithmen und Datenstrukturen 2. Dynamische Datenstrukturen

Algorithmen und Datenstrukturen 2. Dynamische Datenstrukturen Algorithmen und Datenstrukturen 2 Dynamische Datenstrukturen Algorithmen für dynamische Datenstrukturen Zugriff auf Variable und Felder durch einen Ausdruck: Namen durch feste Adressen referenziert Anzahl

Mehr

Übersicht. Datenstrukturen und Algorithmen. Übersicht. Heaps. Vorlesung 8: Heapsort (K6) Joost-Pieter Katoen. 7. Mai 2015

Übersicht. Datenstrukturen und Algorithmen. Übersicht. Heaps. Vorlesung 8: Heapsort (K6) Joost-Pieter Katoen. 7. Mai 2015 Datenstrukturen und Algorithmen Vorlesung 8: (K6) 1 Joost-Pieter Katoen Lehrstuhl für Informatik Software Modeling and Verification Group http://moves.rwth-aachen.de/teaching/ss-15/dsal/ 7. Mai 015 3 Joost-Pieter

Mehr

Lernmodul 7 Algorithmus von Dijkstra

Lernmodul 7 Algorithmus von Dijkstra Folie 1 von 30 Lernmodul 7 Algorithmus von Dijkstra Quelle: http://www.map24.de Folie 2 von 30 Algorithmus von Dijkstra Übersicht Kürzester Weg von A nach B in einem Graphen Problemstellung: Suche einer

Mehr

15. Elementare Graphalgorithmen

15. Elementare Graphalgorithmen Graphen sind eine der wichtigste Modellierungskonzepte der Informatik Graphalgorithmen bilden die Grundlage vieler Algorithmen in der Praxis Zunächst kurze Wiederholung von Graphen. Dann Darstellungen

Mehr

13. Dynamische Datenstrukturen

13. Dynamische Datenstrukturen Motivation: Stapel. Dynamische Datenstrukturen Verkettete Listen, Abstrakte Datentypen Stapel, Warteschlange, Sortierte Liste 40 40 Motivation: Stapel ( push, pop, top, empty ) Wir brauchen einen neuen

Mehr

Eine Baumstruktur sei folgendermaßen definiert. Eine Baumstruktur mit Grundtyp Element ist entweder

Eine Baumstruktur sei folgendermaßen definiert. Eine Baumstruktur mit Grundtyp Element ist entweder Programmieren in PASCAL Bäume 1 1. Baumstrukturen Eine Baumstruktur sei folgendermaßen definiert. Eine Baumstruktur mit Grundtyp Element ist entweder 1. die leere Struktur oder 2. ein Knoten vom Typ Element

Mehr

8 Elementare Datenstrukturen

8 Elementare Datenstrukturen Algorithmen und Datenstrukturen 186 8 Elementare Datenstrukturen In diesem und dem folgenden Kapitel werden grundlegende Techniken der Darstellung und Manipulation dynamischer Mengen auf Computern vorgestellt.

Mehr

Algorithmen und Datenstrukturen Suchbaum

Algorithmen und Datenstrukturen Suchbaum Algorithmen und Datenstrukturen Suchbaum Matthias Teschner Graphische Datenverarbeitung Institut für Informatik Universität Freiburg SS 12 Motivation Datenstruktur zur Repräsentation dynamischer Mengen

Mehr

Datenstrukturen und Algorithmen

Datenstrukturen und Algorithmen Datenstrukturen und Algorithmen VO 708.031 Bäume robert.legenstein@igi.tugraz.at 1 Inhalt der Vorlesung 1. Motivation, Einführung, Grundlagen 2. Algorithmische Grundprinzipien 3. Sortierverfahren 4. Halden

Mehr

Vorlesung Datenstrukturen

Vorlesung Datenstrukturen Vorlesung Datenstrukturen Minimale Spannbäume Maike Buchin 18.7., 20.7.2017 Einführung Motivation: Verbinde Inseln mit Fähren oder Städte mit Schienen und verbrauche dabei möglichst wenig Länge. Problem:

Mehr

Übung Algorithmen und Datenstrukturen

Übung Algorithmen und Datenstrukturen Übung Algorithmen und Datenstrukturen Sommersemester 217 Patrick Schäfer, Humboldt-Universität zu Berlin Agenda: Graphen, Suchbäume, AVL Bäume Heute: Graphen und Bäume Binäre Suchbäume AVL-Bäume Nächste

Mehr

14. Rot-Schwarz-Bäume

14. Rot-Schwarz-Bäume Bislang: Wörterbuchoperationen bei binären Suchbäume effizient durchführbar, falls Höhe des Baums klein. Rot-Schwarz-Bäume spezielle Suchbäume. Rot-Schwarz-Baum mit n Knoten hat Höhe höchstens 2 log(n+1).

Mehr

Kapitel 12: Induktive

Kapitel 12: Induktive Kapitel 12: Induktive Datenstrukturen Felix Freiling Lehrstuhl für Praktische Informatik 1 Universität Mannheim Vorlesung Praktische Informatik I im Herbstsemester 2009 Folien nach einer Vorlage von H.-Peter

Mehr

Kapitel 4: Dynamische Datenstrukturen. Algorithmen und Datenstrukturen WS 2017/18. Pro f. Dr. Sán do r Fe k e te

Kapitel 4: Dynamische Datenstrukturen. Algorithmen und Datenstrukturen WS 2017/18. Pro f. Dr. Sán do r Fe k e te Kapitel 4: Dynamische Datenstrukturen Algorithmen und Datenstrukturen WS 2017/18 Pro f. Dr. Sán do r Fe k e te 1 Binärer Suchbaum Außerdem wichtig: Struktur der Schlüsselwerte! 2 Ordnungsstruktur Linker

Mehr

Sortieren II / HeapSort Heaps

Sortieren II / HeapSort Heaps Organisatorisches VL-07: Sortieren II: HeapSort (Datenstrukturen und Algorithmen, SS 2017) Vorlesung: Gerhard Woeginger (Zimmer 4024 im E1) Email: dsal-i1@algo.rwth-aachen.de Webseite: http://algo.rwth-aachen.de/lehre/ss17/dsa.php

Mehr

Modul: Programmierung B-PRG Grundlagen der Programmierung 1 Teil 1 V9/11

Modul: Programmierung B-PRG Grundlagen der Programmierung 1 Teil 1 V9/11 Modul: Programmierung B-PRG Grundlagen der Programmierung Teil V9/ Graphen und Bäume Professur für Graphische Datenverarbeitung Institut für Informatik Fachbereich Informatik und Mathematik (2) Rückblick:

Mehr

Datenstrukturen und Algorithmen

Datenstrukturen und Algorithmen Datenstrukturen und Algorithmen VO INF.02031UF (2-4)-Bäume robert.legenstein@igi.tugraz.at 1 7. Bäume Bäume als Datenstruktur Binärbäume Balancierte Bäume (2-4)-Bäume Anwendung: Mischbare Warteschlangen

Mehr

Algorithmen und Datenstrukturen (für ET/IT)

Algorithmen und Datenstrukturen (für ET/IT) Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 2016 Dr. Tobias Lasser Computer Aided Medical Procedures Technische Universität München Programm heute 1 Einführung 2 Grundlagen von Algorithmen

Mehr

Organisatorisches. Programmierpraktikum Das Canadian Traveller Problem. Organisatorisches. Organisatorisches

Organisatorisches. Programmierpraktikum Das Canadian Traveller Problem. Organisatorisches. Organisatorisches Organisatorisches Programmierpraktikum Das Canadian Traveller Problem Rainer Schrader Birgit Engels Anna Schulze Zentrum für Angewandte Informatik Köln. April 006 Prof. Dr. Rainer Schrader Tel.: 470-600

Mehr

Algorithmen und Datenstrukturen I Grundlagen

Algorithmen und Datenstrukturen I Grundlagen Algorithmen und Datenstrukturen I Grundlagen Prof. Dr. Oliver Braun Letzte Änderung: 01.11.2017 14:15 Algorithmen und Datenstrukturen I, Grundlagen 1/24 Algorithmus es gibt keine präzise Definition Handlungsvorschrift

Mehr

Informatik II, SS 2016

Informatik II, SS 2016 Informatik II - SS 2016 (Algorithmen & Datenstrukturen) Vorlesung 10 (27.5.2016) Binäre Suchbäume II Algorithmen und Komplexität Zusätzliche Dictionary Operationen Dictionary: Zusätzliche mögliche Operationen:

Mehr

Informatik II, SS 2014

Informatik II, SS 2014 Informatik II SS 2014 (Algorithmen & Datenstrukturen) Vorlesung 13 (18.6.2014) Binäre Suchbäume IV (Rot Schwarz Bäume) Algorithmen und Komplexität Rot Schwarz Bäume Ziel: Binäre Suchbäume, welche immer

Mehr

Vorlesung Datenstrukturen

Vorlesung Datenstrukturen Vorlesung Datenstrukturen Sortierte Folgen Maike Buchin 30.5., 1.6., 13.6.2017 Sortierte Folgen Häufiges Szenario: in einer Menge von Objekten mit Schlüsseln (aus geordnetem Universum) sollen Elemente

Mehr

Motivation Binäre Suchbäume

Motivation Binäre Suchbäume Kap..: Binäre Suchbäume Professor Dr. Lehrstuhl für Algorithm Engineering, LS Fakultät für Informatik, TU Dortmund Zusätzliche Lernraumbetreuung Morteza Monemizadeh: Jeden Montag von :00 Uhr-:00 Uhr in

Mehr

11.1 Grundlagen - Denitionen

11.1 Grundlagen - Denitionen 11 Binärbäume 11.1 Grundlagen - Denitionen Denition: Ein Baum ist eine Menge, die durch eine sog. Nachfolgerrelation strukturiert ist. In einem Baum gilt: (I) (II) 1 Knoten w ohne VATER(w), das ist die

Mehr

Diskrete Strukturen Kapitel 4: Graphentheorie (Bäume)

Diskrete Strukturen Kapitel 4: Graphentheorie (Bäume) WS 2016/17 Diskrete Strukturen Kapitel 4: Graphentheorie (Bäume) Hans-Joachim Bungartz Lehrstuhl für wissenschaftliches Rechnen Fakultät für Informatik Technische Universität München http://www5.in.tum.de/wiki/index.php/diskrete_strukturen_-_winter_16

Mehr

3 Dynamische Datenstrukturen

3 Dynamische Datenstrukturen 3 Dynamische Datenstrukturen Beispiele für dynamische Datenstrukturen sind Lineare Listen Schlangen Stapel Bäume Prof. Dr. Dietmar Seipel 128 Praktische Informatik I - Algorithmen und Datenstrukturen Wintersemester

Mehr

Abstrakte Datentypen und Datenstrukturen

Abstrakte Datentypen und Datenstrukturen Abstrakte Datentypen und Datenstrukturen Professor Dr. Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund 3. VO DAP2 SS 2009 21. April 2009 1 Praktikum zu DAP 2 Beginn: Mittwoch

Mehr

WS 2013/14. Diskrete Strukturen

WS 2013/14. Diskrete Strukturen WS 2013/14 Diskrete Strukturen Prof. Dr. J. Esparza Lehrstuhl für Grundlagen der Softwarezuverlässigkeit und theoretische Informatik Fakultät für Informatik Technische Universität München http://www7.in.tum.de/um/courses/ds/ws1314

Mehr

Definition Ein gerichteter Graph G = (V, E) ist ein Graph von geordneten Paaren (u, v) mit u V und v V.

Definition Ein gerichteter Graph G = (V, E) ist ein Graph von geordneten Paaren (u, v) mit u V und v V. Kapitel 4 Graphenalgorithmen 4.1 Definitionen Definition 4.1.1. Der Graph G = (V, E) ist über die beiden Mengen V und E definiert, wobei V die Menge der Knoten und E die Menge der Kanten in dem Graph ist.

Mehr

Beispiellösung zu den Übungen Datenstrukturen und Algorithmen SS 2008 Blatt 5

Beispiellösung zu den Übungen Datenstrukturen und Algorithmen SS 2008 Blatt 5 Robert Elsässer Paderborn, den 15. Mai 2008 u.v.a. Beispiellösung zu den Übungen Datenstrukturen und Algorithmen SS 2008 Blatt 5 AUFGABE 1 (6 Punkte): Nehmen wir an, Anfang bezeichne in einer normalen

Mehr

Wiederholung ADT Menge Ziel: Verwaltung (Finden, Einfügen, Entfernen) einer Menge von Elementen

Wiederholung ADT Menge Ziel: Verwaltung (Finden, Einfügen, Entfernen) einer Menge von Elementen Was bisher geschah abstrakter Datentyp : Signatur Σ und Axiome Φ z.b. ADT Menge zur Verwaltung (Finden, Einfügen, Entfernen) mehrerer Elemente desselben Typs Spezifikation einer Schnittstelle Konkreter

Mehr

Algorithmen und Datenstrukturen 1

Algorithmen und Datenstrukturen 1 Algorithmen und Datenstrukturen 1 7. Vorlesung Peter F. Stadler Universität Leipzig Institut für Informatik studla@informatik.uni-leipzig.de aufbauend auf den Kursen der letzten Jahre von E. Rahm, G. Heyer,

Mehr

Datenstrukturen und Algorithmen. Vorlesung 8

Datenstrukturen und Algorithmen. Vorlesung 8 Datenstrukturen und Algorithmen Vorlesung 8 Inhaltsverzeichnis Vorige Woche: ADT Stack ADT Queue Heute betrachten wir: ADT Deque ADT Prioritätsschlange Binomial-Heap Schriftliche Prüfung Informationen

Mehr

Datenstruktur, die viele Operationen dynamischer Mengen unterstützt

Datenstruktur, die viele Operationen dynamischer Mengen unterstützt Algorithmen und Datenstrukturen 265 10 Binäre Suchbäume Suchbäume Datenstruktur, die viele Operationen dynamischer Mengen unterstützt Kann als Wörterbuch, aber auch zu mehr eingesetzt werden (Prioritätsschlange)

Mehr

Einführung in die Informatik 2

Einführung in die Informatik 2 Einführung in die Informatik 2 Bäume & Graphen Sven Kosub AG Algorithmik/Theorie komplexer Systeme Universität Konstanz http://www.inf.uni-konstanz.de/algo/lehre/ss08/info2 Sommersemester 2008 Sven Kosub

Mehr

Wiederholung. Bäume sind zyklenfrei. Rekursive Definition: Baum = Wurzelknoten + disjunkte Menge von Kindbäumen.

Wiederholung. Bäume sind zyklenfrei. Rekursive Definition: Baum = Wurzelknoten + disjunkte Menge von Kindbäumen. Wiederholung Baum: Gerichteter Graph, der die folgenden drei Bedingungen erfüllt: Es gibt einen Knoten, der nicht Endknoten einer Kante ist. (Dieser Knoten heißt Wurzel des Baums.) Jeder andere Knoten

Mehr

Algorithmen und Datenstrukturen 13

Algorithmen und Datenstrukturen 13 19. Juli 2012 1 Besprechung Blatt 12 Fragen 2 Bäume AVL-Bäume 3 Graphen Allgemein Matrixdarstellung 4 Graphalgorithmen Dijkstra Prim Kruskal Fragen Fragen zu Blatt 12? AVL-Bäume AVL-Bäume ein AVL-Baum

Mehr

Bäume. Text. Prof. Dr. Margarita Esponda SS 2012 O4 O5 O6 O ALP2-Vorlesung, M. Esponda

Bäume. Text. Prof. Dr. Margarita Esponda SS 2012 O4 O5 O6 O ALP2-Vorlesung, M. Esponda Bäume O1 O2 Text O3 O4 O5 O6 O7 Prof. Dr. Margarita Esponda SS 2012 22. ALP2-Vorlesung, M. Esponda Inhalt 1. Einführung 2. Warum Bäume? 3. Listen und Arrays vs. Bäume 4. Einfach verkettete binäre Suchbäume

Mehr

13. Hashing. AVL-Bäume: Frage: Suche, Minimum, Maximum, Nachfolger in O(log n) Einfügen, Löschen in O(log n)

13. Hashing. AVL-Bäume: Frage: Suche, Minimum, Maximum, Nachfolger in O(log n) Einfügen, Löschen in O(log n) AVL-Bäume: Ausgabe aller Elemente in O(n) Suche, Minimum, Maximum, Nachfolger in O(log n) Einfügen, Löschen in O(log n) Frage: Kann man Einfügen, Löschen und Suchen in O(1) Zeit? 1 Hashing einfache Methode

Mehr

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

Vorlesung Informatik 2 Algorithmen und Datenstrukturen Vorlesung Informatik 2 Algorithmen und Datenstrukturen (23 Bruder-Bäume, B-Bäume) Prof. Dr. Susanne Albers Balancierte Bäume Eine Klasse von binären Suchbäumen ist balanciert, wenn jede der drei Wörterbuchoperationen

Mehr

Wintersemester 2004/ Dezember 2004

Wintersemester 2004/ Dezember 2004 Lehrstuhl für Praktische Informatik III Norman May B6, 29, Raum C0.05 68131 Mannheim Telefon: (0621) 181 2517 Email: norman@pi3.informatik.uni-mannheim.de Matthias Brantner B6, 29, Raum C0.05 68131 Mannheim

Mehr

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

Vorlesung Informatik 2 Algorithmen und Datenstrukturen Vorlesung Informatik 2 Algorithmen und Datenstrukturen (21 - Balancierte Bäume, AVL-Bäume) Prof. Dr. Susanne Albers Balancierte Bäume Eine Klasse von binären Suchbäumen ist balanciert, wenn jede der drei

Mehr

Informatik II, SS 2014

Informatik II, SS 2014 Informatik II SS 2014 (Algorithmen & Datenstrukturen) Vorlesung 11 (4.6.2014) Binäre Suchbäume II Algorithmen und Komplexität Binäre Suchbäume Binäre Suchbäume müssen nicht immer so schön symmetrisch sein

Mehr

ALP II Dynamische Datenmengen Datenabstraktion (Teil 2)

ALP II Dynamische Datenmengen Datenabstraktion (Teil 2) ALP II Dynamische Datenmengen Datenabstraktion (Teil 2) O1 O2 O3 O4 SS 2012 Prof. Dr. Margarita Esponda 49 Einfach verkettete Listen O1 O2 O3 50 Einführung Einfach verkettete Listen sind die einfachsten

Mehr

ALP II Dynamische Datenmengen Datenabstraktion

ALP II Dynamische Datenmengen Datenabstraktion ALP II Dynamische Datenmengen Datenabstraktion O1 O2 O3 O4 SS 2012 Prof Dr Margarita Esponda M Esponda-Argüero 1 Dynamische Datenmengen Dynamische Datenmengen können durch verschiedene Datenstrukturen

Mehr

Algorithmen und Datenstrukturen (für ET/IT)

Algorithmen und Datenstrukturen (für ET/IT) Algorithmen und Datenstrukturen (für ET/IT) Wintersemester 2012/13 Dr. Tobias Lasser Computer Aided Medical Procedures Technische Universität München Wiederholung: Ziele der Vorlesung Wissen: Algorithmische

Mehr

Algorithmen I. Tutorium 1-3. Sitzung. Dennis Felsing

Algorithmen I. Tutorium 1-3. Sitzung. Dennis Felsing Algorithmen I Tutorium 1-3. Sitzung Dennis Felsing dennis.felsing@student.kit.edu www.stud.uni-karlsruhe.de/~ubcqr/algo 2011-05-02 Überblick 1 Sortieren und Suchen 2 Mastertheorem 3 Datenstrukturen 4 Kreativaufgabe

Mehr

Teil 1: Suchen. Ausgeglichene Bäume B-Bäume Digitale Suchbäume. M.O.Franz, Oktober 2007 Algorithmen und Datenstrukturen - Binärbäume 1-1

Teil 1: Suchen. Ausgeglichene Bäume B-Bäume Digitale Suchbäume. M.O.Franz, Oktober 2007 Algorithmen und Datenstrukturen - Binärbäume 1-1 Teil : Suchen Problemstellung Elementare Suchverfahren Hashverfahren Binäre Suchbäume (Wiederholung aus Prog 2) Bäume: Begriffe, Eigenschaften und Traversierung Binäre Suchbäume Gefädelte Suchbäume Ausgeglichene

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Prof. Martin Lercher Institut für Informatik Heinrich-Heine-Universität Düsseldorf Teil 6 Suchbäume Version vom 25. November 2016 1 / 75 Vorlesung 10 22. November 2016 2

Mehr

ADS: Algorithmen und Datenstrukturen

ADS: Algorithmen und Datenstrukturen ADS: Algorithmen und Datenstrukturen Teil π Peter F. Stadler & Konstantin Klemm Bioinformatics Group, Dept. of Computer Science & Interdisciplinary Center for Bioinformatics, University of Leipzig Oct

Mehr

Algorithmen und Datenstrukturen 1

Algorithmen und Datenstrukturen 1 Algorithmen und Datenstrukturen 1 8. Vorlesung Martin Middendorf und Peter F. Stadler Universität Leipzig Institut für Informatik middendorf@informatik.uni-leipzig.de studla@bioinf.uni-leipzig.de Gefädelte

Mehr

Datenstrukturen und Algorithmen 2. Klausur SS 2001

Datenstrukturen und Algorithmen 2. Klausur SS 2001 UNIVERSITÄT PADERBORN FACHBEREICH 7 (MATHEMATIK INFORMATIK) Datenstrukturen und Algorithmen 2. Klausur SS 200 Lösungsansätze Dienstag, 8. September 200 Name, Vorname:...................................................

Mehr

4.1 Bäume, Datenstrukturen und Algorithmen. Zunächst führen wir Graphen ein. Die einfachste Vorstellung ist, dass ein Graph gegeben ist als

4.1 Bäume, Datenstrukturen und Algorithmen. Zunächst führen wir Graphen ein. Die einfachste Vorstellung ist, dass ein Graph gegeben ist als Kapitel 4 Bäume 4.1 Bäume, Datenstrukturen und Algorithmen Zunächst führen wir Graphen ein. Die einfachste Vorstellung ist, dass ein Graph gegeben ist als eine Menge von Knoten und eine Menge von zugehörigen

Mehr

Datenstrukturen und Algorithmen. 7. Suchen in linearen Feldern

Datenstrukturen und Algorithmen. 7. Suchen in linearen Feldern Datenstrukturen und Algorithmen 7. Suchen in linearen Feldern VO 708.031 Suchen in linearen Feldern robert.legenstein@igi.tugraz.at 1 Inhalt der Vorlesung 1. Motivation, Einführung, Grundlagen 2. Algorithmische

Mehr

8 Diskrete Optimierung

8 Diskrete Optimierung 8 Diskrete Optimierung Definition 8.1. Ein Graph G ist ein Paar (V (G), E(G)) besteh aus einer lichen Menge V (G) von Knoten (oder Ecken) und einer Menge E(G) ( ) V (G) 2 von Kanten. Die Ordnung n(g) von

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Dipl. Inform. Andreas Wilkens aw@awilkens.com Überblick Grundlagen Definitionen Elementare Datenstrukturen Rekursionen Bäume 2 1 Datenstruktur Baum Definition eines Baumes

Mehr

Datenstrukturen und Algorithmen

Datenstrukturen und Algorithmen Datenstrukturen und Algorithmen Jedes Programm verwendet Datenstrukturen und Algorithmen um seine Aufgabe zu erfüllen Diese müssen offenbar zunächst sorgfältig dem speziellen Problem entsprechend ausgewählt

Mehr

Algorithmen und Datenstrukturen (für ET/IT) Wiederholung: Ziele der Vorlesung. Wintersemester 2012/13. Dr. Tobias Lasser

Algorithmen und Datenstrukturen (für ET/IT) Wiederholung: Ziele der Vorlesung. Wintersemester 2012/13. Dr. Tobias Lasser Algorithmen und Datenstrukturen (für ET/IT) Wintersemester 2012/13 Dr. Tobias Lasser Computer Aided Medical Procedures Technische Universität München Wiederholung: Ziele der Vorlesung Wissen: Algorithmische

Mehr

Binärbäume: Beispiel

Binärbäume: Beispiel Binärbäume Als Beispiel für eine interessantere dynamische Datenstruktur sehen wir uns jetzt Binärbäume an Ein Binärbaum wird rekursiv definiert: Er ist leer oder besteht aus einem Knoten (die Wurzel des

Mehr

Übung zur Vorlesung Algorithmische Geometrie

Übung zur Vorlesung Algorithmische Geometrie Übung zur Vorlesung Algorithmische Geometrie Dipl.-Math. Bastian Rieck Arbeitsgruppe Computergraphik und Visualisierung Interdisziplinäres Zentrum für Wissenschaftliches Rechnen 8. Mai 2012 B. Rieck (CoVis)

Mehr

7. Sortieren Lernziele. 7. Sortieren

7. Sortieren Lernziele. 7. Sortieren 7. Sortieren Lernziele 7. Sortieren Lernziele: Die wichtigsten Sortierverfahren kennen und einsetzen können, Aufwand und weitere Eigenschaften der Sortierverfahren kennen, das Problemlösungsparadigma Teile-und-herrsche

Mehr

Informatik II Vorlesung am D-BAUG der ETH Zürich

Informatik II Vorlesung am D-BAUG der ETH Zürich Informatik II Vorlesung am D-BAUG der ETH Zürich Vorlesung 9, 2.5.2016 [Nachtrag zu Vorlesung : Numerische Integration, Zusammenfassung Objektorientierte Programmierung] Dynamische Datenstrukturen II:

Mehr