Universität Karlsruhe Fakultät für Informatik. Algorithmentechnik

Größe: px
Ab Seite anzeigen:

Download "Universität Karlsruhe Fakultät für Informatik. Algorithmentechnik"

Transkript

1 Universität Karlsruhe Fakultät für Informatik Algorithmentechnik Skript zur Vorlesung von Prof. Dorothea Wagner, Karlsruhe, Wintersemester 08/09 Stand: 9. November Skript erstellt von Robert Görke und Steffen Mecke Fakultät für Informatik Universität Karlsruhe Basierend auf den Vorlesungsnotizen von Dorothea Wagner und dem Skript der Vorlesung Algorithmen und Datenstrukturen aus Konstanz

2

3 Inhaltsverzeichnis Inhaltsverzeichnis Abbildungsverzeichnis 5 Algorithmenverzeichnis 7 0 Grundlagen 0. Worst-case- und Average-case-Laufzeit Beispiel: Worst-case-Laufzeit von Finde Maximum Beispiel: Average-case-Laufzeit von Finde Maximum Beispiel: Average-case-Laufzeit von Quicksort Untere Schranken für Laufzeiten Untere Schranke für Sortieren Untere Schranke für Berechnung der konvexen Hülle Amortisierte Analyse Beispiel von Stackoperationen Die Ganzheitsmethode Die Buchungsmethode Die Potentialmethode Divide-and-Conquer Verfahren und das Prinzip der Rekursion Ein Beispiel aus der Informatik-Grundvorlesung Rekursionsabschätzungen Die Substitutionsmethode Die Iterationsmethode Der Aufteilungs-Beschleunigungssatz (Meistermethode, Master-Theorem). Grundlegende Datenstrukturen für Operationen auf Mengen 9. Union-Find Drei Ansätze Die Laufzeit von Union-Find Bemerkungen Anwendungsbeispiele für Union-Find

4 INHALTSVERZEICHNIS.. Der Algorithmus von Kruskal für MST Das Offline-Min-Problem Äquivalenz endlicher Automaten Priority Queues oder Heaps Heapify Makeheap Prozedur Delete Prozedur Sift-Up Prozedur Insert Sortierverfahren Heapsort Alternative Bottom-Up-Heapify Aufspannende Bäume minimalen Gewichts 4. Einführung Das MST-Problem Motivation Die Färbungsmethode von Tarjan Grüne Regel Rote Regel Färbungsinvariante Der Algorithmus von Kruskal Der Algorithmus von Prim Implementation des Algorithmus von Prim Greedy Verfahren und Matroide Schnitte in Graphen und Zusammenhang 5. Schnitte minimalen Gewichts: MinCut Der Algorithmus von Stoer & Wagner Flussprobleme und Dualität 6 4. Grundlagen Problemstellung Bestimmung maximaler Flüsse ( Max Flow ) Ford-Fulkerson-Algorithmus (96) Der Algorithmus von Edmonds und Karp (97) Der Algorithmus von Goldberg und Tarjan (988) Anwendungsbeispiel: Mehrmaschinen-Scheduling Kreisbasen minimalen Gewichts 8 5. Kreisbasen Das Kreismatroid

5 INHALTSVERZEICHNIS 5. Der Algorithmus von Horton Der Algorithmus von de Pina (995) Beispiel zum Algorithmus von de Pina Korrektheit des Algorithmus von de Pina Effiziente Berechnung eines Zertifikats für MCB Lineare Programmierung 9 6. Geometrische Repräsentation von LPs Algorithmen zur Lösung von LPs Approximationsalgorithmen Approximationsalgorithmen mit relativer Gütegarantie Das allgemeine Knapsack Problem Bin Packing (Optimierungsversion) Approximationsschemata Ein PAS für Multiprocessor Scheduling Asymptotische PAS für Bin Packing Ein APAS für Bin Packing AFPAS für Bin Packing Randomisierte Algorithmen 7 8. Grundlagen der Wahrscheinlichkeitstheorie I Randomisierte MinCut-Algorithmen Ein einfacher Monte Carlo-Algorithmus für MinCut Ein effizienterer randomisierter MinCut-Algorithmus Grundlagen der Wahrscheinlichkeitstheorie II Das Maximum Satisfiability Problem Der Algorithmus Random Sat Das MaxCut-Problem Ein Randomisierter Algorithmus für MaxCut Relaxierung von IQP Parallele Algorithmen 9 9. Das PRAM Modell Komplexität von parallelen Algorithmen Die Komplexitätsklassen Parallele Basisalgorithmen Broadcast Berechnung von Summen Berechnung von Präfixsummen List Ranking

6 4 INHALTSVERZEICHNIS Binäroperationen einer partitionierten Menge mit K Prozessoren Zusammenhangskomponenten Modifikation zur Bestimmung eines MST Der Algorithmus n 9.6. Reduzierung der Prozessorenzahl auf log n 9.7 ParallelSelect Das Scheduling-Problem Parametrisierte Algorithmen Parametrisierte Komplexitätstheorie (Exkurs) Grundtechniken zur Entwicklung parametrisierter Algorithmen

7 Abbildungsverzeichnis Sortieren mit der konvexen Hülle Mengen bei Union-Find Vereinigung von Mengen bei Union-Find Tiefe eines Baumes weighted Union : Union(i, j) Pfadkompression bei Find Rang eines Knoten Deterministischer endlicher Automat A Deterministischer endlicher Automat A Deterministischer endlicher Automat A Beispiel eines Heap Beispielhafte Arbeitsweise von Heapify Ein aufspannender Baum minimalen Gewichts Beispiel eines Schnitts (S, V \ S) Ein Kreis in einem Graphen Eine Anwendung der grünen Regel Eine Anwendung der roten Regel Die Invariante der grünen Regel Unabhängige Knotenmengen sind kein Matroid Beispiel eines minimalen Schnitts Ein Beispiel für das Verschmelzen von Knoten Phase Phase Phase Phase Phase Phase Phase

8 6 ABBILDUNGSVERZEICHNIS Erster aktiver Knoten v / S Erster aktiver Knoten v S Nächster aktiver Knoten Ein Fluss und Schnitte Negativbeispiel für Ford-Fulkerson Edmonds und Karp beim Start Edmonds und Karp nach Update Flussnetzwerk mit Präfluss Beispiel zu Goldberg-Tarjan Flussnetzwerk für Mehrmaschinen-Scheduling Beispiel einer Kreisbasis, die aus einem Spannbaum gewonnen wird Elemente der Basis können stets durch ihren Schnitt mit einem anderen Basiselement ersetzt werden Elemente der Basis können stets verkleinert werden Darstellung eines Kreises der MCB durch kürzeste Wege Ein Graph zur Illustration des Algorithmus von de Pina Geometrische Darstellung eines LP Klee-Minty-Polyeder Worst-case-Beispiel zu Next Fit Worst-case-Beispiel zu First Fit Jobzuteilung beim Multiprocessor Scheduling Eine Lösung von QP (I) Runden der zweidimensionalen Lösung Independent Set, Vertex Cover und Domintating Set eines Beispiel-Graphen

