7 Minimaler Spannbaum und Datenstrukturen

Größe: px
Ab Seite anzeigen:

Download "7 Minimaler Spannbaum und Datenstrukturen"

Transkript

1 79 7 Minimaler Spannbaum und Datenstrukturen Hier betrachten wir als Ausgangspunkt stets zusammenhängende, ungerichtete Graphen. G So sind Spannbäume (aufspannende Bäume) on G. Beachte immer Kanten bei Knoten. Definition 7.(Spannbaum): Ist G = (V, E) zusammenhängend, so ist ein Teilgraph H = (V,F) ein Spannbaum on G, genau dann, wenn H zusammenhängend ist und für alle f FH \ {f} = (V,F \ {f}) nicht mehr zusammenhängend ist (H ist maximal zusammenhängend). Folgerung 7.: Sei H zusammenhängend, Teilgraph on G. H Spannbaum on G H ohne Kreis. Beweis. Hat H einen Kreis, dann gibt es eine Kante f, so dass H \ {f} zusammenhängend ist. (A B durch B A) Ist H kein Spannbaum, dann gibt es eine Kante f, so dass H \ {f} zusammenhängend ist. Dann haben wir einen Kreis in H, der f enthält. (B A durch A B) Damit hat jeder Spannbaum genau n Kanten, wenn V = n ist. Vergleiche Seite. Die Baumkanten einer Suche ergeben einen solchen Spannbaum. Wir suchen Spannbäume minimaler Kosten. Definition 7.: Ist G = (V,E) und K : E R (eine Kostenfunktion) gegeben. Dann ist H = (V,F) ein minimaler Spannbaum genau dann, wenn:

