Datenstrukturen und Algorithmen. Christian Sohler FG Algorithmen & Komplexität

Größe: px
Ab Seite anzeigen:

Download "Datenstrukturen und Algorithmen. Christian Sohler FG Algorithmen & Komplexität"

Transkript

1 Datenstrukturen und Algorithmen Christian Sohler FG Algorithmen & Komplexität 1

2 Klausur Wichtige Hinweise: , Beginn 9 Uhr Bitte spätestens 8:4 Uhr vor Ort sein Sporthalle + Audimax Informationen zur Aufteilung werden auf der Homepage der Vorlesung bekannt gegeben Zeit bis ca. 12:0 Uhr 2

3 Klausur Lernziele: Verständnis grundlegender Algorithmen Laufzeitanalyse Korrektheitsbeweise Algorithmische Entwurfsmethoden verstehen und anwenden: - Divide & Conquer - gierige Algorithmen - dynamische Programmierung Entwurf von Datenstrukturen

4 Klausur Vorbereitung: Algorithmen aus der Vorlesung verstehen und anwenden können Korrektheitsbeweise verstehen (hier können die beiden Lehrbücher besonders helfen, weil sie unterschiedlich an die Probleme herangehen) Algorithmische Techniken anwenden (Probeklausure, alte Klausuren, Übungsaufgaben, Aufgaben in Lehrbüchern, ) 4

5 Wiederholung

6 Algorithmenentwurf Anforderungen: Korrektheit Effizienz (Laufzeit, Speicherplatz) Entwurf: 1. Beschreibung des Algorithmus/der Datenstruktur 2. Korrektheitsbeweis. Analyse von Laufzeit und Speicherplatz 6

7 Laufzeit Maschinenmodell: Eine Pseudocode-Instruktion braucht einen Zeitschritt Wird eine Instruktion r-mal aufgerufen, werden r Zeitschritte benötigt Formales Modell: Random Access Machines (RAM Modell) Idee: Ignoriere rechnerabhängige Konstanten Sei T(n) Laufzeit für Eingabegröße n Betrachte Wachstum von T(n) für n Asymptotische Analyse 7

8 Das Teile & Herrsche-Prinzip Teile & Herrsche (Divide & Conquer): Teile Eingabe in mehrere Teile auf Löse das Problem rekursiv auf den Teilen Füge die Teillösungen zu einer Gesamtlösung zusammen 8

9 Das Teile & Herrsche-Prinzip Teile & Herrsche (Divide & Conquer): Teile Eingabe in mehrere Teile auf Löse das Problem rekursiv auf den Teilen Füge die Teillösungen zu einer Gesamtlösung zusammen Beispiel (Sortieren):

10 Das Teile & Herrsche-Prinzip Teile & Herrsche (Divide & Conquer): Teile Eingabe in mehrere Teile auf Löse das Problem rekursiv auf den Teilen Füge die Teillösungen zu einer Gesamtlösung zusammen Beispiel (Sortieren): Schritt 1: Aufteilen der Eingabe

11 Das Teile & Herrsche-Prinzip Teile & Herrsche (Divide & Conquer): Teile Eingabe in mehrere Teile auf Löse das Problem rekursiv auf den Teilen Füge die Teillösungen zu einer Gesamtlösung zusammen Beispiel (Sortieren): Schritt 2: Rekursiv das Problem lösen

12 Das Teile & Herrsche-Prinzip Teile & Herrsche (Divide & Conquer): Teile Eingabe in mehrere Teile auf Löse das Problem rekursiv auf den Teilen Füge die Teillösungen zu einer Gesamtlösung zusammen Beispiel (Sortieren): Schritt : Zusammenfügen

13 Das Teile & Herrsche-Prinzip Teile & Herrsche (Divide & Conquer): Teile Eingabe in mehrere Teile auf Löse das Problem rekursiv auf den Teilen Füge die Teillösungen zu einer Gesamtlösung zusammen Beispiel (Sortieren): 4 Schritt : Zusammenfügen

14 Das Teile & Herrsche-Prinzip Teile & Herrsche (Divide & Conquer): Teile Eingabe in mehrere Teile auf Löse das Problem rekursiv auf den Teilen Füge die Teillösungen zu einer Gesamtlösung zusammen Beispiel (Sortieren): 4 Schritt : Zusammenfügen

15 Das Teile & Herrsche-Prinzip Teile & Herrsche (Divide & Conquer): Teile Eingabe in mehrere Teile auf Löse das Problem rekursiv auf den Teilen Füge die Teillösungen zu einer Gesamtlösung zusammen Beispiel (Sortieren): 4 6 Schritt : Zusammenfügen

16 Das Teile & Herrsche-Prinzip Teile & Herrsche (Divide & Conquer): Teile Eingabe in mehrere Teile auf Löse das Problem rekursiv auf den Teilen Füge die Teillösungen zu einer Gesamtlösung zusammen Beispiel (Sortieren): 4 6 Schritt : Zusammenfügen

17 Das Teile & Herrsche-Prinzip Teile & Herrsche (Divide & Conquer): Teile Eingabe in mehrere Teile auf Löse das Problem rekursiv auf den Teilen Füge die Teillösungen zu einer Gesamtlösung zusammen Beispiel (Sortieren): Schritt : Zusammenfügen

18 Das Teile & Herrsche-Prinzip Teile & Herrsche (Divide & Conquer): Teile Eingabe in mehrere Teile auf Löse das Problem rekursiv auf den Teilen Füge die Teillösungen zu einer Gesamtlösung zusammen Beispiel (Sortieren): Schritt : Zusammenfügen

19 Das Teile & Herrsche-Prinzip Teile & Herrsche (Divide & Conquer): Teile Eingabe in mehrere Teile auf Löse das Problem rekursiv auf den Teilen Füge die Teillösungen zu einer Gesamtlösung zusammen Beispiel (Sortieren): Schritt : Zusammenfügen

20 Das Teile & Herrsche-Prinzip Teile & Herrsche (Divide & Conquer): Teile Eingabe in mehrere Teile auf Löse das Problem rekursiv auf den Teilen Füge die Teillösungen zu einer Gesamtlösung zusammen Beispiel (Sortieren): Schritt : Zusammenfügen

21 Das Teile & Herrsche-Prinzip Teile & Herrsche (Divide & Conquer): Teile Eingabe in mehrere Teile auf Löse das Problem rekursiv auf den Teilen Füge die Teillösungen zu einer Gesamtlösung zusammen Beispiel (Sortieren): Schritt : Zusammenfügen

22 Das Teile & Herrsche-Prinzip Teile & Herrsche (Divide & Conquer): Teile Eingabe in mehrere Teile auf Löse das Problem rekursiv auf den Teilen Füge die Teillösungen zu einer Gesamtlösung zusammen Beispiel (Sortieren): Schritt : Zusammenfügen

23 Das Teile & Herrsche-Prinzip Teile & Herrsche (Divide & Conquer): Teile Eingabe in mehrere Teile auf Löse das Problem rekursiv auf den Teilen Füge die Teillösungen zu einer Gesamtlösung zusammen Beispiel (Sortieren): Schritt : Zusammenfügen

24 Das Teile & Herrsche-Prinzip Teile & Herrsche (Divide & Conquer): Teile Eingabe in mehrere Teile auf Löse das Problem rekursiv auf den Teilen Füge die Teillösungen zu einer Gesamtlösung zusammen Beispiel (Sortieren): Schritt : Zusammenfügen