9 Algorithmenverzeichnis Finde Maximum Quicksort Multipop(S, k) Iteratives Merge-Sort(S, k) Rekursives Merge-Sort(A, p, r) SlowSelect(A, i) Select(A, i) Makeset(x) (#) Find(x) (#) Union(S i, S j, S k ) (#) Find(x) (#) Union(i, j) (#) Makeset(x) (#) Union(i, j) (#) Find(x) (#) Algorithmus von Kruskal Offline-Min Äquivalenz endlicher Automaten Heapify(A, i) Makeheap (M) Delete (A, i) Sift-Up(A, i) Insert(A, x) Heapsort(A) Bottom-Up-Heapify(A, ) Färbungsmethode von Tarjan Algorithmus von Kruskal (verbal) Algorithmus von Prim (verbal) Algorithmus von Prim Greedy Methode für ein Optimierungsproblem Minschnittphase(G i, c, a) Min Schnitt(G, c, a) Max-Flow Algorithmus von Ford-Fulkerson Algorithmus von Goldberg-Tarjan Prozedur Push Prozedur Relabel MCB-Greedy-Methode Algorithmus von Horton Algorithmus von de Pina ([]) Algorithmus von de Pina algebraisch Simple MCB

10 8 ALGORITHMENVERZEICHNIS 4 MCB-Checker Greedy-Knapsack Next Fit (NF) First Fit (FF) List Scheduling Algorithmus A l für Multiprocessor Scheduling APAS für Bin Packing Random MinCut Fast Random MinCut Random MaxCut Broadcast(N) Summe(a,..., a n ) Oder(x,..., x n ) Präfixsumme(a n,..., a n ) List Ranking(n, h) Zusammenhang(G) [Chandra, Hirschberg & Sarwarte 979] MST(G) ParallelSelect(S, k; p) ParallelScheduling Vertex-Cover(G, k)

11 When I consider what people generally want in calculating, I found that it always is a number. I also observed that every number is composed of units, and that any number may be divided into units. Moreover, I found that every number which may be expressed from one to ten, surpasses the preceding by one unit: afterwards the ten is doubled or tripled just as before the units were: thus arise twenty, thirty, etc. until a hundred: then the hundred is doubled and tripled in the same manner as the units and the tens, up to a thousand;... so forth to the utmost limit of numeration. Abu Ja far Muhammad ibn Musa Al-Khwarizmi 80 (Namensgeber des Begriffs Algorithmus )

12

13 Kapitel 0 Grundlagen Der Literaturtip. Ein gutes Buch unter vielen zum Gesamtthema der Vorlesung ist []. Es enthält auch einführende Kapitel zum Algorithmusbegriff sowie zur Laufzeitanalyse von Algorithmen und zu Wachstumsraten von Funktionen (O, Ω, Θ). Ein weiteres empfehlenswertes Buch ist [7]. 0. Worst-case- und Average-case-Laufzeit Definition 0. (Worst-case-Laufzeit). Bezeichne die Anzahl Operationen, die ein Algorithmus A bei Eingabe x ausführt, mit t A (x). Die Worst-case-Laufzeit eines Algorithmus A ist: T worst A (n) := max x Eingabe, x =n t A(x) Definition 0. (Average-case-Laufzeit). Die Average-case-Laufzeit eines Algorithmus A ist: TA av (n) := {x : x ist Eingabe mit x = n} x: x =n t A (x) Dies bedeutet, TA av(n) gibt die mittlere Laufzeit bzw. den Erwartungswert für die Laufzeit bei Eingabe der Länge n an, wobei Gleichverteilung unter allen Eingaben angenommen wird. Somit gilt für die Zufallsvariable t A (x): TA av(n) = E[t A(x)]. 0.. Beispiel: Worst-case-Laufzeit von Finde Maximum Es sei A[,..., n], n ein Array der Länge n. Bestimme das Maximum der Werte A[],..., A[n]. Algorithmus : Finde Maximum Eingabe : Unsortiertes Array von n verschiedenen Zahlen A = (A[],..., A[n]) Ausgabe : Maximum aller A[i] max A[] for i to n do Wenn A[i] > max max A[i] 4

14 Grundlagen c Aufwand von Schritt c Aufwand von Schritt und bei einem Durchlauf c Aufwand von Schritt 4 Also: T worst A (n) c + (n )(c + c ) 0.. Beispiel: Average-case-Laufzeit von Finde Maximum Es sei A[,..., n] eine beliebige Permutation der Zahlen A[],..., A[n]. Alle n! Permutationen seien gleich wahrscheinlich. Somit gilt: Pr(A[] > A[]) = Pr(A[] > max(a[], A[])) =. Pr(A[n] > max(a[],..., A[n ])) = n Nun sei X j für j {,..., n} eine Zufallsvariable mit: X j = { falls A[j] Maximum in A[,..., j] 0 sonst () dann ist der Erwartungswert E[X j ] = Pr(A[j] > max(a[],..., A[j ])) = j. Für Algorithmus gilt somit: n A (n) = c + (n )c + c E T av j= X j n = c + (n )c + c E[X j ] j= n = c + (n )c + c j j= } {{ } H n Hier ist H n die harmonische Reihe, für die gilt: ln(n + ) H n ln n +. Somit gilt: T av A (n) c + (n )c + c ln n

15 0. Worst-case- und Average-case-Laufzeit Algorithmus : Quicksort Eingabe : Unsortiertes Array von r l verschiedenen Zahlen A = (A[l],..., A[r]) Ausgabe : Sortiertes Array A Wenn r l > 0 x A[l] Ordne A = (A[l,..., r]) so um, dass alle Elemente, die kleiner bzw. größer als x sind, links, respektive rechts von x in A stehen. Sei das Element x danach an Position q in A Quicksort A[l,..., q ] Quicksort A[q +,..., r] Beispiel: Average-case-Laufzeit von Quicksort Wir wollen die Average-case-Laufzeit von Quicksort (Algorithmus ) bestimmen. Im Folgenden zählen wir für die Laufzeit nur noch die Anzahl der Vergleiche, die ein Sortieralgorithmus braucht. Bemerkung 0.. Der Worst-case tritt ein, falls zum Beispiel A bereits vorsortiert ist. Dann werden im ersten Aufruf n Vergleiche, im nächsten n Vergleiche etc. gemacht. Somit folgt: TQuicksort worst (n) = n i= i = (n )n Θ(n ), wobei wir in T nur die Vergleiche zählen. Annahme: Alle n! Permutationen sind gleich wahrscheinlich. Es bezeichne s i das i-kleinste Element in A. Weiterhin seien X ij Zufallsvariablen, definiert für alle Paare i < j: X i,j = { falls s i und s j verglichen werden 0 sonst () Bemerkung 0.4. Die Elemente s i und s j werden höchstens einmal verglichen. Es gilt: Quicksort(n) = E X ij = E[X ij ] i<j i<j T av und E[X ij ] = p ij 0 ( p ij ) = p ij wobei p ij die Wahrscheinlichkeit ist, dass s i und s j verglichen werden. Beobachtung 0.5. Die Elemente s i und s j werden genau dann verglichen, wenn µ = i oder µ = j, wobei s µ = A[k], k linkeste Stelle in A, an der ein Element aus s i, s i+,..., s j steht.

16 4 Grundlagen Somit folgt: p ij = j i+ und T av Quicksort(n) = i<j = = n j i + n i= j=i+ n j i + n+( i) i= j=i++( i) n n i= j= j } {{ } H n n(h n ) n ln n (, 86n log n) n j i + ( i) = harmonische Reihe! i= n+ i j= j 0. Untere Schranken für Laufzeiten 0.. Sortieren ist in Ω(n log n) Eingabe eines Sortieralgorithmus ist ein Array A = A[,..., n]. Die Ausgabe ist das Array in sortierter Form und somit eine von n! möglichen Permutationen von A[,..., n]. Ein beliebiges Sortierverfahren, welches eine Abfolge von Vergleichen ausführt, entspricht einem Entscheidungsbaum wie folgt: A[i]<A[j] A[.] < A[.]. ja nein... mindestens n! Blätter A[.] < A[.]. Höhe mind. log n! Somit gilt für jeden Sortieralgorithmus, der auf Vergleichen von je zwei Elementen beruht ( n ) n TSort worst (n) log n! log = n (log n ) Ω(n log n) Algorithmen, die nicht nur auf dem Vergleichen von zwei Elementen beruhen, fordern in der Regel spezielle Voraussetzungen, wie zum Beispiel Bucket Sort, oder erlauben spezielle algebraische Operationen. Gegebenenfalls ist Sortieren dann in Linearzeit möglich. Es gilt übrigens auch: TSort av (n) Ω(n log n), da auch die mittlere Blatttiefe log n! ist. 0.. Untere Schranke für Berechnung der konvexen Hülle von n Punkten ist Ω(n log n) Berechnung der konvexen Hülle H(P ) der Menge P von n Punkten im R, d.h. das minimale konvexe Polygon, so dass alle Punkte aus Q im Innern oder auf dem Rand des Polygons liegen. Graham-Scan-Algorithmus in O(n log n) Jarvis-March-Algorithmus in O(nh), mit h Anzahl der Punkte auf dem Rand von H(P )

17 0. Amortisierte Analyse 5 Annahme: Es gibt einen Algorithmus A, der H(P ) in T A (n) o(n log n) berechnet. Konstruiere aus n Zahlen a,..., a n eine Punktemenge P := {(a, a ), (a, a ),..., (a n, a n)}. Die Sortierung der Zahlen a,..., a n ist dann möglich mittels Berechnung von H(P ) und Minimum a min der Zahlen a,..., a n durch Ablauf des Randes von H(P ) im Gegenuhrzeigersinn ab (a min, a min ), denn alle Punkte aus P liegen auf dem Rand von H(P ). Siehe dazu Abbildung. Also: T Sort (n) O(T A (n) + n), ein Widerspruch zu Sortieren ist in Ω(n log n) (da wir auch hier wie üblich lediglich Vergleiche zulassen und i.a. keine weiteren Voraussetzungen haben). 5 a min 5 Abbildung : Die konvexe Hülle dieser Punktemenge liefert eine Sortierung 0. Amortisierte Analyse Die amortisierte Laufzeitanalyse ist eine Analysemethode, bei der die Zeit, die benötigt wird, um eine Folge von Operationen auszuführen, über alle auszuführenden Operationen gemittelt wird. Diese Analysemethode kann angewandt werden, um zu beweisen, dass die mittleren Kosten einer Operation klein sind, wenn man über eine Folge von Operationen mittelt, obwohl eine einzelne Operation sehr aufwendig sein kann. Im Unterschied zu der Average-case -Analyse werden keine Wahrscheinlichkeitsannahmen gemacht. Analyse-Techniken für die amortisierte Analyse sind:. Ganzheitsmethode: Bestimme eine obere Schranke T (n) für die Gesamtkosten von n Operationen. Das ergibt T (n) n als die amortisierten Kosten für eine Operation.. Buchungsmethode (engl. accounting): Bestimme die amortisierten Kosten jeder Operation. Verschiedene Operationen können verschiedene Kosten haben. Es werden frühe Operationen in der betrachteten Folge höher veranschlagt und die zu hoch veranschlagten Kosten jeweils als Kredit für festgelegte Objekte gespeichert. Dieser Kredit wird dann für spätere Operationen verbraucht, deren Kosten niedriger veranschlagt werden, als sie tatsächlich sind.. Potentialmethode: Ähnlich wie bei der Buchungsmethode werden die amortisierten Kosten jeder einzelnen Operation berechnet. Dabei werden möglicherweise wieder einzelne Operationen höher veranschlagt und später andere Operationen niedriger veranschlagt. Der Kredit wird als Potentialenergie insgesamt gespeichert, anstatt einzelnen Objekten zugeordnet zu werden.

18 6 Grundlagen Beachte dabei: Der Kredit wird nur für die Analyse eingeführt. 0.. Beispiel von Stackoperationen Wir wollen die drei Methoden am Beispiel Stack mit Multipop erläutern. Betrachte dazu eine Datenstruktur mit Last in First out, einen Stack S. Ein normaler Stack umfasst zwei Operationen: Push(S, x): lege Objekt x auf Stack S Pop(S): gib oberstes Objekt vom Stack aus und entferne es vom Stack. Beide Operationen sind in Θ(). Veranschlage daher die Kosten pro Operation mit. Dann sind die Gesamtkosten einer Folge von insgesamt n Push- und Pop-Operationen in Θ(n). Betrachte nun eine weitere Operation: Multipop(S, k): gib die obersten k Objekte vom Stack aus und entferne sie vom Stack, bzw. falls der Stack weniger als k Objekte enthält, gib alle Objekte aus, bis der Stack leer ist. Eine formale Beschreibung von Multipop(S, k) zeigt Algorithmus. Algorithmus : Multipop(S, k) Eingabe : Stack, Anzahl zu entfernender Elemente Ausgabe : Die k obersten Elemente des Stack Seiteneffekte : Stack verkleinert sich um bis zu k Elemente Solange S und k 0 tue Pop(S) k k Beispiel Push(S,8) Push(S,7) Pop(S) Ausgabe: Multipop(S,) Ausgabe: 8,, Multipop(S,) Ausgabe: 9,7,4 Die Laufzeit einer Operation Multipop(S, k) ist linear in der Anzahl der ausgeführten Pop- Operationen, also O(min(s, k)), wobei s = S ist und wobei die Kosten im Worst-case betrachtet werden. Für eine Folge von n Push-, Pop- und Multipop-Operationen, angewandt auf einen zu Beginn leeren Stack, ergibt sich: Worst-case-Laufzeit einer Multipop-Operation ist O(n) Worst-case-Laufzeit einer beliebigen Stack-Operation ist O(n) Für n Stack-Operationen ergibt sich dann im Worst-case O(n ).

19 0. Amortisierte Analyse Die Ganzheitsmethode Eine einzelne Multipop-Operation kann teuer sein, d.h. sie kann Kosten n haben. Andererseits gilt: Ein Objekt kann höchstens einmal wieder einen Pop erfahren für jedes Mal, dass es einen Push erfahren hat. Bei dieser Rechnung sind die Pop-Operationen von Multipop inbegriffen. Es sind also höchstens so viele Kosten für Pop-Operationen möglich wie für Push-Operationen, d.h. höchstens n. Die Gesamtlaufzeit ist also in O(n), und damit ist der amortisierte Aufwand einer einzelnen Operation in der Folge der n Stack-Operationen in O(). 0.. Die Buchungsmethode Es werden verschiedene Gebühren für verschiedene Operationen veranschlagt. Die Gebühr pro Operation ist dann der amortisierte Aufwand der Operation. Falls der amortisierte Aufwand einer einzelnen Operation höher ist als der wirkliche Aufwand, so wird die Differenz als Kredit speziellen Objekten zugeordnet. Dieser Kredit kann später benutzt werden, um Aufwand, der höher als der amortisierte Aufwand einer Operation ist, auszugleichen. Der amortisierte Aufwand muss sorgfältig veranschlagt werden. Der Kredit darf niemals negativ sein, denn die gesamte amortisierte Laufzeit einer Folge von Operationen muss immer eine obere Schranke für die wirkliche Laufzeit sein. Tatsächlicher Aufwand bei Stack-Operationen: Definiere amortisierten Aufwand (Gebühr): Push(S, x): Pop(S): Multipop(S, k): min( S, k) Push(S, x): Pop(S): 0 Multipop(S, k): 0 Beispiel 0.7 (Tabletts in der Mensa). Wenn wir ein Tablett auf den Stack legen, bezahlen wir zwei Einheiten. Eine Einheit wird sofort verwendet, um die wirklichen Kosten der Push- Operation zu bezahlen. Die zweite Einheit bleibt auf dem Tablett liegen. Wenn das Tablett ein Pop-Operation erfährt, egal ob durch Pop oder Multipop, wird die Einheit auf dem Tablett verwendet, um die wirklichen Kosten für Pop zu bezahlen. Offensichtlich ist der Kredit niemals negativ. Bei einer Folge von n Push-, Pop- und Multipop-Operationen benötigen wir höchstens n amortisierte Gesamtkosten, da für maximal n Push-Operationen je zwei als amortisierte Kosten veranschlagt werden. Die Gesamtlaufzeit ist also in O(n) Die Potentialmethode Es wird aus zu hoch veranschlagten Kosten ein Potential aufgespart, das später verbraucht werden kann. Starte mit einer Datenstruktur D 0, auf der n Operationen ausgeführt werden. Für i =,,..., n seien c i : die tatsächlichen Kosten der i-ten Operation D i : die Datenstruktur nach der i-ten Operation (angewandt auf D i ). Definiere eine Potentialfunktion C : D i C(D i ) Potential von D i und den amortisierten Aufwand ĉ i der i-ten Operation bzgl. C als ĉ i := c i + C(D i ) C(D i ) Die amortisierten Kosten sind also die tatsächlichen Kosten plus dem Zuwachs (oder Verlust) an

20 8 Grundlagen Potential entsprechend der Operation. Das heißt: n n ĉ i = (c i + C(D i ) C(D i )) i= = i= n c i + C(D n ) C(D 0 ). i= Wenn C so definiert wird, dass C(D n ) C(D 0 ) ist, dann sind die amortisierten Kosten eine obere Schranke für die Gesamtkosten. Im allgemeinen ist nicht unbedingt im vorhinein klar, wieviele Operationen ausgeführt werden. Falls C(D i ) C(D 0 ) für alle i, so ist allerdings garantiert, dass (wie bei der Buchungsmethode) im voraus immer genug Kredit angespart wurde. Oft ist es günstig, C so zu wählen, dass C(D 0 ) = 0 ist und zu zeigen, dass C(D i ) 0 ist für alle i. Intuitiv ist klar: Falls C(D i ) C(D i ) > 0 ist, dann wird durch die amortisierten Kosten ĉ i eine überhöhte Gebühr für die i-te Operation dargestellt, d.h. dass das Potential wächst. Falls C(D i ) C(D i ) < 0 ist, so ist ĉ i zu tief veranschlagt. Beispiel: Stack mit Multipop: Definiere C als Anzahl der Objekte auf dem Stack. Dann ist C(D 0 ) = 0. Da die Anzahl der Objekte auf einem Stack nie negativ ist, gilt für alle i C(D i ) C(D 0 ). C ist also gut gewählt, da die amortisierten Gesamtkosten l i= c i + C(D l ) C(D 0 ) zu jedem Zeitpunkt l eine obere Schranke für die wirklichen Gesamtkosten sind. Betrachte den amortisierten Aufwand für die verschiedenen Stack-Operationen:. Die i-te Operation sei ein Push, auf einen Stack mit s Objekten angewandt: Daraus folgt c i = und C(D i ) C(D i ) = (s + ) s =. ĉ i = c i + C(D i ) C(D i ) = + =.. Die i-te Operation sei ein Pop, angewandt auf einen Stack mit s Objekten: Daraus folgt c i = und C(D i ) C(D i ) = s s =. ĉ i = = 0.. Die i-te Operation sei ein Multipop(S, k), auf einen Stack S mit s Objekten und k := min( S, k) angewandt: Daraus folgt c i = k und C(D i ) C(D i ) = (s k ) s = k. ĉ i = c i + C(D i ) C(D i ) = k k = 0. Also ist n i= ĉi n; die amortisierte Gesamtlaufzeit ist damit im Worst-case in O(n). Bemerkung 0.8. Ein weiteres Beispiel, an dem sich die Ideen der amortisierten Analyse gut erklären lassen, sind dynamische Tabellen: Objekte sollen in einer Tabelle abgespeichert werden, wobei Objekte eingefügt bzw. gelöscht werden können. Zu Beginn einer Folge von Operationen vom Typ Einfügen und Löschen habe die Tabelle die Größe h. Wenn eine Operation Einfügen zu einem Zeitpunkt auf die Tabelle angewandt wird, an dem die Tabelle voll ist, soll eine Tabellenexpansion vorgenommen werden, in der die Tabelle verdoppelt wird. Die Tabellenexpansion (angewandt auf die Tabelle der Größe k) habe wirkliche Kosten k. Entsprechend werde eine Tabellenkontraktion durchgeführt, in der die Tabelle halbiert wird, wenn sie nur noch sehr dünn besetzt ist, etwa höchstens zu 4. Die Tabellenkontraktion angewandt auf eine Tabelle mit k Elementen hat dann wiederum Kosten k. Wie groß ist die amortisierte Laufzeit für eine Folge von n Operationen vom Typ Einfügen bzw. Löschen?

21 0.4 Divide-and-Conquer Verfahren und das Prinzip der Rekursion Divide-and-Conquer Verfahren und das Prinzip der Rekursion Ein grundlegendes algorithmisches Prinzip besteht darin, ein Problem zu lösen, indem man es in Probleme (meist desselben Typs) kleinerer Größe oder mit kleineren Werten aufteilt, diese löst und aus den Lösungen eine Lösung für das Ausgangsproblem konstruiert. Wir werden in den angegebenen rekursiven Algorithmen oft keine explizite Abbruchbedingung angeben. Es wird angenommen, dass eine geeignete Abbruchbedingung eingebaut wird Ein Beispiel aus der Informatik-Grundvorlesung Merge-Sort ist ein Verfahren zum Sortieren einer Folge von n Werten, auf denen es eine Ordnung gibt. Merge-Sort sortiert eine Folge der Länge n, indem es zunächst halb so lange Teilfolgen sortiert und aus diesen die sortierte Folge der Länge n zusammmenmischt. Dies kann, wie im Folgenden beschrieben, auf iterative oder auf rekursive Weise durchgeführt werden. Iterativ bzw. Bottom-up Algorithmus 4 : Iteratives Merge-Sort(S, k) Sortiere zunächst Teilfolgen der Länge zwei und mische sie zu sortierten Folgen der Länge vier zusammen Mische je zwei sortierte Folgen der Länge vier zu sortierten Folgen der Länge acht zusammen u.s.w. Rekursiv Sehr oft werden Divide-and-Conquer Verfahren jedoch rekursiv angewandt. Das bedeutet: Das Verfahren ruft sich selbst wieder auf, angewandt auf Eingaben kleinerer Länge bzw. mit kleineren Werten. Algorithmus 5 : Rekursives Merge-Sort(A, p, r) Eingabe : Array A mit n Elementen, die an den Stellen A[p] bis A[r] stehen. Ausgabe : n Elemente sortiert in Ergebnisarray B. Wenn p < r gilt q p+r B Merge-Sort(A; p, q) B Merge-Sort(A; q +, r) 4 B Merge(B ; B ) 5 6 sonst B A[p] } rekursive Aufrufe Die Hauptarbeit besteht hier bei Merge-Sort (vgl. Algorithmus 5), wie auch bei den meisten Divide-and-Conquer Verfahren, im Zusammensetzen der Teillösungen, bei Merge-Sort also in Merge (Zeile 4). Merge informell: Durchlaufe A einerseits von A[p] bis A[q] und andererseits von A[q+] bis A[r] und vergleiche die Elemente jeweils paarweise. Das kleinere der Elemente wird weggeschrieben

Entwurf und Analyse von Algorithmen WS 1999/2000

Entwurf und Analyse von Algorithmen WS 1999/2000 Entwurf und Analyse von Algorithmen WS 1999/2000 Prof. Dorothea Wagner Ausarbeitung: Dagmar Handke Matthias Weisgerber Anja Kristina Koch Version vom 29. November 2005 2 Inhaltsverzeichnis 1 Divide-and-Conquer-Verfahren

Mehr

Universität Karlsruhe Fakultät für Informatik. Algorithmentechnik

Universität Karlsruhe Fakultät für Informatik. Algorithmentechnik Universität Karlsruhe Fakultät für Informatik Algorithmentechnik Skript zur Vorlesung von Prof. Dorothea Wagner, Karlsruhe, Wintersemester 06/07 Stand: 7. Februar 007 6 4 0 4 5 6 7 8 7 9 8 9 0 4 Skript

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

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

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

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

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

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

16. All Pairs Shortest Path (ASPS)

16. All Pairs Shortest Path (ASPS) . All Pairs Shortest Path (ASPS) All Pairs Shortest Path (APSP): Eingabe: Gewichteter Graph G=(V,E) Ausgabe: Für jedes Paar von Knoten u,v V die Distanz von u nach v sowie einen kürzesten Weg a b c d e

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

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

1. Man schreibe die folgenden Aussagen jeweils in einen normalen Satz um. Zum Beispiel kann man die Aussage:

1. Man schreibe die folgenden Aussagen jeweils in einen normalen Satz um. Zum Beispiel kann man die Aussage: Zählen und Zahlbereiche Übungsblatt 1 1. Man schreibe die folgenden Aussagen jeweils in einen normalen Satz um. Zum Beispiel kann man die Aussage: Für alle m, n N gilt m + n = n + m. in den Satz umschreiben:

Mehr

Übersicht. Datenstrukturen und Algorithmen. Übersicht. Divide-and-Conquer. Vorlesung 9: Quicksort (K7)

Übersicht. Datenstrukturen und Algorithmen. Übersicht. Divide-and-Conquer. Vorlesung 9: Quicksort (K7) Datenstrukturen und Algorithmen Vorlesung 9: (K7) Joost-Pieter Katoen Lehrstuhl für Informatik 2 Software Modeling and Verification Group http://www-i2.rwth-aachen.de/i2/dsal0/ Algorithmus 8. Mai 200 Joost-Pieter

Mehr

Einführung. Vorlesungen zur Komplexitätstheorie: Reduktion und Vollständigkeit (3) Vorlesungen zur Komplexitätstheorie. K-Vollständigkeit (1/5)

Einführung. Vorlesungen zur Komplexitätstheorie: Reduktion und Vollständigkeit (3) Vorlesungen zur Komplexitätstheorie. K-Vollständigkeit (1/5) Einführung 3 Vorlesungen zur Komplexitätstheorie: Reduktion und Vollständigkeit (3) Univ.-Prof. Dr. Christoph Meinel Hasso-Plattner-Institut Universität Potsdam, Deutschland Hatten den Reduktionsbegriff

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

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

Informationsblatt Induktionsbeweis

Informationsblatt Induktionsbeweis Sommer 015 Informationsblatt Induktionsbeweis 31. März 015 Motivation Die vollständige Induktion ist ein wichtiges Beweisverfahren in der Informatik. Sie wird häufig dazu gebraucht, um mathematische Formeln

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

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

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

Vorlesung Diskrete Strukturen Graphen: Wieviele Bäume?

Vorlesung Diskrete Strukturen Graphen: Wieviele Bäume? Vorlesung Diskrete Strukturen Graphen: Wieviele Bäume? Bernhard Ganter Institut für Algebra TU Dresden D-01062 Dresden bernhard.ganter@tu-dresden.de WS 2013/14 Isomorphie Zwei Graphen (V 1, E 1 ) und (V

Mehr

a n + 2 1 auf Konvergenz. Berechnen der ersten paar Folgenglieder liefert:

a n + 2 1 auf Konvergenz. Berechnen der ersten paar Folgenglieder liefert: Beispiel: Wir untersuchen die rekursiv definierte Folge a 0 + auf Konvergenz. Berechnen der ersten paar Folgenglieder liefert: ( ) (,, 7, 5,...) Wir können also vermuten, dass die Folge monoton fallend

Mehr

Übungen zu Algorithmentechnik WS 09/10

Übungen zu Algorithmentechnik WS 09/10 Übungen zu Algorithmentechnik WS 09/10 1. Kurzsitzung Thomas Pajor 22. Oktober 2009 1/ 25 Eure Übungsleiter Tanja Hartmann t.hartmann@kit.edu Raum 306, Gebäude 50.34 Thomas Pajor pajor@kit.edu Raum 322,

Mehr

Primzahlen und RSA-Verschlüsselung

Primzahlen und RSA-Verschlüsselung Primzahlen und RSA-Verschlüsselung Michael Fütterer und Jonathan Zachhuber 1 Einiges zu Primzahlen Ein paar Definitionen: Wir bezeichnen mit Z die Menge der positiven und negativen ganzen Zahlen, also

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

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

Grundbegriffe der Informatik

Grundbegriffe der Informatik Grundbegriffe der Informatik Einheit 15: Reguläre Ausdrücke und rechtslineare Grammatiken Thomas Worsch Universität Karlsruhe, Fakultät für Informatik Wintersemester 2008/2009 1/25 Was kann man mit endlichen

Mehr

Folge 19 - Bäume. 19.1 Binärbäume - Allgemeines. Grundlagen: Ulrich Helmich: Informatik 2 mit BlueJ - Ein Kurs für die Stufe 12

Folge 19 - Bäume. 19.1 Binärbäume - Allgemeines. Grundlagen: Ulrich Helmich: Informatik 2 mit BlueJ - Ein Kurs für die Stufe 12 Grundlagen: Folge 19 - Bäume 19.1 Binärbäume - Allgemeines Unter Bäumen versteht man in der Informatik Datenstrukturen, bei denen jedes Element mindestens zwei Nachfolger hat. Bereits in der Folge 17 haben

Mehr

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren Lineargleichungssysteme: Additions-/ Subtraktionsverfahren W. Kippels 22. Februar 2014 Inhaltsverzeichnis 1 Einleitung 2 2 Lineargleichungssysteme zweiten Grades 2 3 Lineargleichungssysteme höheren als

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

4.9 Deterministische Kellerautomaten Wir haben bereits definiert: Ein PDA heißt deterministisch (DPDA), falls

4.9 Deterministische Kellerautomaten Wir haben bereits definiert: Ein PDA heißt deterministisch (DPDA), falls 4.9 Deterministische Kellerautomaten Wir haben bereits definiert: Ein PDA heißt deterministisch (DPDA), falls δ(q, a, Z) + δ(q, ɛ, Z) 1 (q, a, Z) Q Σ. Die von einem DPDA, der mit leerem Keller akzeptiert,

Mehr

9.2. DER SATZ ÜBER IMPLIZITE FUNKTIONEN 83

9.2. DER SATZ ÜBER IMPLIZITE FUNKTIONEN 83 9.. DER SATZ ÜBER IMPLIZITE FUNKTIONEN 83 Die Grundfrage bei der Anwendung des Satzes über implizite Funktionen betrifft immer die folgende Situation: Wir haben eine Funktion f : V W und eine Stelle x

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

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

t r Lineare Codierung von Binärbbäumen (Wörter über dem Alphabet {, }) Beispiel code( ) = code(, t l, t r ) = code(t l ) code(t r )

t r Lineare Codierung von Binärbbäumen (Wörter über dem Alphabet {, }) Beispiel code( ) = code(, t l, t r ) = code(t l ) code(t r ) Definition B : Menge der binären Bäume, rekursiv definiert durch die Regeln: ist ein binärer Baum sind t l, t r binäre Bäume, so ist auch t =, t l, t r ein binärer Baum nur das, was durch die beiden vorigen

Mehr

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

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

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

Theoretische Informatik SS 04 Übung 1

Theoretische Informatik SS 04 Übung 1 Theoretische Informatik SS 04 Übung 1 Aufgabe 1 Es gibt verschiedene Möglichkeiten, eine natürliche Zahl n zu codieren. In der unären Codierung hat man nur ein Alphabet mit einem Zeichen - sagen wir die

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

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

Beispiel 48. 4.3.2 Zusammengesetzte Zufallsvariablen

Beispiel 48. 4.3.2 Zusammengesetzte Zufallsvariablen 4.3.2 Zusammengesetzte Zufallsvariablen Beispiel 48 Ein Würfel werde zweimal geworfen. X bzw. Y bezeichne die Augenzahl im ersten bzw. zweiten Wurf. Sei Z := X + Y die Summe der gewürfelten Augenzahlen.

Mehr

Kapiteltests zum Leitprogramm Binäre Suchbäume

Kapiteltests zum Leitprogramm Binäre Suchbäume Kapiteltests zum Leitprogramm Binäre Suchbäume Björn Steffen Timur Erdag überarbeitet von Christina Class Binäre Suchbäume Kapiteltests für das ETH-Leitprogramm Adressaten und Institutionen Das Leitprogramm

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

geben. Die Wahrscheinlichkeit von 100% ist hier demnach nur der Gehen wir einmal davon aus, dass die von uns angenommenen

geben. Die Wahrscheinlichkeit von 100% ist hier demnach nur der Gehen wir einmal davon aus, dass die von uns angenommenen geben. Die Wahrscheinlichkeit von 100% ist hier demnach nur der Vollständigkeit halber aufgeführt. Gehen wir einmal davon aus, dass die von uns angenommenen 70% im Beispiel exakt berechnet sind. Was würde

Mehr

Division Für diesen Abschnitt setzen wir voraus, dass der Koeffizientenring ein Körper ist. Betrachte das Schema

Division Für diesen Abschnitt setzen wir voraus, dass der Koeffizientenring ein Körper ist. Betrachte das Schema Division Für diesen Abschnitt setzen wir voraus, dass der Koeffizientenring ein Körper ist. Betrachte das Schema 2x 4 + x 3 + x + 3 div x 2 + x 1 = 2x 2 x + 3 (2x 4 + 2x 3 2x 2 ) x 3 + 2x 2 + x + 3 ( x

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

Rekursionen. Georg Anegg 25. November 2009. Methoden und Techniken an Beispielen erklärt

Rekursionen. Georg Anegg 25. November 2009. Methoden und Techniken an Beispielen erklärt Methoden und Techniken an Beispielen erklärt Georg Anegg 5. November 009 Beispiel. Die Folge {a n } sei wie folgt definiert (a, d, q R, q ): a 0 a, a n+ a n q + d (n 0) Man bestimme eine explizite Darstellung

Mehr

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

1. Musterlösung. Problem 1: Average-case-Laufzeit vs. Worst-case-Laufzeit ** i=1 Universität Karlsruhe Algorithmentechnik Fakultät für Informatik WS 05/06 ITI Wagner. Musterlösung Problem : Average-case-Laufzeit vs. Worst-case-Laufzeit ** (a) Im schlimmsten Fall werden für jedes Element

Mehr

2.11 Kontextfreie Grammatiken und Parsebäume

2.11 Kontextfreie Grammatiken und Parsebäume 2.11 Kontextfreie Grammatiken und Parsebäume Beispiel: Beispiel (Teil 3): Beweis für L(G) L: Alle Strings aus L der Länge 0 und 2 sind auch in L(G). Als Induktionsannahme gehen wir davon aus, dass alle

Mehr

Codierungstheorie Rudolf Scharlau, SoSe 2006 9

Codierungstheorie Rudolf Scharlau, SoSe 2006 9 Codierungstheorie Rudolf Scharlau, SoSe 2006 9 2 Optimale Codes Optimalität bezieht sich auf eine gegebene Quelle, d.h. eine Wahrscheinlichkeitsverteilung auf den Symbolen s 1,..., s q des Quellalphabets

Mehr

1 Mathematische Grundlagen

1 Mathematische Grundlagen Mathematische Grundlagen - 1-1 Mathematische Grundlagen Der Begriff der Menge ist einer der grundlegenden Begriffe in der Mathematik. Mengen dienen dazu, Dinge oder Objekte zu einer Einheit zusammenzufassen.

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

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

WS 2008/09. Diskrete Strukturen

WS 2008/09. Diskrete Strukturen WS 2008/09 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/ws0809

Mehr

Einführung in die Algebra

Einführung in die Algebra Prof. Dr. H. Brenner Osnabrück SS 2009 Einführung in die Algebra Vorlesung 13 Einheiten Definition 13.1. Ein Element u in einem Ring R heißt Einheit, wenn es ein Element v R gibt mit uv = vu = 1. DasElementv

Mehr

Rekursionen (Teschl/Teschl 8.1-8.2)

Rekursionen (Teschl/Teschl 8.1-8.2) Rekursionen (Teschl/Teschl 8.1-8.2) Eine Rekursion kter Ordnung für k N ist eine Folge x 1, x 2, x 3,... deniert durch eine Rekursionsvorschrift x n = f n (x n 1,..., x n k ) für n > k, d. h. jedes Folgenglied

Mehr

Grundbegriffe der Informatik

Grundbegriffe der Informatik Grundbegriffe der Informatik Kapitel 6: Induktives Vorgehen Thomas Worsch KIT, Institut für Theoretische Informatik Wintersemester 2015/2016 GBI Grundbegriffe der Informatik KIT, Institut für Theoretische

Mehr

Basis und Dimension. Als nächstes wollen wir die wichtigen Begriffe Erzeugendensystem und Basis eines Vektorraums definieren.

Basis und Dimension. Als nächstes wollen wir die wichtigen Begriffe Erzeugendensystem und Basis eines Vektorraums definieren. Basis und Dimension Als nächstes wollen wir die wichtigen Begriffe Erzeugendensystem und Basis eines Vektorraums definieren. Definition. Sei V ein K-Vektorraum und (v i ) i I eine Familie von Vektoren

Mehr

Programmiersprachen und Übersetzer

Programmiersprachen und Übersetzer Programmiersprachen und Übersetzer Sommersemester 2010 19. April 2010 Theoretische Grundlagen Problem Wie kann man eine unendliche Menge von (syntaktisch) korrekten Programmen definieren? Lösung Wie auch

Mehr

Kapitel 6: Graphalgorithmen Gliederung

Kapitel 6: Graphalgorithmen Gliederung Gliederung 1. Grundlagen 2. Zahlentheoretische Algorithmen 3. Sortierverfahren 4. Ausgewählte Datenstrukturen 5. Dynamisches Programmieren 6. Graphalgorithmen 7. String-Matching 8. Kombinatorische Algorithmen

Mehr

Grundlagen der Theoretischen Informatik, SoSe 2008

Grundlagen der Theoretischen Informatik, SoSe 2008 1. Aufgabenblatt zur Vorlesung Grundlagen der Theoretischen Informatik, SoSe 2008 (Dr. Frank Hoffmann) Lösung von Manuel Jain und Benjamin Bortfeldt Aufgabe 2 Zustandsdiagramme (6 Punkte, wird korrigiert)

Mehr

Lineare Funktionen. 1 Proportionale Funktionen 3 1.1 Definition... 3 1.2 Eigenschaften... 3. 2 Steigungsdreieck 3

Lineare Funktionen. 1 Proportionale Funktionen 3 1.1 Definition... 3 1.2 Eigenschaften... 3. 2 Steigungsdreieck 3 Lineare Funktionen Inhaltsverzeichnis 1 Proportionale Funktionen 3 1.1 Definition............................... 3 1.2 Eigenschaften............................. 3 2 Steigungsdreieck 3 3 Lineare Funktionen

Mehr

Eine Logikschaltung zur Addition zweier Zahlen

Eine Logikschaltung zur Addition zweier Zahlen Eine Logikschaltung zur Addition zweier Zahlen Grundlegender Ansatz für die Umsetzung arithmetischer Operationen als elektronische Schaltung ist die Darstellung von Zahlen im Binärsystem. Eine Logikschaltung

Mehr

1. Übung Algorithmentechnik

1. Übung Algorithmentechnik 1. Übung Algorithmentechnik Institut für Theoretische Informatik 04.11.2008 1/ 42 Aufgabe 1 Aufgabe (Amortisierte Analyse) Modellieren Sie eine Queue mit zwei Stacks so, dass die amortisierten Kosten von

Mehr

KONSTRUKTION VON ROT-SCHWARZ-BÄUMEN

KONSTRUKTION VON ROT-SCHWARZ-BÄUMEN KONSTRUKTION VON ROT-SCHWARZ-BÄUMEN RALF HINZE Institut für Informatik III Universität Bonn Email: ralf@informatik.uni-bonn.de Homepage: http://www.informatik.uni-bonn.de/~ralf Februar, 2001 Binäre Suchbäume

Mehr

2. Klausur zur Vorlesung Algorithmentechnik Wintersemester 2006/ April 2007

2. Klausur zur Vorlesung Algorithmentechnik Wintersemester 2006/ April 2007 2. Klausur zur Vorlesung Algorithmentechnik Wintersemester 2006/2007 12. April 2007 Hier Aufkleber mit Name und Matrikelnr. anbringen Vorname: Nachname: Matrikelnummer: Beachten Sie: Bringen Sie den Aufkleber

Mehr

Beweisbar sichere Verschlüsselung

Beweisbar sichere Verschlüsselung Beweisbar sichere Verschlüsselung ITS-Wahlpflichtvorlesung Dr. Bodo Möller Ruhr-Universität Bochum Horst-Görtz-Institut für IT-Sicherheit Lehrstuhl für Kommunikationssicherheit bmoeller@crypto.rub.de 6

Mehr

50. Mathematik-Olympiade 2. Stufe (Regionalrunde) Klasse 11 13. 501322 Lösung 10 Punkte

50. Mathematik-Olympiade 2. Stufe (Regionalrunde) Klasse 11 13. 501322 Lösung 10 Punkte 50. Mathematik-Olympiade. Stufe (Regionalrunde) Klasse 3 Lösungen c 00 Aufgabenausschuss des Mathematik-Olympiaden e.v. www.mathematik-olympiaden.de. Alle Rechte vorbehalten. 503 Lösung 0 Punkte Es seien

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

7 Rechnen mit Polynomen

7 Rechnen mit Polynomen 7 Rechnen mit Polynomen Zu Polynomfunktionen Satz. Zwei Polynomfunktionen und f : R R, x a n x n + a n 1 x n 1 + a 1 x + a 0 g : R R, x b n x n + b n 1 x n 1 + b 1 x + b 0 sind genau dann gleich, wenn

Mehr

Also kann nur A ist roter Südler und B ist grüner Nordler gelten.

Also kann nur A ist roter Südler und B ist grüner Nordler gelten. Aufgabe 1.1: (4 Punkte) Der Planet Og wird von zwei verschiedenen Rassen bewohnt - dem grünen und dem roten Volk. Desweiteren sind die Leute, die auf der nördlichen Halbkugel geboren wurden von denen auf

Mehr

Lineare Gleichungssysteme

Lineare Gleichungssysteme Lineare Gleichungssysteme 1 Zwei Gleichungen mit zwei Unbekannten Es kommt häufig vor, dass man nicht mit einer Variablen alleine auskommt, um ein Problem zu lösen. Das folgende Beispiel soll dies verdeutlichen

Mehr

Übersicht. Datenstrukturen und Algorithmen Vorlesung 5: Rekursionsgleichungen (K4) Übersicht. Binäre Suche. Joost-Pieter Katoen. 20.

Übersicht. Datenstrukturen und Algorithmen Vorlesung 5: Rekursionsgleichungen (K4) Übersicht. Binäre Suche. Joost-Pieter Katoen. 20. Übersicht Datenstrukturen und Algorithmen Vorlesung 5: (K4) Joost-Pieter Katoen Lehrstuhl für Informatik 2 Software Modeling and Verification Group http://www-i2.informatik.rwth-aachen.de/i2/dsal12/ 20.

Mehr

Kompetitive Analysen von Online-Algorithmen

Kompetitive Analysen von Online-Algorithmen Kompetitive Analysen von Online-Algorithmen jonas echterhoff 16. Juli 004 1 Einführung 1.1 Terminologie Online-Algorithmen sind Algorithmen, die Probleme lösen sollen, bei denen Entscheidungen getroffen

Mehr

Überblick. Lineares Suchen

Überblick. Lineares Suchen Komplexität Was ist das? Die Komplexität eines Algorithmus sei hierbei die Abschätzung des Aufwandes seiner Realisierung bzw. Berechnung auf einem Computer. Sie wird daher auch rechnerische Komplexität

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

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

Idee: Wenn wir beim Kopfknoten zwei Referenzen verfolgen können, sind die Teillisten kürzer. kopf Eine Datenstruktur mit Schlüsselwerten 1 bis 10

Idee: Wenn wir beim Kopfknoten zwei Referenzen verfolgen können, sind die Teillisten kürzer. kopf Eine Datenstruktur mit Schlüsselwerten 1 bis 10 Binäre Bäume Bäume gehören zu den wichtigsten Datenstrukturen in der Informatik. Sie repräsentieren z.b. die Struktur eines arithmetischen Terms oder die Struktur eines Buchs. Bäume beschreiben Organisationshierarchien

Mehr

Algorithmentheorie. 13 - Maximale Flüsse

Algorithmentheorie. 13 - Maximale Flüsse Algorithmentheorie 3 - Maximale Flüsse Prof. Dr. S. Albers Prof. Dr. Th. Ottmann . Maximale Flüsse in Netzwerken 5 3 4 7 s 0 5 9 5 9 4 3 4 5 0 3 5 5 t 8 8 Netzwerke und Flüsse N = (V,E,c) gerichtetes Netzwerk

Mehr

Zeichen bei Zahlen entschlüsseln

Zeichen bei Zahlen entschlüsseln Zeichen bei Zahlen entschlüsseln In diesem Kapitel... Verwendung des Zahlenstrahls Absolut richtige Bestimmung von absoluten Werten Operationen bei Zahlen mit Vorzeichen: Addieren, Subtrahieren, Multiplizieren

Mehr

Bestimmung einer ersten

Bestimmung einer ersten Kapitel 6 Bestimmung einer ersten zulässigen Basislösung Ein Problem, was man für die Durchführung der Simplexmethode lösen muss, ist die Bestimmung einer ersten zulässigen Basislösung. Wie gut das geht,

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

Das große ElterngeldPlus 1x1. Alles über das ElterngeldPlus. Wer kann ElterngeldPlus beantragen? ElterngeldPlus verstehen ein paar einleitende Fakten

Das große ElterngeldPlus 1x1. Alles über das ElterngeldPlus. Wer kann ElterngeldPlus beantragen? ElterngeldPlus verstehen ein paar einleitende Fakten Das große x -4 Alles über das Wer kann beantragen? Generell kann jeder beantragen! Eltern (Mütter UND Väter), die schon während ihrer Elternzeit wieder in Teilzeit arbeiten möchten. Eltern, die während

Mehr

Absolute Stetigkeit von Maßen

Absolute Stetigkeit von Maßen Absolute Stetigkeit von Maßen Definition. Seien µ und ν Maße auf (X, Ω). Dann heißt ν absolut stetig bezüglich µ (kurz ν µ ), wenn für alle A Ω mit µ(a) = 0 auch gilt dass ν(a) = 0. Lemma. Sei ν ein endliches

Mehr

Motivation. Formale Grundlagen der Informatik 1 Kapitel 5 Kontextfreie Sprachen. Informales Beispiel. Informales Beispiel.

Motivation. Formale Grundlagen der Informatik 1 Kapitel 5 Kontextfreie Sprachen. Informales Beispiel. Informales Beispiel. Kontextfreie Kontextfreie Motivation Formale rundlagen der Informatik 1 Kapitel 5 Kontextfreie Sprachen Bisher hatten wir Automaten, die Wörter akzeptieren Frank Heitmann heitmann@informatik.uni-hamburg.de

Mehr

Konzepte der Informatik

Konzepte der Informatik Konzepte der Informatik Vorkurs Informatik zum WS 2011/2012 26.09. - 30.09.2011 17.10. - 21.10.2011 Dr. Werner Struckmann / Christoph Peltz Stark angelehnt an Kapitel 1 aus "Abenteuer Informatik" von Jens

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

OECD Programme for International Student Assessment PISA 2000. Lösungen der Beispielaufgaben aus dem Mathematiktest. Deutschland

OECD Programme for International Student Assessment PISA 2000. Lösungen der Beispielaufgaben aus dem Mathematiktest. Deutschland OECD Programme for International Student Assessment Deutschland PISA 2000 Lösungen der Beispielaufgaben aus dem Mathematiktest Beispielaufgaben PISA-Hauptstudie 2000 Seite 3 UNIT ÄPFEL Beispielaufgaben

Mehr

Professionelle Seminare im Bereich MS-Office

Professionelle Seminare im Bereich MS-Office Der Name BEREICH.VERSCHIEBEN() ist etwas unglücklich gewählt. Man kann mit der Funktion Bereiche zwar verschieben, man kann Bereiche aber auch verkleinern oder vergrößern. Besser wäre es, die Funktion

Mehr

Lineare Gleichungssysteme

Lineare Gleichungssysteme Brückenkurs Mathematik TU Dresden 2015 Lineare Gleichungssysteme Schwerpunkte: Modellbildung geometrische Interpretation Lösungsmethoden Prof. Dr. F. Schuricht TU Dresden, Fachbereich Mathematik auf der

Mehr

Kapitel 5: Dynamisches Programmieren Gliederung

Kapitel 5: Dynamisches Programmieren Gliederung Gliederung 1. Grundlagen 2. Zahlentheoretische Algorithmen 3. Sortierverfahren 4. Ausgewählte Datenstrukturen 5. Dynamisches Programmieren 6. Graphalgorithmen 7. String-Matching 8. Kombinatorische Algorithmen

Mehr

Die Gleichung A x = a hat für A 0 die eindeutig bestimmte Lösung. Für A=0 und a 0 existiert keine Lösung.

Die Gleichung A x = a hat für A 0 die eindeutig bestimmte Lösung. Für A=0 und a 0 existiert keine Lösung. Lineare Gleichungen mit einer Unbekannten Die Grundform der linearen Gleichung mit einer Unbekannten x lautet A x = a Dabei sind A, a reelle Zahlen. Die Gleichung lösen heißt, alle reellen Zahlen anzugeben,

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

V 2 B, C, D Drinks. Möglicher Lösungsweg a) Gleichungssystem: 300x + 400 y = 520 300x + 500y = 597,5 2x3 Matrix: Energydrink 0,7 Mineralwasser 0,775,

V 2 B, C, D Drinks. Möglicher Lösungsweg a) Gleichungssystem: 300x + 400 y = 520 300x + 500y = 597,5 2x3 Matrix: Energydrink 0,7 Mineralwasser 0,775, Aufgabenpool für angewandte Mathematik / 1. Jahrgang V B, C, D Drinks Ein gastronomischer Betrieb kauft 300 Dosen Energydrinks (0,3 l) und 400 Liter Flaschen Mineralwasser und zahlt dafür 50, Euro. Einen

Mehr

Lenstras Algorithmus für Faktorisierung

Lenstras Algorithmus für Faktorisierung Lenstras Algorithmus für Faktorisierung Bertil Nestorius 9 März 2010 1 Motivation Die schnelle Faktorisierung von Zahlen ist heutzutage ein sehr wichtigen Thema, zb gibt es in der Kryptographie viele weit

Mehr

3. Zusammenhang. 22 Andreas Gathmann

3. Zusammenhang. 22 Andreas Gathmann 22 Andreas Gathmann 3. Zusammenhang Eine der anschaulichsten Eigenschaften eines topologischen Raumes ist wahrscheinlich, ob er zusammenhängend ist oder aus mehreren Teilen besteht. Wir wollen dieses Konzept

Mehr