2 80 7 MINIMALER SPANNBAUM UND DATENSTRUKTUREN H ist Spannbaum on G K(H) = K(f) ist minimal unter den Knoten aller Spannbäume. f F (K(H) = Kosten on H). Wie finde ich einen minimalen Spannbaum? Systematisches Durchprobieren. Verbesserung durch branch-and-bound. Eingabe G = (V,E),K : R,E = {e,...,e n } (also Kanten) Systematisches Durchgehen aller Mengen on n Kanten (alle Bitektoren b,...,b n mit genau n Einsen), z.b, rekursi. Testen, ob kein Kreis. Kosten ermitteln. Den mit den kleinsten Kosten ausgeben. Zeit: Mindestens ( m n ) = m! (n )! (m + )! }{{} 0 für n m Wieiel ist das? m = n, dann (n)! n(n ) (n )... n = (n )!(n + )! (n + )n(n )... n n }{{} = n n }{{} > }... {{} = n n mal... n }{{} > Also Zeit Ω( n ). Regel: c 0 a b a c b c b a. Das c im Nenner hat mehr Gewicht. Definition 7.(Ω-Notation): Ist f,g : N R, so ist f(u) = Ω(g(u)) genau dann, wenn es eine Konstante C > 0 gibt, mit f(n) C g(n) für alle hinreichend großen n. (ergleiche O-Notation) O-Notation: Obere Schranke Ω-Notation: Untere Schranke. Verbesserung: Backtracking, frühzeitiges Erkennen on Kreisen: Aufbau eines Baumes (Prozeduraufrufbaum):

3 8 e nicht e e nicht e e.. Teste auf Kreis, Ende Falls Kreis nicht betrachtet, wenn Kreis bei e, e, e Alle Teilmengen mit e,e,e sind in einem Schritt erledigt, wenn ein Kreis orliegt. Einbau einer Kostenschranke in den Backtracking-Algorithmus: Branch-and-bound. Kosten des Knotens k = K(f). f in k gewählt.. k b Blätter = mögliche Spannbäume Es ist für Blätter wie b unter k. Kosten* on k Kosten on b. *Untere Schranke an die Spannbäume unter k. Also weiteres Rausschneiden möglich, wenn Kosten on k Kosten eines bereits gefundenen Baumes. Im allgemeinen ohne weiteres keine bessere Laufzeit nachweisbar. Besser: Irrtumsfreier Aufbau eines minimalen Spannbaumes Abbildung : ungerichteter Graph mit Kosten an den Kanten

4 8 7 MINIMALER SPANNBAUM UND DATENSTRUKTUREN Abbildung : Spannbaum mit minimalen Kosten Aufbau eines minimalen Spannbaums siehe Abbildung minimaler Spannbaum Nimm die günstigste Kante, die keinen Kreis ergibt, also nicht, 7 Abbildung : schrittweiser Aufbau eines Spannbaumes Implementierung durch Partition on V { }, { },...,{ 7 } keine Kante {, 7 },,,, {, 7 } {, 7 }, {, },... {, 7 }, {, } {, 7, }, {, },... {, 7 }, {, }, { 7, } {, 7,,, },... {, 7 }, {, }, { 7, }, { 7, } hinzu. 6 hinzu Problem: Wie Partition darstellen?

5 7. Algorithmus Minimaler Spannbaum 8 7. Algorithmus Minimaler Spannbaum (Kruskal 96) Eingabe: G = (V,E), zusammenhängend, V = {,...,n}, Kostenfunktion K : E R Ausgabe: F = Mege on Kanten eines minimalen Spannbaumes.. F = Ø, P = {{},..., {n}} // P ist die Partition. E nach Kosten sortieren // geht in O(E log E )=O( E log V ), // E V, log E =Olog V. while( P ){ // solange P {{,..., n}}. {, w} = kleinstes (erstes) Element on E {, w} aus E löschen. Testen, ob F {, w} einen Kreis hat 6. if({, w} induziert keinen Kreis){ W = die Menge mit aus P; W w = die Menge mit w aus P; W und W w in P ereinigen F = F {{, w}} } } Der Algorithmus arbeitet nach dem Greedy-Prinzip (greedy = gierig): Es wird zu jedem Zeitpunkt die günstigste Wahl getroffen (= Kante mit den kleinsten Kosten, die möglich ist) und diese genommen. Eine einmal getroffene Wahl bleibt bestehen. Die lokal günstige Wahl führt zum globalen Optimum. Zur Korrektheit des Algorithmus: Sei F l = der Inhalt on F nach dem l-ten Lauf der Schleife. P l = der Inhalt on P nach dem l-ten Lauf der Schleife. Wir erwenden die Inariante: F l lässt sich zu einem minimalen Spannbaum fortsetzen. (D.h., es gibt F F l, so dass F ein minimaler Spannbaum ist.) P l stellt die Zusammenhangskomponenten on F l dar. Inariante gilt für l = 0. Gelte sie für l und finde ein l + -ter Lauf statt.

6 8 7 MINIMALER SPANNBAUM UND DATENSTRUKTUREN. Fall Die Kante {,w} wird nicht genommen. Alles bleibt unerändert. Inariante gilt für l +.. Fall {,w} wird genommen. {,w} = Kante on minimalen Kosten, die zwei Zusammenhangskomponenten on F l erbindet. Also liegt folgende Situation or: Zu zeigen: Es gibt einen minimalen Spannbaum, der F l+ = F l {,w} enthält. F l w Nach Inariante für F l gibt es mindestens Spannbaum F F l. Halten wir ein solches F fest. Dieses F kann, muss aber nicht, {,w} enthalten. Falls F {,w} enthält, gilt die Inariante für l + (sofern die Operation auf P richtig implementiert ist). Falls aber F {,w} nicht enthält, argumentieren wir so: F {, w} enthält einen Kreis (sonst F nicht zusammenhängend). Dieser Kreis muss mindestens eine weitere Kante haben, die zwei erschiedene Komponenten on F l erbindet, also nicht zu F l gehört. Diese Kante ghört z der Liste on Kanten E l, hat also Kosten, die höchstens größer als die on {,w} sind. Tauschen wir in F diese Kante und {, w} aus, haben wir einen minimalen Spannbaum mit {,w}. Also gilt die Inariante für F l+ = F l {,w} und P l+ (sofern Operationen richtig implementiert sind.) Quintessenz: Am Ende ist oder hat F l nur noch eine Komponente, da P l =. Also minimaler Spannbaum wegen Inariante. Termination: Entweder wird die Liste E l kleiner oder P l wird kleiner. Laufzeit:. O(n). Kanten sortieren: O( E log E ) (wird später behandelt), also O( E log V )! F l F w keine Kante dazwischen Abbildung 6: ein Beispiel für F

7 7. Algorithmus Minimaler Spannbaum 8. die Schleife n # Läufe E Müssen {{},...,{n}} zu {{,...,n}} machen. Jedesmal eine Menge weniger, da zwei ereinigt werden. Also n Vereinigungen, egal wie ereinigt wird 6 6 Binärer Baum mit n Blättern hat immer genau n Nicht-Blätter. Für {,w} suchen, ob es Kreis in F induziert, d.h. ob,w innerhalb einer Menge on P oder nicht. W und W w in P ereinigen Bis zu E -mal Genau n -mal. Zeit hängt an der Darstellung on P. Einfache Darstellung: arrayp[,..., n], wobei eine Partition on {,..., n} der Indexmenge dargestellt wird durch: u, in gleicher Menge on P P[u] = P[] (u,... Elemente der Grundmenge = Indizes) Die Kante {u, } induziert Kreis u, in derselben Zusammenhangskomponente on F P[u] = P[] W u und W ereinigen:. a = P[]; b = P[w] // a+b, wenn W u W. for i =,..., n{ if (P[i] = a){ P[i] = b } } Damit Laufzeit der Schleife: 7. insgesamt n O(n) = O(n ) (Es wird n -mal ereinigt.). und. insgesamt O( E ). O(n) insgesamt, wenn P mitgeführt. Also O(n ), wenn E bereits sortiert ist. Darstellung on P durch eine Union-Find-Struktur:

8 86 7 MINIMALER SPANNBAUM UND DATENSTRUKTUREN Darstellung einer Partition P einer Grundmenge (hier klein, d.h. als Indexmenge erwendbar) Für U,W P Union(U,W) soll U,W P durch U W P ersetzen Für u aus der Grundmenge Find(u) soll Namen der Menge U P mit u U geben. (Also es geht nicht ums Finden on u!) Für Kruskal E -mal Find(u) + V -mal Union(u,w) Zeit Ω( E + V ), sogar falls E bereits sortiert ist. 7. Datenstruktur Union-Find-Struktur (a) Jede Menge on P als ein Baum mit Wurzel. P = {{,,, }, {, 6}}, dann etwa Wurzel = Name der Menge. oder auch 6,... Struktur der Bäume egal! 6 (b) Find(u). u in den Bäumen finden // Kein Problem, solange Grundmenge //Indexmenge sein kann. Gehe on u aus hoch bis zur Wurzel. (Namen der) Wurzel ausgeben. Union (u,) // u, sind Namen on Mengen, also Wurzeln. u, in den Bäumen finden. Hänge u unter (oder umgekehrt)

9 7. Datenstruktur Union-Find-Struktur 87 u u oder u (c) Bäume in array(vaterarray): P[,...,n] of...n P[] = Vater on. Aus (a) weiter: Wurzel, deshalb P[] = P[] = 6 Wieder wichtig: Indices = Elemente. Vaterarray für beliebige Bäume Union (u,) P[u]=; Find() while (P[] ){ =P[]; } Ausgabe on. //u, Wurzeln // u hängt unter // O(n) im worst case.... N P = Union(,) in O().... N... N

10 88 7 MINIMALER SPANNBAUM UND DATENSTRUKTUREN... N P =... N... N Union(,) in O().... N P =... N... N Union(,) in O(). das Entstehen langer, dünner Bäume. N. N N... N P = N N N N Find() in Ω (N)

11 7. Algorithmus Union-by-Size N N Union(,); Union(,); Union(,);..., Union (N,)... N Vertauschen der Argumente Find() in O(). Union by Size; kleinere Anzahl nach unten. maximale Tiefe (längster Weg on Wurzel zu Blatt) = log N Beachte: log N zu N = log N wie N zu N. 7. Algorithmus Union-by-Size Union((u,i), (,j)) if (i j){ // i, j # Elemente in den Mengen. // Muss mitgeführt werden, j+i u } else { " umgekehrt\} Union by Size:,,, Union(,),, N, N, Union(,),, N,

12 90 7 MINIMALER SPANNBAUM UND DATENSTRUKTUREN. Union(,N),... N Tiefe Bäume durch Union-by-Size? Vermutung: N Elemente Tiefe log N. Satz 7.: Beginnend mit P = {{}, {},...,{n}} gilt, dass mit Union-by-Size für jeden entstehenden Baum T gilt: Tiefe(T) log T ( T = # Elemente on T = # Knoten on T)

13 7. Algorithmus Union-by-Size 9 Beweis. Induktion über die # der ausgeführten Operationen Union(u,), um T zu bekommen. Induktionsanfang, kein Union(u,) Tiefe(u)= 0 = log ( 0 = ) Induktionsschluss: (u, i) (, j) R = T durch Union (u,) und (, i+j) T = u S R Sei i j, dann. Fall: keine größere Tiefe als orher. Die Behauptung gilt nach Induktionsoraussetzung, da T mehr Elemente hat erst recht.. Fall: Tiefe ergrößert sich echt. Dann aber Tiefe(T) = Tiefe(R) + (log R ) + = log ( R ) T Union by Size. ( x = R x = x+ = R )! Tiefe wird immer nur um größer. Dann mindestens Verdopplung der # Elemnte. S =

14 9 7 MINIMALER SPANNBAUM UND DATENSTRUKTUREN Mit Bäumen und Union-by-Size Laufzeit der Schleife: E -mal Find(u): O( E log V ) (log V... Tiefe der Bäume) n -mal Union(u,): O(n) Rest O( E ) Also insgesamt O( E log V ) Vorne: O( V ). Für dichte Graphen ist E = Ω( ) so keine Verbesserung log V erkennbar. Beispiel 7. (Wegkompression): V i s i u Find() s u hier nachfolgende Finds schneller Wegkompression Find()

15 7. Algorithmus Wegkompression 9 Im Allgemeinen Ω(logN) und O(logN) 7. Algorithmus Wegkompression Find(). auf Keller tun // etwa als array implemntieren. while (P[] ){ (wie Schlange). = P[]; auf Keller tun }. ausgeben;. for (w auf dem Keller){ P[w] = ; //Können auch Schlange, Liste oder } //sonstwas nehmen, da Reihenfolge egal Laufzeit O(log V ) reicht immer, falls Union-by-Size dabei. Es gilt sogar (einer der frühen Höhepunkte der Theorie der Datenstrukturen): n Unions, m Finds mit Union-by-Size und Wegkompression in Zeit O(n + (n + m) log (n)) bei anfangs P = {{}, {},...,{n}}. Falls m Ω(n) ist das O(n + m log (n)). (Beachten Sie die Abhängigkeit der Konstanten: O-Konstante hängt on Ω-Konstante ab!) Was ist log (n)? Die Funktion log

16 9 7 MINIMALER SPANNBAUM UND DATENSTRUKTUREN 0 ( ( ( ( log = 0 log = log = log = + log = log = log 8 = log + = log 6 = log + = log 6 = log 6 = 6 = 6.6 log n Min{s log (s) (n) } ((((()))) log ) = 7 log (s) (n) = log(log(...(log(n))...)) }{{} s mal Kruskal bekommt dann eine Zeit on O( V + E log V ) Fast O( V + E ) bei orsortierten Kanten natürlich nur Ω( V + E ) in jedem Fall. Nachtrag zur Korrektheit on Kruskal:. Durchlauf: Die Kante mit minimalen Kosten wird genommen. Gibt es mehrere, so ist egal, welche. l + -ter Lauf: Die Kante mit minimalen Kosten, die zwei Komponenten erbindet, wird genommen.

17 7. Algorithmus Wegkompression 9 Kosten 0 in F F F l F Spannbaum Austauschen Kosten 0, nicht in F Alle Kanten, die zwei Komponenten erbinden, haben Kosten -0! Beachte: Negatie Kosten sind bei Kruskal kein Problem, nur bei branch-and-bound (orher ergrößern)! ( ) n Binomialkoeffizient für n k 0. k oberste k Faktoren on n! ( ) {}}{ n n! = k (n k) k! = n(n )... (n k + ) k! 0! ( = )! =. n = # Teilmengen on {,...,n} mit genau k Elementen ( k) ( ) ( ) n n n(n ) n = n, =, n k. k Beweis. Auswahlbaum für alle Folgen (a q,...,a k ) mit a i {,...,n}, alle a i erschieden. n Möglichkeiten... n a wählen Jedesmal n Möglichkeiten... n n... n a wählen n n Möglichkeiten n a n k+ Möglichkeiten a k

18 96 7 MINIMALER SPANNBAUM UND DATENSTRUKTUREN Der Baum hat n (k ) {}}{ n(n )... (n k + ) }{{} k Faktoren (nicht k-, da 0,,..., k+ genau k Zahlen) n! = (n k)! Jedes Blatt genau eine Folge (a,...,a k ) Jede Menge aus k Elementen kommt k!-mal or: {a,...,a k } ungeordnet, geordnet als (a,...,a k ), (a,a,...,a k ),...(a k,a k,...,a,a )k! Permutationen. Also n! (n k)!k! = ( n k ) Mengen mit k erschiedenen Elementen. 7. Algorithmus Minimaler Spannbaum nach Prim 96 Eingabe: Wie bei Kruskal Ausgabe: Menge on Kanten F eines minimalen Spannbaumes. Wähle irgendeinen Startknoten r Q = V\{r} // Q enthält immer die Knoten, F = Ø // die noch bearbeitet werden müssen.. while (Q Ø {. M = {{, w} V\ Q, w Q} // M = Menge der Kanten mit // genau einem Knoten in Q. {, w} = eine Kante on minimalen Kosten in M F = F {{, w}}; Q = Q ohne den einen Knoten aus {, w}, der auch zu Q gehört Korrektheit mit der Inariante: Es gibt einen minimalen Spannbaum F F l Q l = l = 0. Gelte die Inariante für l und finde ein l + -ter Lauf der Schleife statt. Sei F F l ein minimaler Spannbaum, der nach Induktionsoraussetzung existiert.

19 7. Algorithmus Minimaler Spannbaum nach Prim V \ Q l r k w w w Q l F l w l w l Werde {,w} im l+-ten Lauf genommen. Falls {,w} F, dann gilt die Inariante auch für l+. Sonst gilt F {{,w}} enthält einen Kreis, der {,w} enthält. Dieser enthält mindestens eine weitere Kante {,w} mit V \ Q l,w Q l. F w w F Es ist K({,w}) K({,w }) gemäß Prim. Also, da F minimal, ist K({,w} = K({,w }). Können in F die Kante {,w } durch {,w} ersetzen und haben immernoch einen minimalen Spannbaum. Damit Inariante für l+. Öaufzeit on Prim: n Läufe durch.. und. einmal O( E ) reicht sicherlich, da E V. Also O( V E ), bis O(n ) bei V = n. Bessere Laufzeit durch bessere Verwaltung on Q. Maßgeblich dafür, ob w Q in den Baum aufgenommen wird, sind die minimalen Kosten einer Kante(!) {,w} für Q. Also array key[... n] of real mit der Intention: Für alle w Q ist key[w] = min. Kosten einer Kante {,w}, wobei Q. (key[w] =, gdw. keine solche Kante existiert.) Außerdem array ka[,..., n] of {,..., n} mit: Für alle w Q ka[w] = {,w} ist eine Kante minimaler Kosten mit Q

20 98 7 MINIMALER SPANNBAUM UND DATENSTRUKTUREN Wir werden Q mit einer Datenstruktur für die priority queue (Vorrangwartesschlange) implementieren: Speichert Menge on Elementen, on denen jedes einen Schlüsselwert hat (keine Eindeutigkeitsforderung). Operation Min gibt uns (ein) Elemnet mit minimalem Schlüsselwert. DeleteMin löscht ein Element mit minimalem Schlüsselwert. Insert(, s) = Element mit Schlüsselwert s einfügen. Wie kann man eine solche Datenstruktur implementieren?. Möglichkeit: etwa als Array Min Q... 8 n Indices = Elemente, Einträge in Q = Schlüsselwerte, Sonderwert (etwa - ) bei nicht orhanden. Zeiten: Insert(,s) in O() (sofern keine gleichen Elemente mehrfach auftreten) Min in O() DeleteMin - O() fürs Finden des zu löschenden Elementes, dann aber O(n), um ein neues Minimum zu ermitteln.. Möglichkeit: Darstellung als Heap. Heap = fast ollständiger binärer Baum, dessen Elemente (= Knoten) bezüglich Funktionswerten key[j] nach oben hin kleiner werden. /9 00/9 Element /7 7/8 /0 0/ / 0/ / Wert Key[] = /00 Tiefe N, dann Innere: N Blätter: N N+ fast ollständig

21 7. Algorithmus Minimaler Spannbaum nach Prim Heapeigenschaft: für alle u,,u Vorfahr on = key[u] key[] Beispiel Minimum löschen: Nur Werte: Key[I]: kleinster einer on den beiden zweitkleinster letztes Element (nicht größtes) 0 ertauschen mit kleinerem Kind weg neues Minimum 0 00 Beispiel Einfügen Element mit Wert einfügen

22 00 7 MINIMALER SPANNBAUM UND DATENSTRUKTUREN letzter Platz Aufsteigen Priority Queue mit Heap, sagen wir Q. Min {. Gib Element der Wurzel aus } O() Deletemin{. Nimm letztes Element, setze es auf Wurzel x:=wurzel(-element). While Key[x] Key[linker Sohn on x] oder rechter Sohn {tausche x mit kleinerem Sohn} } N Elemente, O(logN), da maximal O(logN) Durchläufe Insert(,s){//Key[]=s.. Tue als letztes Element in den Heap.. While Key[Vater on ] Key[] {ertausche mit seinem Vater} } N Elemente O(logN) Vergleich der Möglichkeiten der Priority Qeue

23 7. Algorithmus Minimaler Spannbaum nach Prim 96 0 Min Deletemin Insert Element finden Heap log N logn N Array o. Liste N(!) (Array), N(Liste) Heap als Array Q[,...,N] Q[] Q[], Q[] Q[],... Q[7] Q[8],... Q[] 8 Stück in Tiefe 0 Vater I{// I Index aus,..., N if (I+){ Gebe aus} Linker Sohn I I Rechter Sohn I+ Abschließendes Beispiel 00/ Key[00]= /7 0/00 /9 /8 /00 Array Q Q[] = 00 Key[00] = Q[] = Key[] = 7 Q[] = 0 Key[0 = 00 Q[] = Q[] = Q[6] =. wenn Elemente nur einmal Suchen nach Element oder Schlüssel wird nicht (!) unterstützt.

24 0 7 MINIMALER SPANNBAUM UND DATENSTRUKTUREN 7.6 Algorithmus (Prim mit Q in heap). Wähle Startknoten r. for each Adj[r]{ key[]=k({r,}); kante[]=r} Für alle übrigen V{ key[]= ; kante[]= } Füge V\{r} mit Schlüsselwerten key[] in heap Q ein.. while Q Ø{. w = Min; DeleteMin Q ; F = F {{kante[w],w}}. for each u Adj[w] Q{ if K({u,w})<key[u]{ key[u] = k({u,w}); kante[u] = w; Q anpassen} } } Korrektheit mit zusätzlicher Inariante: Für alle w Q l key l [w] = minimale Kosten einer Kante {, w} für Q l } key l [w] =, wenn eine solche Kante nicht existiert. Laufzeit. O(n) + O(n logn) für das Füllen on Q. (Füllen on Q in O(n) - interessante Übungsaufgabe). n Läufe. Einmal O(logn), insgesamt O(n logn). Insgesamt O( E ) + E -mal Anpassen on Q. Anpassen on Heap Q Operation Decreasekey(,s) s < key[], neuer Schlüssel

25 7.6 Algorithmus (Prim mit Q in heap) 0 00/ Key[00]= /7 0/00 /9 /8 /00 Decreasekey(,s). Finde Element in Q //nicht on Q unterstützt!. while key[vater on ] s tausche mit Vater Laufzeit Deckey(,s):. O(logN). O(N)(!!). zum Finden: Index drüberlegen Direkte Adressen: Ind[] =, Ind[] =, Ind[]= 6, Ind[00] = Finden in O() Falls Grundmenge zu groß, dann Suchbaum: Finden O(logN) Falls direkte Adressen dabei: Einmaliges Anpassen on Q (und Index) O(log V ) Dann Prim insgesamt O( E log V ) (Beachte orher O( E V )) (wie Kruskal mit Union by Size.)

Effiziente Algorithmen und Datenstrukturen I. Kapitel 9: Minimale Spannbäume

Effiziente Algorithmen und Datenstrukturen I. Kapitel 9: Minimale Spannbäume Effiziente Algorithmen und Datenstrukturen I Kapitel 9: Minimale Spannbäume Christian Scheideler WS 008 19.0.009 Kapitel 9 1 Minimaler Spannbaum Zentrale Frage: Welche Kanten muss ich nehmen, um mit minimalen

Mehr

Graphen: Datenstrukturen und Algorithmen

Graphen: Datenstrukturen und Algorithmen Graphen: Datenstrukturen und Algorithmen Ein Graph G = (V, E) wird durch die Knotenmenge V und die Kantenmenge E repräsentiert. G ist ungerichtet, wenn wir keinen Start- und Zielpunkt der Kanten auszeichnen.

Mehr

4 Greedy-Algorithmen (gierige Algorithmen)

4 Greedy-Algorithmen (gierige Algorithmen) Greedy-Algorithmen (gierige Algorithmen) Greedy-Algorithmen werden oft für die exakte oder approximative Lösung von Optimierungsproblemen verwendet. Typischerweise konstruiert ein Greedy-Algorithmus eine

Mehr

S=[n] Menge von Veranstaltungen J S kompatibel mit maximaler Größe J

S=[n] Menge von Veranstaltungen J S kompatibel mit maximaler Größe J Greedy-Strategie Definition Paradigma Greedy Der Greedy-Ansatz verwendet die Strategie 1 Top-down Auswahl: Bestimme in jedem Schritt eine lokal optimale Lösung, so dass man eine global optimale Lösung

Mehr

3.1 Konstruktion von minimalen Spannbäumen Es gibt zwei Prinzipien für die Konstruktion von minimalen Spannbäumen (Tarjan): blaue Regel rote Regel

3.1 Konstruktion von minimalen Spannbäumen Es gibt zwei Prinzipien für die Konstruktion von minimalen Spannbäumen (Tarjan): blaue Regel rote Regel 3.1 Konstruktion von minimalen Spannbäumen Es gibt zwei Prinzipien für die Konstruktion von minimalen Spannbäumen (Tarjan): blaue Regel rote Regel EADS 3.1 Konstruktion von minimalen Spannbäumen 16/36

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

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

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

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

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

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

Suchen und Sortieren Sortieren. Heaps

Suchen und Sortieren Sortieren. Heaps Suchen und Heaps (Folie 245, Seite 63 im Skript) 3 7 21 10 17 31 49 28 14 35 24 42 38 Definition Ein Heap ist ein Binärbaum, der die Heapeigenschaft hat (Kinder sind größer als der Vater), bis auf die

Mehr

Babeș-Bolyai Universität Cluj Napoca Fakultät für Mathematik und Informatik Grundlagen der Programmierung MLG5005. Paradigmen im Algorithmenentwurf

Babeș-Bolyai Universität Cluj Napoca Fakultät für Mathematik und Informatik Grundlagen der Programmierung MLG5005. Paradigmen im Algorithmenentwurf Babeș-Bolyai Universität Cluj Napoca Fakultät für Mathematik und Informatik Grundlagen der Programmierung MLG5005 Paradigmen im Algorithmenentwurf Problemlösen Problem definieren Algorithmus entwerfen

Mehr

3.2 Binäre Suche. Usr/local/www/ifi/fk/menschen/schmid/folien/infovk.ppt 1

3.2 Binäre Suche. Usr/local/www/ifi/fk/menschen/schmid/folien/infovk.ppt 1 3.2 Binäre Suche Beispiel 6.5.1: Intervallschachtelung (oder binäre Suche) (Hier ist n die Anzahl der Elemente im Feld!) Ein Feld A: array (1..n) of Integer sei gegeben. Das Feld sei sortiert, d.h.: A(i)

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

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

Codierung, Codes (variabler Länge)

Codierung, Codes (variabler Länge) Codierung, Codes (variabler Länge) A = {a, b, c,...} eine endliche Menge von Nachrichten (Quellalphabet) B = {0, 1} das Kanalalphabet Eine (binäre) Codierung ist eine injektive Abbildung Φ : A B +, falls

Mehr

Anmerkungen zur Übergangsprüfung

Anmerkungen zur Übergangsprüfung DM11 Slide 1 Anmerkungen zur Übergangsprüfung Aufgabeneingrenzung Aufgaben des folgenden Typs werden wegen ihres Schwierigkeitsgrads oder wegen eines ungeeigneten fachlichen Schwerpunkts in der Übergangsprüfung

Mehr

WS 2009/10. Diskrete Strukturen

WS 2009/10. Diskrete Strukturen WS 2009/10 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/ws0910

Mehr

1. Einfach verkettete Liste unsortiert 2. Einfach verkettete Liste sortiert 3. Doppelt verkettete Liste sortiert

1. Einfach verkettete Liste unsortiert 2. Einfach verkettete Liste sortiert 3. Doppelt verkettete Liste sortiert Inhalt Einführung 1. Arrays 1. Array unsortiert 2. Array sortiert 3. Heap 2. Listen 1. Einfach verkettete Liste unsortiert 2. Einfach verkettete Liste sortiert 3. Doppelt verkettete Liste sortiert 3. Bäume

Mehr

- k Maximalwerte aus Menge mit n >> k Elementen (Rangfolgebestimmung von Suchmaschinen!) Die typische Operationen:

- k Maximalwerte aus Menge mit n >> k Elementen (Rangfolgebestimmung von Suchmaschinen!) Die typische Operationen: 6 Partiell geordnete binäre Bäume: Heap (Haufen) Motivation für manchen Anwendungen nur partielle Ordnung der Elemente statt vollständiger nötig, z.b. - Prioritätsschlange: nur das minimale (oder maximale)

Mehr

Kap. 4.4: B-Bäume Kap. 4.5: Dictionaries in der Praxis

Kap. 4.4: B-Bäume Kap. 4.5: Dictionaries in der Praxis Kap. 4.4: B-Bäume Kap. 4.5: Dictionaries in der Praxis Professor Dr. Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund 13./14. VO DAP2 SS 2009 2./4. Juni 2009 1 2. Übungstest

Mehr

AVL-Bäume Analyse. Theorem Ein AVL-Baum der Höhe h besitzt zwischen F h und 2 h 1 viele Knoten. Definition Wir definieren die nte Fibonaccizahl:

AVL-Bäume Analyse. Theorem Ein AVL-Baum der Höhe h besitzt zwischen F h und 2 h 1 viele Knoten. Definition Wir definieren die nte Fibonaccizahl: AVL-Bäume Analyse (Folie 85, Seite 39 im Skript) Theorem Ein AVL-Baum der Höhe h besitzt zwischen F h und 2 h 1 viele Knoten. Definition Wir definieren die nte Fibonaccizahl: 0 falls n = 0 F n = 1 falls

Mehr

Sortierte Folgen 250

Sortierte Folgen 250 Sortierte Folgen 250 Sortierte Folgen: he 1,...,e n i mit e 1 apple applee n kennzeichnende Funktion: M.locate(k):= addressof min{e 2 M : e k} Navigations Datenstruktur 2 3 5 7 11 13 17 19 00 Annahme:

Mehr

5.2 Das All-Pairs-Shortest-Paths-Problem (APSP-Problem) Kürzeste Wege zwischen allen Knoten. Eingabe: Gerichteter Graph G =(V, E, c)

5.2 Das All-Pairs-Shortest-Paths-Problem (APSP-Problem) Kürzeste Wege zwischen allen Knoten. Eingabe: Gerichteter Graph G =(V, E, c) 5.2 Das All-Pairs-Shortest-Paths-Problem (APSP-Problem) Kürzeste Wege zwischen allen Knoten. Eingabe: Gerichteter Graph G =(V, E, c) mit V = {1,...,n} und E {(v, w) 1 apple v, w apple n, v 6= w}. c : E!

Mehr

Literatur. Dominating Set (DS) Dominating Sets in Sensornetzen. Problem Minimum Dominating Set (MDS)

Literatur. Dominating Set (DS) Dominating Sets in Sensornetzen. Problem Minimum Dominating Set (MDS) Dominating Set 59 Literatur Dominating Set Grundlagen 60 Dominating Set (DS) M. V. Marathe, H. Breu, H.B. Hunt III, S. S. Ravi, and D. J. Rosenkrantz: Simple Heuristics for Unit Disk Graphs. Networks 25,

Mehr

Das Briefträgerproblem

Das Briefträgerproblem Das Briefträgerproblem Paul Tabatabai 30. Dezember 2011 Inhaltsverzeichnis 1 Problemstellung und Modellierung 2 1.1 Problem................................ 2 1.2 Modellierung.............................

Mehr

Grundlagen der Programmierung 2. Bäume

Grundlagen der Programmierung 2. Bäume Grundlagen der Programmierung 2 Bäume Prof. Dr. Manfred Schmidt-Schauÿ Künstliche Intelligenz und Softwaretechnologie 24. Mai 2006 Graphen Graph: Menge von Knoten undzugehörige (gerichtete oder ungerichtete)

Mehr

10 Dynamische Programmierung

10 Dynamische Programmierung 137 Dynamische Programmierung Das Prinzip der Dynamischen Programmierung wird häufig bei Fragestellungen auf Worten angewendet..1 Längste gemeinsame Teilfolge Wir betrachten Worte der rt w = a 1 a 2 a

Mehr

Der linke Teilbaum von v enthält nur Schlüssel < key(v) und der rechte Teilbaum enthält nur Schlüssel > key(v)

Der linke Teilbaum von v enthält nur Schlüssel < key(v) und der rechte Teilbaum enthält nur Schlüssel > key(v) Ein Baum T mit Knotengraden 2, dessen Knoten Schlüssel aus einer total geordneten Menge speichern, ist ein binärer Suchbaum (BST), wenn für jeden inneren Knoten v von T die Suchbaumeigenschaft gilt: Der

Mehr

Name: Seite 2. Beantworten Sie die Fragen in den Aufgaben 1 und 2 mit einer kurzen, prägnanten Antwort.

Name: Seite 2. Beantworten Sie die Fragen in den Aufgaben 1 und 2 mit einer kurzen, prägnanten Antwort. Name: Seite 2 Beantworten Sie die Fragen in den Aufgaben 1 und 2 mit einer kurzen, prägnanten Antwort. Aufgabe 1 (8 Punkte) 1. Wie viele negative Zahlen (ohne 0) lassen sich im 4-Bit-Zweierkomplement darstellen?

Mehr

Datenstrukturen. Mariano Zelke. Sommersemester 2012

Datenstrukturen. Mariano Zelke. Sommersemester 2012 Datenstrukturen Mariano Zelke Sommersemester 2012 Mathematische Grundlagen: Das Handwerkszeug Mariano Zelke Datenstrukturen 2/26 Formeln: n - i = n (n+1) 2 und - i=1 k i=0 a i = ak+1 1 a 1, falls a 1 Rechnen

Mehr

Vorlesung 3 MINIMALE SPANNBÄUME

Vorlesung 3 MINIMALE SPANNBÄUME Vorlesung 3 MINIMALE SPANNBÄUME 72 Aufgabe! Szenario: Sie arbeiten für eine Firma, die ein Neubaugebiet ans Netz (Wasser, Strom oder Kabel oder...) anschließt! Ziel: Alle Haushalte ans Netz bringen, dabei

Mehr

EndTermTest PROGALGO WS1516 A

EndTermTest PROGALGO WS1516 A EndTermTest PROGALGO WS1516 A 14.1.2016 Name:................. UID:.................. PC-Nr:................ Beachten Sie: Lesen Sie erst die Angaben aufmerksam, genau und vollständig. Die Verwendung von

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

Fully dynamic algorithms for the single source shortest path problem.

Fully dynamic algorithms for the single source shortest path problem. Fully dynamic algorithms for the single source shortest path problem. Michael Baur Wintersemester 2001/2002 Zusammenfassung Im folgenden Paper werde ich Algorithmen für das dynamische Kürzeste-Wege-Problem

Mehr

Entscheidungsbäume. Definition Entscheidungsbaum. Frage: Gibt es einen Sortieralgorithmus mit o(n log n) Vergleichen?

Entscheidungsbäume. Definition Entscheidungsbaum. Frage: Gibt es einen Sortieralgorithmus mit o(n log n) Vergleichen? Entscheidungsbäume Frage: Gibt es einen Sortieralgorithmus mit o(n log n) Vergleichen? Definition Entscheidungsbaum Sei T ein Binärbaum und A = {a 1,..., a n } eine zu sortierenden Menge. T ist ein Entscheidungsbaum

Mehr

Algorithmen II Vorlesung am 15.11.2012

Algorithmen II Vorlesung am 15.11.2012 Algorithmen II Vorlesung am 15.11.2012 Kreisbasen, Matroide & Algorithmen INSTITUT FÜR THEORETISCHE INFORMATIK PROF. DR. DOROTHEA WAGNER KIT Universität des Landes Baden-Württemberg und Algorithmen nationales

Mehr

Programmiertechnik II

Programmiertechnik II Analyse von Algorithmen Algorithmenentwurf Algorithmen sind oft Teil einer größeren Anwendung operieren auf Daten der Anwendung, sollen aber unabhängig von konkreten Typen sein Darstellung der Algorithmen

Mehr

1. Grundlagen... 2. 2. Sortieren... 6. 1.1. Vertauschen... 13. 1.2. Selektion... 16. 1.3. Einfügen... 19. 1.4. Quicksort... 22. 3. Suchen...

1. Grundlagen... 2. 2. Sortieren... 6. 1.1. Vertauschen... 13. 1.2. Selektion... 16. 1.3. Einfügen... 19. 1.4. Quicksort... 22. 3. Suchen... Suchen und Sortieren In diesem Kapitel behandeln wir Algorithmen zum Suchen und Sortieren Inhalt 1. Grundlagen... 2 2. Sortieren... 6 1.1. Vertauschen... 13 1.2. Selektion... 16 1.3. Einfügen... 19 1.4.

Mehr

Laufzeit und Komplexität

Laufzeit und Komplexität Laufzeit und Komplexität Laufzeit eines Algorithmus Benchmarking versus Analyse Abstraktion Rechenzeit, Anzahl Schritte Bester, Mittlerer, Schlechtester Fall Beispiel: Lineare Suche Komplexitätsklassen

Mehr

Bäume. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 10: Collections 4. Inhalt. Bäume. Einführung. Bäume.

Bäume. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 10: Collections 4. Inhalt. Bäume. Einführung. Bäume. Universität Osnabrück 1 Bäume 3 - Objektorientierte Programmierung in Java Vorlesung 10: Collections 4 Einführung Bäume sind verallgemeinerte Listenstrukturen Lineare Liste Jedes Element hat höchstens

Mehr

4. Jeder Knoten hat höchstens zwei Kinder, ein linkes und ein rechtes.

4. Jeder Knoten hat höchstens zwei Kinder, ein linkes und ein rechtes. Binäre Bäume Definition: Ein binärer Baum T besteht aus einer Menge von Knoten, die durch eine Vater-Kind-Beziehung wie folgt strukturiert ist: 1. Es gibt genau einen hervorgehobenen Knoten r T, die Wurzel

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

Bäume und Wälder. Bäume und Wälder 1 / 37

Bäume und Wälder. Bäume und Wälder 1 / 37 Bäume und Wälder Bäume und Wälder 1 / 37 Bäume Ein (ungerichteter) Baum ist ein ungerichteter Graph G = (V, E), der zusammenhängend ist und keine Kreise enthält. Diese Graphen sind Bäume: Diese aber nicht:

Mehr

15 Optimales Kodieren

15 Optimales Kodieren 15 Optimales Kodieren Es soll ein optimaler Kodierer C(T ) entworfen werden, welcher eine Information (z.b. Text T ) mit möglichst geringer Bitanzahl eindeutig überträgt. Die Anforderungen an den optimalen

Mehr

Vorlesung Algorithmische Geometrie. Streckenschnitte. Martin Nöllenburg 19.04.2011

Vorlesung Algorithmische Geometrie. Streckenschnitte. Martin Nöllenburg 19.04.2011 Vorlesung Algorithmische Geometrie LEHRSTUHL FÜR ALGORITHMIK I INSTITUT FÜR THEORETISCHE INFORMATIK FAKULTÄT FÜR INFORMATIK Martin Nöllenburg 19.04.2011 Überlagern von Kartenebenen Beispiel: Gegeben zwei

Mehr

Undirected Single-Source Shortest Paths with Positive Integer Weights in Linear Time

Undirected Single-Source Shortest Paths with Positive Integer Weights in Linear Time Universität Konstanz Mathematisch-naturwissenschaftliche Sektion Fachbereich Mathematik und Statistik Wintersemester 2001/02 Mikkel Thorup: Undirected Single-Source Shortest Paths with Positive Integer

Mehr

Informatik II Greedy-Algorithmen

Informatik II Greedy-Algorithmen 7/7/06 lausthal Erinnerung: Dynamische Programmierung Informatik II reedy-algorithmen. Zachmann lausthal University, ermany zach@in.tu-clausthal.de Zusammenfassung der grundlegenden Idee: Optimale Sub-Struktur:

Mehr

Algorithmen & Datenstrukturen 1. Klausur

Algorithmen & Datenstrukturen 1. Klausur Algorithmen & Datenstrukturen 1. Klausur 7. Juli 2010 Name Matrikelnummer Aufgabe mögliche Punkte erreichte Punkte 1 35 2 30 3 30 4 15 5 40 6 30 Gesamt 180 1 Seite 2 von 14 Aufgabe 1) Programm Analyse

Mehr

1. Musterlösung. Problem 1: Average-case-Laufzeit vs. Worst-case-Laufzeit

1. Musterlösung. Problem 1: Average-case-Laufzeit vs. Worst-case-Laufzeit Universität Karlsruhe Algorithmentechnik Fakultät für Informatik WS 06/07 ITI Wagner Musterlösung Problem : Average-case-Laufzeit vs Worst-case-Laufzeit pt (a) Folgender Algorithmus löst das Problem der

Mehr

Algorithmen und Datenstrukturen 2

Algorithmen und Datenstrukturen 2 Algorithmen und Datenstrukturen 2 Sommersemester 2007 4. Vorlesung Peter F. Stadler Universität Leipzig Institut für Informatik studla@bioinf.uni-leipzig.de Traversierung Durchlaufen eines Graphen, bei

Mehr

Algorithmen und Datenstrukturen (WS 2007/08) 63

Algorithmen und Datenstrukturen (WS 2007/08) 63 Kapitel 6 Graphen Beziehungen zwischen Objekten werden sehr oft durch binäre Relationen modelliert. Wir beschäftigen uns in diesem Kapitel mit speziellen binären Relationen, die nicht nur nur besonders

Mehr

w a is die Anzahl der Vorkommen von a in w Beispiel: abba a = 2

w a is die Anzahl der Vorkommen von a in w Beispiel: abba a = 2 1 2 Notation für Wörter Grundlagen der Theoretischen Informatik Till Mossakowski Fakultät für Informatik Otto-von-Guericke Universität Magdeburg w a is die Anzahl der Vorkommen von a in w Beispiel: abba

Mehr

Approximationsalgorithmen: Klassiker I. Kombinatorische Optimierung Absolute Gütegarantie Graph-Coloring Clique Relative Gütegarantie Scheduling

Approximationsalgorithmen: Klassiker I. Kombinatorische Optimierung Absolute Gütegarantie Graph-Coloring Clique Relative Gütegarantie Scheduling Approximationsalgorithmen: Klassiker I Kombinatorische Optimierung Absolute Gütegarantie Graph-Coloring Clique Relative Gütegarantie Scheduling VO Approximationsalgorithmen WiSe 2011/12 Markus Chimani

Mehr

Breiten- und Tiefensuche in Graphen

Breiten- und Tiefensuche in Graphen Breiten- und Tiefensuche in Graphen Inhalt Theorie. Graphen. Die Breitensuche in der Theorie am Beispiel eines ungerichteten Graphen. Die Tiefensuche in der Theorie am Beispiel eines gerichteten Graphen

Mehr

Kap. 4.2: Binäre Suchbäume

Kap. 4.2: Binäre Suchbäume Kap. 4.2: Binäre Suchbäume Professor Dr. Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund 11. VO DAP2 SS 2009 26. Mai 2009 1 Zusätzliche Lernraumbetreuung Morteza Monemizadeh:

Mehr

Abschnitt: Algorithmendesign und Laufzeitanalyse

Abschnitt: Algorithmendesign und Laufzeitanalyse Abschnitt: Algorithmendesign und Laufzeitanalyse Definition Divide-and-Conquer Paradigma Divide-and-Conquer Algorithmen verwenden die Strategien 1 Divide: Teile das Problem rekursiv in Subproblem gleicher

Mehr

Informatik II Bäume. Beispiele. G. Zachmann Clausthal University, Germany zach@in.tu-clausthal.de. Stammbaum. Stammbaum. Stammbaum

Informatik II Bäume. Beispiele. G. Zachmann Clausthal University, Germany zach@in.tu-clausthal.de. Stammbaum. Stammbaum. Stammbaum lausthal Beispiele Stammbaum Informatik II. Zachmann lausthal University, ermany zach@in.tu-clausthal.de. Zachmann Informatik - SS 06 Stammbaum Stammbaum / Parse tree, Rekursionsbaum Parse tree, Rekursionsbaum

Mehr

Algorithmen und Datenstrukturen 2

Algorithmen und Datenstrukturen 2 Algorithmen und Datenstrukturen 2 Sommersemester 2006 3. Vorlesung Peter F. Stadler Universität Leipzig Institut für Informatik studla@bioinf.uni-leipzig.de Algorithmen für Graphen Fragestellungen: Suche

Mehr

Lernziele: Ausgleichstechniken für binäre Bäume verstehen und einsetzen können.

Lernziele: Ausgleichstechniken für binäre Bäume verstehen und einsetzen können. 6. Bäume Lernziele 6. Bäume Lernziele: Definition und Eigenschaften binärer Bäume kennen, Traversierungsalgorithmen für binäre Bäume implementieren können, die Bedeutung von Suchbäumen für die effiziente

Mehr

Sortierverfahren für Felder (Listen)

Sortierverfahren für Felder (Listen) Sortierverfahren für Felder (Listen) Generell geht es um die Sortierung von Daten nach einem bestimmten Sortierschlüssel. Es ist auch möglich, daß verschiedene Daten denselben Sortierschlüssel haben. Es

Mehr

Suchen und Sortieren (Die klassischen Algorithmen)

Suchen und Sortieren (Die klassischen Algorithmen) Suchen und Sortieren (Die klassischen Algorithmen) Lineare Suche und Binäre Suche (Vorbedingung und Komplexität) Sortieralgorithmen (allgemein) Direkte Sortierverfahren (einfach aber langsam) Schnelle

Mehr

HINWEISE ZUR ADS-KLAUSUR SS06 für BACHELOR (für beide Termine)

HINWEISE ZUR ADS-KLAUSUR SS06 für BACHELOR (für beide Termine) HINWEISE ZUR ADS-KLAUSUR SS06 für BACHELOR (für beide Termine) Für DIPLOMER gelten, wie bereits bekannt, die Bedingungen und Inhalte der Klausuren aus SS04 bzw. WS04/05 weiter klicken sie sich auf unserer

Mehr

Programmiertechnik II

Programmiertechnik II Bäume Symboltabellen Suche nach Werten (items), die unter einem Schlüssel (key) gefunden werden können Bankkonten: Schlüssel ist Kontonummer Flugreservierung: Schlüssel ist Flugnummer, Reservierungsnummer,...

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. äume / Graphen 5. Hashing 6. Algorithmische Geometrie 4/5, olie 1 2014 Prof. Steffen Lange - HDa/bI

Mehr

Algorithmen und Datenstrukturen Balancierte Suchbäume

Algorithmen und Datenstrukturen Balancierte Suchbäume Algorithmen und Datenstrukturen Balancierte Suchbäume Matthias Teschner Graphische Datenverarbeitung Institut für Informatik Universität Freiburg SS 12 Überblick Einführung Einfügen und Löschen Einfügen

Mehr

Suchbäume. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Suchbäume. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung Suchbäume Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik: http://www.pst.ifi.lmu.de/lehre/wise-13-14/infoeinf WS13/14 Action required now 1. Smartphone: installiere die App "socrative

Mehr

Tutorium Algorithmen & Datenstrukturen

Tutorium Algorithmen & Datenstrukturen June 16, 2010 Binärer Baum Binärer Baum enthält keine Knoten (NIL) besteht aus drei disjunkten Knotenmengen: einem Wurzelknoten, einem binären Baum als linken Unterbaum und einem binären Baum als rechten

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

Was bisher geschah. deklarative Programmierung. funktionale Programmierung (Haskell):

Was bisher geschah. deklarative Programmierung. funktionale Programmierung (Haskell): Was bisher geschah deklarative Programmierung funktional: Programm: Menge von Termgleichungen, Term Auswertung: Pattern matsching, Termumformungen logisch: Programm: Menge von Regeln (Horn-Formeln), Formel

Mehr

6-1 A. Schwill Grundlagen der Programmierung II SS 2005

6-1 A. Schwill Grundlagen der Programmierung II SS 2005 6-1 A. Schwill Grundlagen der Programmierung II SS 25 6. Suchen Suchen = Tätigkeit, in einem vorgegebenen Datenbestand alle Objekte zu ermitteln, die eine best. Bedingung, das Suchkriterium, erfüllen und

Mehr

Kapitel 6. Komplexität von Algorithmen. Xiaoyi Jiang Informatik I Grundlagen der Programmierung

Kapitel 6. Komplexität von Algorithmen. Xiaoyi Jiang Informatik I Grundlagen der Programmierung Kapitel 6 Komplexität von Algorithmen 1 6.1 Beurteilung von Algorithmen I.d.R. existieren viele Algorithmen, um dieselbe Funktion zu realisieren. Welche Algorithmen sind die besseren? Betrachtung nicht-funktionaler

Mehr

Kostenmaße. F3 03/04 p.188/395

Kostenmaße. F3 03/04 p.188/395 Kostenmaße Bei der TM nur ein Kostenmaß: Ein Schritt (Konfigurationsübergang) kostet eine Zeiteinheit; eine Bandzelle kostet eine Platzeinheit. Bei der RAM zwei Kostenmaße: uniformes Kostenmaß: (wie oben);

Mehr

Einführung in die Informatik

Einführung in die Informatik Einführung in die Informatik Jochen Hoenicke Software Engineering Albert-Ludwigs-University Freiburg Sommersemester 2014 Jochen Hoenicke (Software Engineering) Einführung in die Informatik Sommersemester

Mehr

Gliederung. Definition Wichtige Aussagen und Sätze Algorithmen zum Finden von Starken Zusammenhangskomponenten

Gliederung. Definition Wichtige Aussagen und Sätze Algorithmen zum Finden von Starken Zusammenhangskomponenten Gliederung Zusammenhang von Graphen Stark Zusammenhängend K-fach Zusammenhängend Brücken Definition Algorithmus zum Finden von Brücken Anwendung Zusammenhangskomponente Definition Wichtige Aussagen und

Mehr

Fibonacci-Heaps und Amortisierte Analyse

Fibonacci-Heaps und Amortisierte Analyse Kapitel 6 Fibonacci-Heaps und Amortisierte Analyse Der Fibonacci-Heap dient als eine Implementierung für die abstrakte Datenstruktur Priority Queue und wurde von Michael L. Fredman and Robert E. Tarjan

Mehr

Einführung in die Informatik 1

Einführung in die Informatik 1 Einführung in die Informatik 1 Datenorganisation und Datenstrukturen Sven Kosub AG Algorithmik/Theorie komplexer Systeme Universität Konstanz E 202 Sven.Kosub@uni-konstanz.de Sprechstunde: Freitag, 12:30-14:00

Mehr

Informatik II. PVK Part1 Severin Wischmann wiseveri@student.ethz.ch n.ethz.ch/~wiseveri

Informatik II. PVK Part1 Severin Wischmann wiseveri@student.ethz.ch n.ethz.ch/~wiseveri Informatik II PVK Part1 Severin Wischmann wiseveri@student.ethz.ch n.ethz.ch/~wiseveri KAUM JAVA Kaum Java Viel Zeit wird für Java-spezifisches Wissen benützt Wenig wichtig für Prüfung Letztjähriger Assistent

Mehr

Algorithmen und Datenstrukturen SS09

Algorithmen und Datenstrukturen SS09 Foliensatz 8 Michael Brinkmeier Technische Universität Ilmenau Institut für Theoretische Informatik Sommersemester 29 TU Ilmenau Seite / 54 Binärbäume TU Ilmenau Seite 2 / 54 Binäre Bäume Bäume und speziell

Mehr

Theoretische Grundlagen der Informatik

Theoretische Grundlagen der Informatik Theoretische Grundlagen der Informatik Vorlesung am 12.01.2012 INSTITUT FÜR THEORETISCHE 0 KIT 12.01.2012 Universität des Dorothea Landes Baden-Württemberg Wagner - Theoretische und Grundlagen der Informatik

Mehr

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen Binäre Bäume 1. Allgemeines Binäre Bäume werden grundsätzlich verwendet, um Zahlen der Größe nach, oder Wörter dem Alphabet nach zu sortieren. Dem einfacheren Verständnis zu Liebe werde ich mich hier besonders

Mehr

Die Komplexitätsklassen P und NP

Die Komplexitätsklassen P und NP Die Komplexitätsklassen P und NP Prof. Dr. Berthold Vöcking Lehrstuhl Informatik 1 Algorithmen und Komplexität RWTH Aachen 3. Dezember 2009 Berthold Vöcking, Informatik 1 () Vorlesung Berechenbarkeit und

Mehr

Programmieren I. Kapitel 7. Sortieren und Suchen

Programmieren I. Kapitel 7. Sortieren und Suchen Programmieren I Kapitel 7. Sortieren und Suchen Kapitel 7: Sortieren und Suchen Ziel: Varianten der häufigsten Anwendung kennenlernen Ordnung Suchen lineares Suchen Binärsuche oder Bisektionssuche Sortieren

Mehr

9.4 Binäre Suchbäume. Xiaoyi Jiang Informatik II Datenstrukturen und Algorithmen

9.4 Binäre Suchbäume. Xiaoyi Jiang Informatik II Datenstrukturen und Algorithmen 9.4 Binäre Suchbäume Erweiterung: Einfügen an der Wurzel Standardimplementierung: Der neue Schlüssel wird am Ende des Suchpfades angefügt (natürlich, weil zuerst festgestellt werden muss, ob der Schlüssel

Mehr

1 topologisches Sortieren

1 topologisches Sortieren Wolfgang Hönig / Andreas Ecke WS 09/0 topologisches Sortieren. Überblick. Solange noch Knoten vorhanden: a) Suche Knoten v, zu dem keine Kante führt (Falls nicht vorhanden keine topologische Sortierung

Mehr

Vorkurs Informatik WiSe 15/16

Vorkurs Informatik WiSe 15/16 Konzepte der Informatik Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe, 16.10.2015 Technische Universität Braunschweig, IPS Inhaltsverzeichnis Suchen Binärsuche Binäre Suchbäume 16.10.2015 Dr. Werner

Mehr

Vorlesung 04.12.2006: Binäre Entscheidungsdiagramme (BDDs) Dr. Carsten Sinz

Vorlesung 04.12.2006: Binäre Entscheidungsdiagramme (BDDs) Dr. Carsten Sinz Vorlesung 04.12.2006: Binäre Entscheidungsdiagramme (BDDs) Dr. Carsten Sinz Datenstruktur BDD 1986 von R. Bryant vorgeschlagen zur Darstellung von aussagenlogischen Formeln (genauer: Booleschen Funktionen)

Mehr

Datenbankanwendung. Prof. Dr.-Ing. Sebastian Michel TU Kaiserslautern. Wintersemester 2014/15. smichel@cs.uni-kl.de

Datenbankanwendung. Prof. Dr.-Ing. Sebastian Michel TU Kaiserslautern. Wintersemester 2014/15. smichel@cs.uni-kl.de Datenbankanwendung Wintersemester 2014/15 Prof. Dr.-Ing. Sebastian Michel TU Kaiserslautern smichel@cs.uni-kl.de Wiederholung: Anfragegraph Anfragen dieses Typs können als Graph dargestellt werden: Der

Mehr

368 4 Algorithmen und Datenstrukturen

368 4 Algorithmen und Datenstrukturen Kap04.fm Seite 368 Dienstag, 7. September 2010 1:51 13 368 4 Algorithmen und Datenstrukturen Java-Klassen Die ist die Klasse Object, ein Pfeil von Klasse A nach Klasse B bedeutet Bextends A, d.h. B ist

Mehr

Seminarvortag zum Thema Virtual Private Network Design im Rahmen des Seminars Network Design an der Universität Paderborn

Seminarvortag zum Thema Virtual Private Network Design im Rahmen des Seminars Network Design an der Universität Paderborn Seminarvortag zum Thema Virtual Private Network Design im Rahmen des Seminars Network Design an der Universität Paderborn Ein 5.55-Approximationsalgorithmus für das VPND-Problem Lars Schäfers Inhalt Einführung:

Mehr

6. Algorithmen der Computer-Geometrie

6. Algorithmen der Computer-Geometrie 6. Algorithmen der Computer-Geometrie 1. Einführung 2. Schnitt von zwei Strecken 3. Punkt-in-Polygon-Test 4. Schnitt orthogonaler Strecken 5. Punkteinschlussproblem Geo-Informationssysteme 146 6.1 Computer-Geometrie

Mehr

Nachtrag zu binären Suchbäumen

Nachtrag zu binären Suchbäumen Nachtrag zu binären Suchbäumen (nicht notwendigerweise zu AVL Bäumen) Löschen 1 3 2 10 4 12 1. Fall: Der zu löschende Knoten ist ein Blatt: einfach löschen 2. Fall: Der zu löschende Knoten hat ein Nachfolgeelement

Mehr

DAP2-Klausur 07.08.2004

DAP2-Klausur 07.08.2004 DAP2-Klausur 07.08.2004 Vorname : Familienname: Ich studiere (Bitte markieren): Informatik/Inform. Lehramt/Inf.technik/Physik/ Mathe/Statistik/Sonstiges: Bitte beachten: Auf jedem Blatt Matrikelnummer

Mehr

Modelle und Statistiken

Modelle und Statistiken Kapitel 4 Modelle und Statistiken In letzter Zeit werden vermehrt Parameter (Gradfolgen, Kernzahlfolgen, etc.) empirischer Graphen (Internet, WWW, Proteine, etc.) berechnet und diskutiert. Insbesondere

Mehr

Datenstrukturen und Algorithmen SS07

Datenstrukturen und Algorithmen SS07 Datenstrukturen und Algorithmen SS07 Datum: 27.6.2007 Michael Belfrage mbe@student.ethz.ch belfrage.net/eth Programm von Heute Online Algorithmen Update von Listen Move to Front (MTF) Transpose Approximationen

Mehr

ABITURPRÜFUNG 2009 LEISTUNGSFACH INFORMATIK

ABITURPRÜFUNG 2009 LEISTUNGSFACH INFORMATIK ABITURPRÜFUNG 2009 LEISTUNGSFACH INFORMATIK (HAUPTTERMIN) Bearbeitungszeit: 270 Minuten Hilfsmittel: Wörterbuch zur deutschen Rechtschreibung Taschenrechner (nicht programmierbar, nicht grafikfähig) (Schüler,

Mehr

Aufgabe 3: Übersetzen Sie die folgenden natürlich-sprachlichen Aussagen in die Sprache der

Aufgabe 3: Übersetzen Sie die folgenden natürlich-sprachlichen Aussagen in die Sprache der Aufgabe 1: Sind die folgenden Abbildungen jeweils injektiv, surjektiv und/oder bijektiv? (a) f 1 (x) = x, mit f 1 : R + R + (b) f (x) = x, mit f : R R (c) f 3 (x) = x, mit f 3 : R R (d) f 4 (x) = 3x, mit

Mehr

Sortieren durch Einfügen. Prof. Dr. W. Kowalk Sortieren durch Einfügen 1

Sortieren durch Einfügen. Prof. Dr. W. Kowalk Sortieren durch Einfügen 1 Sortieren durch Einfügen Prof. Dr. W. Kowalk Sortieren durch Einfügen 1 Schon wieder aufräumen Schon wieder Aufräumen, dabei habe ich doch erst neulich man findet alles schneller wieder Bücher auf Regal

Mehr

Bäume und Wälder. Bäume und Wälder 1 / 37

Bäume und Wälder. Bäume und Wälder 1 / 37 Bäume und Wälder Bäume und Wälder 1 / 37 Bäume Ein (ungerichteter) Baum ist ein ungerichteter Graph G = (V, E), der zusammenhängend ist und keine einfachen Kreise enthält. Bäume und Wälder 2 / 37 Bäume

Mehr