25 Das Teile & Herrsche-Prinzip Teile & Herrsche (Divide & Conquer): Teile Eingabe in mehrere Teile auf Löse das Problem rekursiv auf den Teilen Füge die Teillösungen zu einer Gesamtlösung zusammen Beispiel (Sortieren): Schritt : Zusammenfügen

26 Das Teile & Herrsche-Prinzip Teile & Herrsche (Divide & Conquer): Teile Eingabe in mehrere Teile auf Löse das Problem rekursiv auf den Teilen Füge die Teillösungen zu einer Gesamtlösung zusammen Beispiel (Sortieren): Schritt : Zusammenfügen

27 Das Teile & Herrsche-Prinzip Teile & Herrsche (Divide & Conquer): Teile Eingabe in mehrere Teile auf Löse das Problem rekursiv auf den Teilen Füge die Teillösungen zu einer Gesamtlösung zusammen Wichtig: Benötigen Rekursionsabbruch! Sortieren: Folgen der Länge 1 sind sortiert 27

28 Das Teile & Herrsche-Prinzip Teile & Herrsche Algorithmen: MergeSort Binäre Suche Integer Multiplikation Matrix Multiplikation Nächste Paare Unterschiede: Anzahl der Unterprobleme Größe der Unterprobleme Zeit für Zusammenfügen der Unterprobleme 28

29 Stand der Dinge Laufzeiten der Form: T(n) = a T(n/b) + f(n) Anzahl Unterprobleme Aufwand für Aufteilen und Zusammenfügen Größe der Unterprobleme (bestimmt Höhe des Rekursionsbaums) 29

30 Master Theorem Analyse: Setze a f(n/b) = c f(n) Fall 1: c<1 n f(n) n/b n/b n/b a f(n/b) h h a Θ(1) Höhe des Baums: h = log n b Θ(f(n)) 0

31 Master Theorem Analyse: Setze a f(n/b) = c f(n) Fall 1: c=1 n f(n) n/b n/b n/b a f(n/b) h h a Θ(1) Höhe des Baums: h = log n b Θ(f(n) log n) 1

32 Master Theorem Analyse: Setze a f(n/b) = c f(n) Fall 1: c>1 n f(n) n/b n/b n/b a f(n/b) h h a Θ(1) Höhe des Baums: h = log n b Θ(a log bn ) 2

33 Master Theorem Analyse: Setze a f(n/b) = c f(n) Formale Analyse mit Iterationsoder Substitutionsmethode n f(n) n/b n/b n/b a f(n/b) h h a Θ(1) Höhe des Baums: h = log n b Θ(a log bn )

34 Gierige Algorithmen Prinzip: Konstruiere Lösung Schritt für Schritt In jedem Schritt: Optimiere ein einfaches, lokales Kriterium Beobachtung: Man kann viele unterschiedliche gierige Algorithmen für ein Problem entwickeln Nicht jeder dieser Algorithmen löst das Problem korrekt 4

35 Gierige Algorithmen Interval Scheduling: Ressource (Hörsaal, Parallelrechner, Elektronenmikroskop,..) Anfragen: Kann ich die Ressource für den Zeitraum (t 1,t 2) nutzen? Ziel: Möglichst viele Anfragen erfüllen

36 Gierige Algorithmen Worauf muss man achten? Resource muss möglichst früh wieder frei werden! Neue Strategie: Nimm die Anfrage, die am frühesten fertig ist. 6

37 Gierige Algorithmen Worauf muss man achten? Resource muss möglichst früh wieder frei werden! Neue Strategie: Nimm die Anfrage, die am frühesten fertig ist. 7

38 Gierige Algorithmen Worauf muss man achten? Resource muss möglichst früh wieder frei werden! Neue Strategie: Nimm die Anfrage, die am frühesten fertig ist. 8

39 Gierige Algorithmen Worauf muss man achten? Resource muss möglichst früh wieder frei werden! Neue Strategie: Nimm die Anfrage, die am frühesten fertig ist. 9

40 Gierige Algorithmen Worauf muss man achten? Resource muss möglichst früh wieder frei werden! Neue Strategie: Nimm die Anfrage, die am frühesten fertig ist. 40

41 Gierige Algorithmen Worauf muss man achten? Resource muss möglichst früh wieder frei werden! Neue Strategie: Nimm die Anfrage, die am frühesten fertig ist. 41

42 Gierige Algorithmen Worauf muss man achten? Resource muss möglichst früh wieder frei werden! Neue Strategie: Nimm die Anfrage, die am frühesten fertig ist. 42

43 Gierige Algorithmen Worauf muss man achten? Resource muss möglichst früh wieder frei werden! Neue Strategie: Nimm die Anfrage, die am frühesten fertig ist. 4

44 Gierige Algorithmen Gierige Algorithmen: Interval Scheduling Probleme Huffman Codes Dijkstras kürzeste Wege Algorithmus Minimale Spannbäume (Kruskal und Prim) 44

45 Dynamische Programmierung Rekursiver Ansatz: Lösen eines Problems durch Lösen mehrerer kleinerer Teilprobleme, aus denen sich die Lösung für das Ausgangsproblem zusammensetzt Phänomen: Mehrfachberechnungen von Lösungen Methode: Lösungen zu Teilproblemen werden iterativ beginnend mit den Lösungen der kleinsten Teilprobleme berechnet (bottom-up). Speichern einmal berechneter Lösungen in einer Tabelle 4

46 Dynamische Programmierung Subset Sum (Entscheidungsvariante): Eingabe: Menge X mit n pos. Integers und ein Zielwert W Ausgabe: true, wenn es Menge S X mit Σ x = W gibt x S false, sonst 46

47 Dynamische Programmierung IterativeSubsetSum(X,W) 1. n length[a] 2. A[0] true. for i 1 to W do 4. A[i] false. for j 1 to n do 6. for i W downto 0 do 7. if A[i]=true then A[i+X[j]] true 8. return A[W] 47

48 Dynamische Programmierung Algorithmen: Längste gemeinsame Teilfolge Subset Sum Rucksackproblem Bellman-Ford (SSSP) Floyd-Warshall (APSP) Wichtigster Schritt: Rekursion aufstellen 48

49 Datenstrukturen Problem: Gegeben sind n Objekte O 1,.., O nmit zugehörigen Schlüsseln s(o ) Operationen: i Suche(x); Ausgabe O mit Schlüssel s(o) =x; nil, falls kein Objekt mit Schlüssel x in Datenbank Einfügen(O); Einfügen von Objekt O in Datenbank Löschen(O); Löschen von Objekt O mit aus der Datenbank 49

50 Datenstrukturen AVL-Bäume Ein Baum heißt AVL-Baum, wenn für jeden Knoten gilt: Die Höhe seines linken und rechten Teilbaums unterscheidet sich höchstens um 1. 0

51 Datenstrukturen Rotationen: y x x Rechtsrotation(T,y) y C Linksrotation(T,x) A A B B C 1

52 Datenstrukturen Datenstrukturen: Felder, Listen, Schlangen, Suchbäume AVL-Bäume Hash Tabellen Halden Union-Find Algorithmen mit Datenstrukturen: Heapsort Graphenalgorithmen 2

53 Graphalgorithmen Definition Ein Graph G ist ein Paar (V,E). V heißt Knotenmenge und E V V Kantenmenge des Graphen. Darstellung von Graphen Adjazenzlisten (dünne Graphen, E << V ²) Adjazenzmatrix (dichte Graphen, E nah an V ²) Arten von Graphen Ungerichtet, gerichtet Ungewichtet, gewichtet

54 Graphalgorithmen Kruskal(G) 1. A 2. Sortiere Kanten nach Gewicht. for each (u,v) E geordnet nach aufsteigendem Gewicht do 4. if u und v sind nicht in der selben Zusammenhangskomponente in Graph H=(V,A) then. A A {(u,v)} 6. return A

55 Graphalgorithmen Kruskal(G) 1. A 2. Sortiere Kanten nach Gewicht. for each (u,v) E geordnet nach aufsteigendem Gewicht do 4. if u und v sind nicht in der selben Zusammenhangskomponente in Graph H=(V,A) then. A A {(u,v)} 6. return A

56 Graphalgorithmen Kruskal(G) 1. A 2. Sortiere Kanten nach Gewicht. for each (u,v) E geordnet nach aufsteigendem Gewicht do 4. if u und v sind nicht in der selben Zusammenhangskomponente in Graph H=(V,A) then. A A {(u,v)} 6. return A

57 Graphalgorithmen Kruskal(G) 1. A 2. Sortiere Kanten nach Gewicht. for each (u,v) E geordnet nach aufsteigendem Gewicht do 4. if u und v sind nicht in der selben Zusammenhangskomponente in Graph H=(V,A) then. A A {(u,v)} 6. return A

58 Graphalgorithmen Kruskal(G) 1. A 2. Sortiere Kanten nach Gewicht. for each (u,v) E geordnet nach aufsteigendem Gewicht do 4. if u und v sind nicht in der selben Zusammenhangskomponente in Graph H=(V,A) then. A A {(u,v)} 6. return A

59 Graphalgorithmen Kruskal(G) 1. A 2. Sortiere Kanten nach Gewicht. for each (u,v) E geordnet nach aufsteigendem Gewicht do 4. if u und v sind nicht in der selben Zusammenhangskomponente in Graph H=(V,A) then. A A {(u,v)} 6. return A

60 Graphalgorithmen Kruskal(G) 1. A 2. Sortiere Kanten nach Gewicht. for each (u,v) E geordnet nach aufsteigendem Gewicht do 4. if u und v sind nicht in der selben Zusammenhangskomponente in Graph H=(V,A) then. A A {(u,v)} 6. return A

61 Graphalgorithmen Kruskal(G) 1. A 2. Sortiere Kanten nach Gewicht. for each (u,v) E geordnet nach aufsteigendem Gewicht do 4. if u und v sind nicht in der selben Zusammenhangskomponente in Graph H=(V,A) then. A A {(u,v)} 6. return A

62 Graphalgorithmen Kruskal(G) 1. A 2. Sortiere Kanten nach Gewicht. for each (u,v) E geordnet nach aufsteigendem Gewicht do 4. if u und v sind nicht in der selben Zusammenhangskomponente in Graph H=(V,A) then. A A {(u,v)} 6. return A

63 Graphalgorithmen Kruskal(G) 1. A 2. Sortiere Kanten nach Gewicht. for each (u,v) E geordnet nach aufsteigendem Gewicht do 4. if u und v sind nicht in der selben Zusammenhangskomponente in Graph H=(V,A) then. A A {(u,v)} 6. return A

64 Graphalgorithmen Kruskal(G) 1. A 2. Sortiere Kanten nach Gewicht. for each (u,v) E geordnet nach aufsteigendem Gewicht do 4. if u und v sind nicht in der selben Zusammenhangskomponente in Graph H=(V,A) then. A A {(u,v)} 6. return A

65 Graphalgorithmen Kruskal(G) 1. A 2. Sortiere Kanten nach Gewicht. for each (u,v) E geordnet nach aufsteigendem Gewicht do 4. if u und v sind nicht in der selben Zusammenhangskomponente in Graph H=(V,A) then. A A {(u,v)} 6. return A

66 Graphalgorithmen Kruskal(G) 1. A 2. Sortiere Kanten nach Gewicht. for each (u,v) E geordnet nach aufsteigendem Gewicht do 4. if u und v sind nicht in der selben Zusammenhangskomponente in Graph H=(V,A) then. A A {(u,v)} 6. return A

67 Graphalgorithmen Kruskal(G) 1. A 2. Sortiere Kanten nach Gewicht. for each (u,v) E geordnet nach aufsteigendem Gewicht do 4. if u und v sind nicht in der selben Zusammenhangskomponente in Graph H=(V,A) then. A A {(u,v)} 6. return A

68 Graphalgorithmen Kruskal(G) 1. A 2. Sortiere Kanten nach Gewicht. for each (u,v) E geordnet nach aufsteigendem Gewicht do 4. if u und v sind nicht in der selben Zusammenhangskomponente in Graph H=(V,A) then. A A {(u,v)} 6. return A

69 Graphalgorithmen Kruskal(G) 1. A 2. Sortiere Kanten nach Gewicht. for each (u,v) E geordnet nach aufsteigendem Gewicht do 4. if u und v sind nicht in der selben Zusammenhangskomponente in Graph H=(V,A) then. A A {(u,v)} 6. return A

70 Graphalgorithmen Kruskal(G) 1. A 2. Sortiere Kanten nach Gewicht. for each (u,v) E geordnet nach aufsteigendem Gewicht do 4. if u und v sind nicht in der selben Zusammenhangskomponente in Graph H=(V,A) then. A A {(u,v)} 6. return A

71 Graphalgorithmen Kruskal(G) 1. A 2. Sortiere Kanten nach Gewicht. for each (u,v) E geordnet nach aufsteigendem Gewicht do 4. if u und v sind nicht in der selben Zusammenhangskomponente in Graph H=(V,A) then. A A {(u,v)} 6. return A

72 Graphalgorithmen Kruskal(G) 1. A 2. Sortiere Kanten nach Gewicht. for each (u,v) E geordnet nach aufsteigendem Gewicht do 4. if u und v sind nicht in der selben Zusammenhangskomponente in Graph H=(V,A) then. A A {(u,v)} 6. return A

73 Graphalgorithmen Kruskal(G) 1. A 2. Sortiere Kanten nach Gewicht. for each (u,v) E geordnet nach aufsteigendem Gewicht do 4. if u und v sind nicht in der selben Zusammenhangskomponente in Graph H=(V,A) then. A A {(u,v)} 6. return A

74 Graphalgorithmen Kruskal(G) 1. A 2. Sortiere Kanten nach Gewicht. for each (u,v) E geordnet nach aufsteigendem Gewicht do 4. if u und v sind nicht in der selben Zusammenhangskomponente in Graph H=(V,A) then. A A {(u,v)} 6. return A

75 Graphalgorithmen Kruskal(G) 1. A 2. Sortiere Kanten nach Gewicht. for each (u,v) E geordnet nach aufsteigendem Gewicht do 4. if u und v sind nicht in der selben Zusammenhangskomponente in Graph H=(V,A) then. A A {(u,v)} 6. return A

76 Graphalgorithmen Kruskal(G) 1. A 2. Sortiere Kanten nach Gewicht. for each (u,v) E geordnet nach aufsteigendem Gewicht do 4. if u und v sind nicht in der selben Zusammenhangskomponente in Graph H=(V,A) then. A A {(u,v)} 6. return A

77 Graphalgorithmen Kruskal(G) 1. A 2. Sortiere Kanten nach Gewicht. for each (u,v) E geordnet nach aufsteigendem Gewicht do 4. if u und v sind nicht in der selben Zusammenhangskomponente in Graph H=(V,A) then. A A {(u,v)} 6. return A

78 Graphalgorithmen Kruskal(G) 1. A 2. Sortiere Kanten nach Gewicht. for each (u,v) E geordnet nach aufsteigendem Gewicht do 4. if u und v sind nicht in der selben Zusammenhangskomponente in Graph H=(V,A) then. A A {(u,v)} 6. return A

79 Graphalgorithmen Kruskal(G) 1. A 2. Sortiere Kanten nach Gewicht. for each (u,v) E geordnet nach aufsteigendem Gewicht do 4. if u und v sind nicht in der selben Zusammenhangskomponente in Graph H=(V,A) then. A A {(u,v)} 6. return A

80 Graphalgorithmen Kruskal(G) 1. A 2. Sortiere Kanten nach Gewicht. for each (u,v) E geordnet nach aufsteigendem Gewicht do 4. if u und v sind nicht in der selben Zusammenhangskomponente in Graph H=(V,A) then. A A {(u,v)} 6. return A

81 Graphalgorithmen Kruskal(G) 1. A 2. Sortiere Kanten nach Gewicht. for each (u,v) E geordnet nach aufsteigendem Gewicht do 4. if u und v sind nicht in der selben Zusammenhangskomponente in Graph H=(V,A) then. A A {(u,v)} 6. return A

82 Graphalgorithmen Kruskal(G) 1. A 2. Sortiere Kanten nach Gewicht. for each (u,v) E geordnet nach aufsteigendem Gewicht do 4. if u und v sind nicht in der selben Zusammenhangskomponente in Graph H=(V,A) then. A A {(u,v)} 6. return A

83 Graphalgorithmen Kruskal(G) 1. A 2. Sortiere Kanten nach Gewicht. for each (u,v) E geordnet nach aufsteigendem Gewicht do 4. if u und v sind nicht in der selben Zusammenhangskomponente in Graph H=(V,A) then. A A {(u,v)} 6. return A

84 Graphalgorithmen Kruskal(G) 1. A 2. Sortiere Kanten nach Gewicht. for each (u,v) E geordnet nach aufsteigendem Gewicht do 4. if u und v sind nicht in der selben Zusammenhangskomponente in Graph H=(V,A) then. A A {(u,v)} 6. return A

85 Graphalgorithmen Kruskal(G) 1. A 2. Sortiere Kanten nach Gewicht. for each (u,v) E geordnet nach aufsteigendem Gewicht do 4. if u und v sind nicht in der selben Zusammenhangskomponente in Graph H=(V,A) then. A A {(u,v)} 6. return A

86 Graphalgorithmen Kruskal(G) 1. A 2. Sortiere Kanten nach Gewicht. for each (u,v) E geordnet nach aufsteigendem Gewicht do 4. if u und v sind nicht in der selben Zusammenhangskomponente in Graph H=(V,A) then. A A {(u,v)} 6. return A

87 Graphalgorithmen Algorithmen: Breitensuche Tiefensuche Dijkstras kürzeste Wege Bellman-Ford kürzeste Wege Floyd-Warshall (all pairs kürzeste Wege) Minimale Spannbäume (Kruskal) Minimale Spannbäume (Prim) Transitive Hülle 87

88 Viel Erfolg bei der Klausur und schöne Semeserferien! 88

15. Elementare Graphalgorithmen

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

Mehr

Dynamisches Programmieren - Problemstruktur

Dynamisches Programmieren - Problemstruktur Dynamisches Programmieren - Problemstruktur Optimale Substruktur: Optimale Lösung enthält optimale Lösungen von Teilproblemen. Bsp.: Kürzester Weg im Graphen, LCS (s. etwa Folie 42 der letzten Vorlesung)

Mehr

Algorithmen und Datenstrukturen

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

Mehr

Wie wird ein Graph dargestellt?

Wie wird ein Graph dargestellt? Wie wird ein Graph dargestellt? Für einen Graphen G = (V, E), ob gerichtet oder ungerichtet, verwende eine Adjazenzliste A G : A G [i] zeigt auf eine Liste aller Nachbarn von Knoten i, wenn G ungerichtet

Mehr

Übung Algorithmen und Datenstrukturen

Übung Algorithmen und Datenstrukturen Übung Algorithmen und Datenstrukturen Sommersemester 217 Marc Bux, Humboldt-Universität zu Berlin Agenda 1. Graphen und Bäume 2. Binäre Suchbäume 3. AVL-Bäume 4. Algorithmen und Datenstrukturen 2 Agenda

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

Methoden für den Entwurf von Algorithmen

Methoden für den Entwurf von Algorithmen Methoden für den Entwurf von Algorithmen Greedy Algorithmen: - Löse ein einfaches Optimierungsproblem durch eine Folge vernünftiger Entscheidungen. - Eine getroffene Entscheidung wird nie zurückgenommen.

Mehr

Divide & Conquer. Problem in Teilprobleme aufteilen Teilprobleme rekursiv lösen Lösung aus Teillösungen zusammensetzen

Divide & Conquer. Problem in Teilprobleme aufteilen Teilprobleme rekursiv lösen Lösung aus Teillösungen zusammensetzen Teile & Herrsche: Divide & Conquer Problem in Teilprobleme aufteilen Teilprobleme rekursiv lösen Lösung aus Teillösungen zusammensetzen Probleme: Wie setzt man zusammen? [erfordert algorithmisches Geschick

Mehr

Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2014 / Vorlesung 9, Donnerstag 18.

Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2014 / Vorlesung 9, Donnerstag 18. Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2014 / 2015 Vorlesung 9, Donnerstag 18. Dezember 2014 (Teile und Herrsche, Mastertheorem) Junior-Prof. Dr.

Mehr

Graphalgorithmen 2. Dominik Paulus Dominik Paulus Graphalgorithmen / 47

Graphalgorithmen 2. Dominik Paulus Dominik Paulus Graphalgorithmen / 47 Graphalgorithmen Dominik Paulus.0.01 Dominik Paulus Graphalgorithmen.0.01 1 / 7 1 Spannbäume Kruskal Prim Edmonds/Chu-Liu Datenstrukturen Fibonacci-Heap Union/Find Kürzeste Pfade Dijkstra Bellman-Ford

Mehr

Grundlagen der Algorithmen und Datenstrukturen Kapitel 12

Grundlagen der Algorithmen und Datenstrukturen Kapitel 12 Grundlagen der Algorithmen und Datenstrukturen Kapitel 12 Christian Scheideler + Helmut Seidl SS 2009 28.06.09 Kapitel 12 1 Generische Optimierungsverfahren Techniken: Systematische Suche lass nichts aus

Mehr

Berechnung minimaler Spannbäume. Beispiel

Berechnung minimaler Spannbäume. Beispiel Minimale Spannbäume Definition Sei G pv, Eq ein ungerichteter Graph und sei w : E Ñ R eine Funktion, die jeder Kante ein Gewicht zuordnet. Ein Teilgraph T pv 1, E 1 q von G heißt Spannbaum von G genau

Mehr

Datenstrukturen und Algorithmen

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

Mehr

Vorlesung Datenstrukturen

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

Mehr

Algorithmen und Datenstrukturen 13

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

Mehr

Stud.-Nummer: Datenstrukturen & Algorithmen Seite 1

Stud.-Nummer: Datenstrukturen & Algorithmen Seite 1 Stud.-Nummer: Datenstrukturen & Algorithmen Seite 1 Aufgabe 1. / 16 P Instruktionen: 1) In dieser Aufgabe sollen Sie nur die Ergebnisse angeben. Diese können Sie direkt bei den Aufgaben notieren. 2) Sofern

Mehr

2. November Gradfolgen Zusammenhang Kürzeste Wege. H. Meyerhenke: Algorithmische Methoden zur Netzwerkanalyse 37

2. November Gradfolgen Zusammenhang Kürzeste Wege. H. Meyerhenke: Algorithmische Methoden zur Netzwerkanalyse 37 2. November 2011 Gradfolgen Zusammenhang Kürzeste Wege H. Meyerhenke: Algorithmische Methoden zur Netzwerkanalyse 37 Satz von Erdős und Gallai Eine Partition einer natürlichen Zahl ist genau dann die Gradfolge

Mehr

Grundlagen: Algorithmen und Datenstrukturen

Grundlagen: Algorithmen und Datenstrukturen Grundlagen: Algorithmen und Datenstrukturen Prof. Dr. Hanjo Täubig Lehrstuhl für Effiziente Algorithmen (Prof. Dr. Ernst W. Mayr) Institut für Informatik Technische Universität München Sommersemester 00

Mehr

Aufgaben zur Klausurvorbereitung

Aufgaben zur Klausurvorbereitung Vorlesung Graphen und Optimierung Sommersemester 2013/14 Prof. S. Lange Aufgaben zur Klausurvorbereitung Hier finden Sie eine Reihe von Übungsaufgaben, die wir an den beiden Vorlesungsterminen am 29.01.2014

Mehr

Übung Algorithmen und Datenstrukturen

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

Mehr

2. Grundlagen. Beschreibung von Algorithmen durch Pseudocode. Korrektheit von Algorithmen durch Invarianten.

2. Grundlagen. Beschreibung von Algorithmen durch Pseudocode. Korrektheit von Algorithmen durch Invarianten. 2. Grundlagen Beschreibung von Algorithmen durch Pseudocode. Korrektheit von Algorithmen durch Invarianten. Laufzeitverhalten beschreiben durch O-Notation. 1 Beispiel Minimum-Suche Eingabe bei Minimum

Mehr

Kapitel 5: Paradigmen des Algorithmenentwurfs. Gliederung

Kapitel 5: Paradigmen des Algorithmenentwurfs. Gliederung Gliederung 1. Grundlagen 2. Analyse der Laufzeit von Algorithmen 3. Untere Schranken für algorithmische Probleme 4. Sortier- und Selektionsverfahren 5. Paradigmen des Algorithmenentwurfs 6. Ausgewählte

Mehr

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

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

Mehr

Algorithmen I. Tutorium Sitzung. Dennis Felsing

Algorithmen I. Tutorium Sitzung. Dennis Felsing Algorithmen I Tutorium 1-12. Sitzung Dennis Felsing dennis.felsing@student.kit.edu www.stud.uni-karlsruhe.de/~ubcqr/algo 2011-07-04 Überblick 1 Dynamische Programmierung Idee Längste gemeinsame Teilfolge

Mehr

Karlsruher Institut für Technologie Institut für Theoretische Informatik. Klausur Algorithmen I

Karlsruher Institut für Technologie Institut für Theoretische Informatik. Klausur Algorithmen I Vorname: Matrikelnummer: Karlsruher Institut für Technologie Institut für Theoretische Informatik Prof. Jörn Müller-Quade 4. September 2017 Klausur Algorithmen I Aufgabe 1. Kleinaufgaben 15 Punkte Aufgabe

Mehr

Klausur Theoretische Informatik I WS 2004/2005

Klausur Theoretische Informatik I WS 2004/2005 Technische Universität Chemnitz Chemnitz, den 22.02.2005 Fakultät für Informatik Prof. Dr. Andreas Goerdt Klausur Theoretische Informatik I WS 2004/2005 Studiengang Mechatronik Aufgabe 1 (2+2+2 Punkte)

Mehr

Kürzeste Wege in Graphen

Kürzeste Wege in Graphen Kürzeste Wege in Graphen Algorithmische Paradigmen In diesem Abschnitt wollen wir nicht nur neue Algorithmen vorstellen, sondern auch den Blick auf Gemeinsamkeiten und prinzipielle Unterschiede zwischen

Mehr

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

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

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen 13. Übung minimale Spannbäume, topologische Sortierung, AVL-Bäume Clemens Lang Übungen zu AuD 4. Februar 2010 Clemens Lang (Übungen zu AuD) Algorithmen und Datenstrukturen

Mehr

NAME, VORNAME: Studiennummer: Matrikel:

NAME, VORNAME: Studiennummer: Matrikel: TU Ilmenau, Fakultat IA Institut für Theoretische Informatik FG Komplexitätstheorie und Effiziente Algorithmen Prof. Dr. (USA) M. Dietzfelbinger Klausur Algorithmen und Datenstrukturen SS08, Ing.-Inf.

Mehr

Informatik II, SS 2016

Informatik II, SS 2016 Informatik II - SS 2014 (Algorithmen & Datenstrukturen) Vorlesung 2 (22.4.2016) Sortieren II Algorithmen und Komplexität SelectionSort: Programm Schreiben wir doch das gleich mal als Java/C++ - Programm

Mehr

Algorithmen und Datenstrukturen (für ET/IT)

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

Mehr

1. Einführung. Was ist ein Algorithmus (eine Datenstruktur)? Welche Probleme kann man damit lösen? Warum betrachten wir (effiziente) Algorithmen?

1. Einführung. Was ist ein Algorithmus (eine Datenstruktur)? Welche Probleme kann man damit lösen? Warum betrachten wir (effiziente) Algorithmen? 1. Einführung Was ist ein Algorithmus (eine Datenstruktur)? Welche Probleme kann man damit lösen? Warum betrachten wir (effiziente) Algorithmen? Wie beschreiben wir Algorithmen? Nach welchen Kriterien

Mehr

Algorithmen & Datenstrukturen 2 Praktikum 3

Algorithmen & Datenstrukturen 2 Praktikum 3 Algorithmen & Datenstrukturen 2 Praktikum 3 Thema: Graphalgorithmen Sommersemester 2016 Prof. Dr. Christoph Karg Hochschule Aalen Dieses Praktikum widmet sich dem Thema Graphalgorithmen. Ziel ist die Implementierung

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Wintersemester 2012/13 25. Vorlesung Dynamisches Programmieren Prof. Dr. Alexander Wolff Lehrstuhl für Informatik I Klausurvorbereitung Tipp: Schreiben Sie sich alle Fragen

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

Datenstrukturen und SS Robert Elsässer

Datenstrukturen und SS Robert Elsässer Datenstrukturen und Algorithmen Robert Elsässer Organisatorisches Vorlesung: Mo 11:15-12:45 Audimax Fr 11:15-12:45 Raum G Zentralübung: Do 13:00 13:45 Raum G Beginn: nächste Woche Übungen: Beginn: nächste

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

Informatik B Sommersemester Musterlösung zur Klausur vom

Informatik B Sommersemester Musterlösung zur Klausur vom Informatik B Sommersemester 007 Musterlösung zur Klausur vom 0.07.007 Aufgabe : Graphen und Graphalgorithmen + + + () Punkte Für eine beliebige positive, ganze Zahl n definieren wir einen Graphen G n =

Mehr

Algorithmen und Datenstrukturen Tutorium Übungsaufgaben

Algorithmen und Datenstrukturen Tutorium Übungsaufgaben Algorithmen und Datenstrukturen Tutorium Übungsaufgaben AlgoDat - Übungsaufgaben 1 1 Landau-Notation Aufgabe Lösung 2 Rekurrenzen Aufgabe 3 Algorithmenentwurf und -analyse Aufgabe AlgoDat - Übungsaufgaben

Mehr

Klausur Algorithmentheorie

Klausur Algorithmentheorie Prof. Dr. G. Schnitger Frankfurt, den 13.02.2009 Klausur Algorithmentheorie WS 2008/2009 Name: Vorname: Studiengang: BITTE GENAU LESEN Die Klausur besteht aus 4 Aufgaben, in denen maximal 100 Punkte erreicht

Mehr

Algorithmen & Komplexität

Algorithmen & Komplexität Algorithmen & Komplexität Angelika Steger Institut für Theoretische Informatik steger@inf.ethz.ch Kürzeste Pfade Problem Gegeben Netzwerk: Graph G = (V, E), Gewichtsfunktion w: E N Zwei Knoten: s, t Kantenzug/Weg

Mehr

Informatik II: Algorithmen & Datenstrukturen. Blättern Sie nicht um bevor Sie dazu aufgefordert werden!

Informatik II: Algorithmen & Datenstrukturen. Blättern Sie nicht um bevor Sie dazu aufgefordert werden! Albert-Ludwigs-Universität Institut für Informatik Prof. Dr. F. Kuhn Informatik II: Algorithmen & Datenstrukturen Montag, 29. August, 2014, 14:00 17:00 Name:...........................................................

Mehr

Ferienkurs zur algorithmischen diskreten Mathematik Kapitel 1: Grundlagen der algorithmischen Graphentheorie

Ferienkurs zur algorithmischen diskreten Mathematik Kapitel 1: Grundlagen der algorithmischen Graphentheorie Ferienkurs zur algorithmischen diskreten Mathematik Kapitel 1: Grundlagen der algorithmischen Graphentheorie Dipl-Math. Wolfgang Kinzner 2.4.2012 Kapitel 1: Grundlagen der algorithmischen Graphgentheorie

Mehr

Vorlesung Datenstrukturen

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

Mehr

Algorithmen und Datenstrukturen Tafelübung 14. Jens Wetzl 8. Februar 2012

Algorithmen und Datenstrukturen Tafelübung 14. Jens Wetzl 8. Februar 2012 Algorithmen und Datenstrukturen Tafelübung 14 Jens Wetzl 8. Februar 2012 Folien Keine Garantie für Vollständigkeit und/oder Richtigkeit Keine offizielle Informationsquelle LS2-Webseite Abrufbar unter:

Mehr

Der Rekursionsbaum hat

Der Rekursionsbaum hat Prof. aa Dr. E. Ábrahám Datenstrukturen und Algorithmen SS Lösung - Klausur.09.0 F. Corzilius, S. Schupp, T. Ströder Aufgabe (Laufzeitanalyse): a) Beweisen oder widerlegen Sie: log(n) O( n) ( + + + = 9

Mehr

Sortieren II / HeapSort Heaps

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

Mehr

Tutoraufgabe 1 (Starke Zusammenhangskomponenten):

Tutoraufgabe 1 (Starke Zusammenhangskomponenten): für Informatik Prof. aa Dr. Ir. Joost-Pieter Katoen Allgemeine Hinweise: Datenstrukturen und Algorithmen SS1 Übungsblatt (Abgabe 4.0.01) Christian Dehnert, Friedrich Gretz, Benjamin Kaminski, Thomas Ströder

Mehr

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

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

Mehr

Inhaltsverzeichnis. I Grundlegende Konzepte 1. xiii

Inhaltsverzeichnis. I Grundlegende Konzepte 1. xiii D3kjd3Di38lk323nnm xiii I Grundlegende Konzepte 1 1 Vorbemerkungen und Überblick... 3 1.1 Informatik, Algorithmen und Datenstrukturen....... 3 1.2 Historischer Überblick: Algorithmen................. 5

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Gunter Saake Kai-Uwe Sattler Algorithmen und Datenstrukturen Eine Einführung mit Java 4., überarbeitete Auflage dpunkt.verlag XI Inhaltsverzeichnis I Grundlegende Konzepte 1 1 Vorbemerkungen und Überblick

Mehr

4.2 Minimale Spannbäume: Der Algorithmus von Jarník/Prim Definition 4.2.1

4.2 Minimale Spannbäume: Der Algorithmus von Jarník/Prim Definition 4.2.1 Allgemeines. Minimale Spannbäume: Der Algorithmus von Jarník/Prim Definition.. (a) Ein Graph G =(V, E) heißt kreisfrei, wenn er keinen Kreis besitzt. Beispiel: Ein kreisfreier Graph: FG KTuEA, TU Ilmenau

Mehr

Karlsruher Institut für Technologie Institut für Theoretische Informatik. Klausur Algorithmen I

Karlsruher Institut für Technologie Institut für Theoretische Informatik. Klausur Algorithmen I Name: Vorname: Matrikelnummer: Klausur-ID: svorschlag Karlsruher Institut für Technologie Institut für Theoretische Informatik Jun.-Prof. D. Hofheinz, Jun.-Prof. H. Meyerhenke 8.09.05 Klausur Algorithmen

Mehr

Algorithmen und Komplexität Lösungsvorschlag zu Übungsblatt 8

Algorithmen und Komplexität Lösungsvorschlag zu Übungsblatt 8 ETH Zürich Institut für Theoretische Informatik Prof. Dr. Angelika Steger Florian Meier, Ralph Keusch HS 2017 Algorithmen und Komplexität Lösungsvorschlag zu Übungsblatt 8 Lösungsvorschlag zu Aufgabe 1

Mehr

19. Dynamic Programming I

19. Dynamic Programming I 495 19. Dynamic Programming I Fibonacci, Längste aufsteigende Teilfolge, längste gemeinsame Teilfolge, Editierdistanz, Matrixkettenmultiplikation, Matrixmultiplikation nach Strassen [Ottman/Widmayer, Kap.

Mehr

Algorithmen & Komplexität

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

Mehr

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

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

Mehr

Relationen und DAGs, starker Zusammenhang

Relationen und DAGs, starker Zusammenhang Relationen und DAGs, starker Zusammenhang Anmerkung: Sei D = (V, E). Dann ist A V V eine Relation auf V. Sei andererseits R S S eine Relation auf S. Dann definiert D = (S, R) einen DAG. D.h. DAGs sind

Mehr

Graphenalgorithmen I

Graphenalgorithmen I Graphenalgorithmen I Vortrag im Seminar Hallo Welt! für Fortgeschrittene 7. Juni 211 Graphenalgorithmen I 1/33 Motivation Problem Wie komme ich am schnellsten ins Kanapee? Problem Wie kommt ein Datenpaket

Mehr

Quicksort ist ein Divide-and-Conquer-Verfahren.

Quicksort ist ein Divide-and-Conquer-Verfahren. . Quicksort Wie bei vielen anderen Sortierverfahren (Bubblesort, Mergesort, usw.) ist auch bei Quicksort die Aufgabe, die Elemente eines Array a[..n] zu sortieren. Quicksort ist ein Divide-and-Conquer-Verfahren.

Mehr

8. A & D - Heapsort. Werden sehen, wie wir durch geschicktes Organsieren von Daten effiziente Algorithmen entwerfen können.

8. A & D - Heapsort. Werden sehen, wie wir durch geschicktes Organsieren von Daten effiziente Algorithmen entwerfen können. 8. A & D - Heapsort Werden sehen, wie wir durch geschicktes Organsieren von Daten effiziente Algorithmen entwerfen können. Genauer werden wir immer wieder benötigte Operationen durch Datenstrukturen unterstützen.

Mehr

Sortieren & Co. KIT Institut für Theoretische Informatik

Sortieren & Co. KIT Institut für Theoretische Informatik Sortieren & Co KIT Institut für Theoretische Informatik 1 Formaler Gegeben: Elementfolge s = e 1,...,e n Gesucht: s = e 1,...,e n mit s ist Permutation von s e e 1 n für eine Totalordnung ` ' KIT Institut

Mehr

Datenstrukturen und Algorithmen

Datenstrukturen und Algorithmen Datenstrukturen und Algorithmen VO 708.031 robert.legenstein@igi.tugraz.at 1 Kapitel 2 Algorithmische robert.legenstein@igi.tugraz.at 2 2. Algorithmische 1) Iterative Algorithmen 2) Rekursive Algorithmen

Mehr

9 Minimum Spanning Trees

9 Minimum Spanning Trees Im Folgenden wollen wir uns genauer mit dem Minimum Spanning Tree -Problem auseinandersetzen. 9.1 MST-Problem Gegeben ein ungerichteter Graph G = (V,E) und eine Gewichtsfunktion w w : E R Man berechne

Mehr

2. Effizienz von Algorithmen

2. Effizienz von Algorithmen Effizienz von Algorithmen 2. Effizienz von Algorithmen Effizienz von Algorithmen, Random Access Machine Modell, Funktionenwachstum, Asymptotik [Cormen et al, Kap. 2.2,3,4.2-4.4 Ottman/Widmayer, Kap. 1.1]

Mehr

Kürzeste Pfade. Organisatorisches. VL-17: Kürzeste Pfade. (Datenstrukturen und Algorithmen, SS 2017) Walter Unger

Kürzeste Pfade. Organisatorisches. VL-17: Kürzeste Pfade. (Datenstrukturen und Algorithmen, SS 2017) Walter Unger Organisatorisches VL-17: Kürzeste Pfade (Datenstrukturen und Algorithmen, SS 2017) Walter Unger Vorlesung: Gerhard Woeginger (Zimmer 4024 im E1) Sprechstunde: Mittwoch 11:15 12:00 Übungen: Tim Hartmann,

Mehr

Algorithmen und Datenstrukturen (für ET/IT)

Algorithmen und Datenstrukturen (für ET/IT) Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 07 Dr. Stefanie Demirci Computer Aided Medical Procedures Technische Universität München Programm heute Einführung Grundlagen von Algorithmen

Mehr

Top-down Bottom-up Divide & Conquer Dynamisches Programmieren Caching (Memoization) Branch-and-Bound Greedy

Top-down Bottom-up Divide & Conquer Dynamisches Programmieren Caching (Memoization) Branch-and-Bound Greedy 2.2 Entwurfsparadigmen Top-down Bottom-up Divide & Conquer Dynamisches Programmieren Caching (Memoization) Branch-and-Bound Greedy 1 Top-Down Zerlege das gegebene Problem in Teilschritte Zerlege Teilschritte

Mehr

Der Dreyfus-Wagner Algorithmus für das Steiner Baum Problem

Der Dreyfus-Wagner Algorithmus für das Steiner Baum Problem Der Dreyfus-Wagner Algorithmus für das Steiner Baum Problem Andreas Moser Dietmar Ebner Christian Schauer Markus Bauer 9. Dezember 2003 1 Einführung Der in der Vorlesung gezeigte Algorithmus für das Steiner

Mehr

Datenstrukturen und Algorithmen D-INFK

Datenstrukturen und Algorithmen D-INFK Eidgenössische Technische Hochschule Zürich Ecole polytechnique fédérale de Zurich Politecnico federale di Zurigo Federal Institute of Technology at Zurich Institut für Theoretische Informatik Peter Widmayer

Mehr

Klausur Algorithmen und Datenstrukturen

Klausur Algorithmen und Datenstrukturen Technische Universität Braunschweig Wintersemester 2013/2014 Institut für Betriebssysteme und Rechnerverbund Abteilung Algorithmik Prof. Dr. Sándor P. Fekete Stephan Friedrichs Klausur Algorithmen und

Mehr

Konvexe Hülle. Abbildung: [Wikipedia]: Nicht-konvexe Menge (links), konvexe Menge (rechts) KIT Institut für Theoretische Informatik 510

Konvexe Hülle. Abbildung: [Wikipedia]: Nicht-konvexe Menge (links), konvexe Menge (rechts) KIT Institut für Theoretische Informatik 510 Konvexe Hülle Definition konvexe Menge: Für je zwei beliebige Punkte, die zur Menge gehören, liegt auch stets deren Verbindungsstrecke ganz in der Menge. Abbildung: [Wikipedia]: Nicht-konvexe Menge (links),

Mehr

Kap. 6.6: Kürzeste Wege

Kap. 6.6: Kürzeste Wege Kap. 6.6: Kürzeste Wege Professor Dr. Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund 1./. VO DAP SS 009./9. Juli 009 1 Nachtest für Ausnahmefälle Di 1. Juli 009, 16:00 Uhr,

Mehr

Vorlesung Datenstrukturen

Vorlesung Datenstrukturen Vorlesung Datenstrukturen Graphen (2) Spannbäume Kürzeste Wege Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 455 Wiederholung Traversierung eines Graphen via Tiefendurchlaufs

Mehr

Datenstrukturen & Algorithmen

Datenstrukturen & Algorithmen Datenstrukturen & Algorithmen Matthias Zwicker Universität Bern Frühling 2010 Übersicht Sortieralgorithmen Einleitung Heapsort Quicksort 2 Motivation Sortieren ist Voraussetzung für viele Anwendungen Nach

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Graphen 9/1 Begriffsdefinitionen Ein Graph besteht aus Knoten und Kanten. Ein Knoten(Ecke) ist ein benanntes Objekt. Eine Kante verbindet zwei Knoten. Kanten haben ein Gewicht

Mehr

Algorithmen und Datenstrukturen

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

Mehr

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

ADS: Algorithmen und Datenstrukturen 2

ADS: Algorithmen und Datenstrukturen 2 ADS: Algorithmen und Datenstrukturen 2 Teil 5 Prof. Peter F. Stadler & Dr. Christian Höner zu Siederdissen Bioinformatik/IZBI Institut für Informatik & Interdisziplinäres Zentrum für Bioinformatik Universität

Mehr

Heapsort / 1 A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8]

Heapsort / 1 A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] Heapsort / 1 Heap: Ein Array heißt Heap, falls A [i] A [2i] und A[i] A [2i + 1] (für 2i n bzw. 2i + 1 n) gilt. Beispiel: A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] Heapsort / 2 Darstellung eines Heaps als

Mehr

8.4 Digraphen mit negativen Kantengewichten Grundsätzliches Betrachte Startknoten s und einen Kreis C mit Gesamtlänge < 0.

8.4 Digraphen mit negativen Kantengewichten Grundsätzliches Betrachte Startknoten s und einen Kreis C mit Gesamtlänge < 0. 8.4 Digraphen mit negativen Kantengewichten 8.4.1 Grundsätzliches Betrachte Startknoten s und einen Kreis C mit Gesamtlänge < 0. k 4 5 1 s 1 3 2 C k 0 k 3 1 1 1 k 1 k 2 v Sollte ein Pfad von s nach C und

Mehr

Stud.-Nummer: Datenstrukturen & Algorithmen Seite 1

Stud.-Nummer: Datenstrukturen & Algorithmen Seite 1 Stud.-Nummer: Datenstrukturen & Algorithmen Seite 1 Aufgabe 1. / 15 P Hinweise: 1) In dieser Aufgabe sollen Sie nur die Ergebnisse angeben. Diese können Sie direkt bei den Aufgaben notieren. 2) Sofern

Mehr

Lernmodul 7 Algorithmus von Dijkstra

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

Mehr

Datenstrukturen und Algorithmen

Datenstrukturen und Algorithmen Prof. Dr. Erika Ábrahám Datenstrukturen und Algorithmen 1/1 Datenstrukturen und Algorithmen Vorlesung 14: Prof. Dr. Erika Ábrahám Theorie Hybrider Systeme Informatik 2 http://ths.rwth-aachen.de/teaching/ss-14/

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

Algorithmen I - Tutorium 28 Nr. 11

Algorithmen I - Tutorium 28 Nr. 11 Algorithmen I - Tutorium 28 Nr. 11 13.07.2017: Spaß mit Schnitten, Kreisen und minimalen Spannbäumen Marc Leinweber marc.leinweber@student.kit.edu INSTITUT FÜR THEORETISCHE INFORMATIK (ITI), PROF. DR.

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen 1 Algorithmen und Datenstrukturen Wintersemester 01/13 6. Vorlesung Prioritäten setzen Prof. Dr. Alexander Wolff Lehrstuhl für Informatik I Guten Morgen! Tipps für unseren ersten Test am 0. November: Lesen

Mehr

Datenstrukturen und Algorithmen

Datenstrukturen und Algorithmen Datenstrukturen und Algorithmen VO 708.031 27.10.2011 stefan.klampfl@tugraz.at 1 Wiederholung Wir vergleichen Algorithmen anhand des ordnungsmäßigen Wachstums von T(n), S(n), Asymptotische Schranken: O-Notation:

Mehr

Algorithmen und Komplexität

Algorithmen und Komplexität Algorithmen und Komplexität Dynamische Programmierung Markus Ullrich Norbert Baum Fachbereich Informatik - IIb07 Hochschule Zittau/Görlitz 28. Mai 2009 1 / 29 Wie sieht es mit langen Ketten aus? A 1 A

Mehr

Klausur Algorithmen und Datenstrukturen

Klausur Algorithmen und Datenstrukturen Technische Universität Braunschweig Sommersemester 2013 IBR - Abteilung Algorithmik Prof. Dr. Sándor Fekete Dr. Christiane Schmidt Stephan Friedrichs Klausur Algorithmen und Datenstrukturen 22.08.2013

Mehr

Otto-von-Guericke-Universität Magdeburg Fakultät für Informatik Institut für Simulation und Graphik Prof. Dr. Holger Theisel

Otto-von-Guericke-Universität Magdeburg Fakultät für Informatik Institut für Simulation und Graphik Prof. Dr. Holger Theisel Otto-von-Guericke-Universität Magdeburg Fakultät für Informatik Institut für Simulation und Graphik Prof. Dr. Holger Theisel Magdeburg, 26.07.2011 Klausur Algorithmen und Datenstrukturen Matrikelnummer:

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

Algorithmen - Eine Einführung

Algorithmen - Eine Einführung Algorithmen - Eine Einführung von Prof. Dr.Thomas H. Cormen, Prof. Dr. Charles E. Leiserson, Prof. Dr. Ronald Rivest, Prof. Dr. Clifford Stein Aus dem Englischen von Prof. Dr. rer. nat. habil. Paul Molitor,

Mehr

Algorithmen und Datenstrukturen 1-5. Seminar -

Algorithmen und Datenstrukturen 1-5. Seminar - Algorithmen und Datenstrukturen 1-5. Seminar - Dominic Rose Bioinformatics Group, University of Leipzig Wintersemester 2009/10 Outline 5.+6. Übungsserie: 5 Aufgaben, insgesamt 40 Punkte A17 Baum-Traversierung

Mehr

Wiederholung. Beschreibung von Algorithmen durch Pseudocode. Laufzeitverhalten beschreiben durch O-Notation.

Wiederholung. Beschreibung von Algorithmen durch Pseudocode. Laufzeitverhalten beschreiben durch O-Notation. Wiederholung Beschreibung von Algorithmen durch Pseudocode. Korrektheit von Algorithmen durch Invarianten. Laufzeitverhalten beschreiben durch O-Notation. Wollen uns auf asymptotische Laufzeit konzentrieren.

Mehr

3. Minimale Spannbäume. Definition 99 T heißt minimaler Spannbaum (MSB, MST) von G, falls T Spannbaum von G ist und gilt:

3. Minimale Spannbäume. Definition 99 T heißt minimaler Spannbaum (MSB, MST) von G, falls T Spannbaum von G ist und gilt: 3. Minimale Spannbäume Sei G = (V, E) ein einfacher ungerichteter Graph, der o.b.d.a. zusammenhängend ist. Sei weiter w : E R eine Gewichtsfunktion auf den Kanten von G. Wir setzen E E: w(e ) = e E w(e),

Mehr

Technische Universität Wien Institut für Computergraphik und Algorithmen Arbeitsbereich für Algorithmen und Datenstrukturen

Technische Universität Wien Institut für Computergraphik und Algorithmen Arbeitsbereich für Algorithmen und Datenstrukturen Technische Universität Wien Institut für Computergraphik und Algorithmen Arbeitsbereich für Algorithmen und Datenstrukturen 186.172 Algorithmen und Datenstrukturen 1 VL 4.0 Übungsblatt 4 für die Übung

Mehr

Kurs 1663 Datenstrukturen" Musterlösungen zur Klausur vom Seite 1. Musterlösungen zur Hauptklausur Kurs 1663 Datenstrukturen 15.

Kurs 1663 Datenstrukturen Musterlösungen zur Klausur vom Seite 1. Musterlösungen zur Hauptklausur Kurs 1663 Datenstrukturen 15. Kurs 1663 Datenstrukturen" Musterlösungen zur Klausur vom 15.08.98 Seite 1 Musterlösungen zur Hauptklausur Kurs 1663 Datenstrukturen 15. August 1998 Kurs 1663 Datenstrukturen" Musterlösungen zur Klausur

Mehr

Informatik II. Vorlesung am D-BAUG der ETH Zürich. Felix Friedrich & Hermann Lehner FS 2018

Informatik II. Vorlesung am D-BAUG der ETH Zürich. Felix Friedrich & Hermann Lehner FS 2018 1 Informatik II Vorlesung am D-BAUG der ETH Zürich Felix Friedrich & Hermann Lehner FS 2018 23 1. Einführung Algorithmen und Datenstrukturen, erstes Beispiel 24 Ziele der Vorlesung Verständnis des Entwurfs

Mehr