Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

Ähnliche Präsentationen


Präsentation zum Thema: "LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)"—  Präsentation transkript:

1 LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

2 LS 2 / Informatik 2 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

3 LS 2 / Informatik 3 Das Optimalitätsprinzip Typische Anwendung für dynamisches Programmieren: Optimierungsprobleme Eine optimale Lösung für das Ausgangsproblem setzt sich aus optimalen Lösungen für kleinere Probleme zusammen.

4 LS 2 / Informatik 4 Zusammenhang mit Teile & Herrsche Lösung eines Problems aus Lösungen zu Teilproblemen Aber: Lösungen zu Teilproblemen werden bei dynamischer Programmierung nicht rekursiv gelöst.

5 LS 2 / Informatik 5 Längste gemeinsame Teilfolge Definition: Seien X=(x 1,...,x m ) und Y=(y 1,...,y n ) zwei Teilfolgen, wobei x i, y j A für ein endliches Alphabet A. Dann heißt Y Teilfolge von X, wenn es aufsteigend sortierte Indizes i 1,...,i n gibt mit x i j = y j für j = 1,...,n.

6 LS 2 / Informatik 6 Längste gemeinsame Teilfolge Definition: Seien X=(x 1,...,x m ) und Y=(y 1,...,y n ) zwei Teilfolgen, wobei x i, y j A für ein endliches Alphabet A. Dann heißt Y Teilfolge von X, wenn es aufsteigend sortierte Indizes i 1,...,i n gibt mit x i j = y j für j = 1,...,n. Beispiel: Folge Y Folge X Y ist Teilfolge von X BCAC ABACABC

7 LS 2 / Informatik 7 Längste gemeinsame Teilfolge Definition: Seien X=(x 1,...,x m ) und Y=(y 1,...,y n ) zwei Teilfolgen, wobei x i, y j A für ein endliches Alphabet A. Dann heißt Y Teilfolge von X, wenn es aufsteigend sortierte Indizes i 1,...,i n gibt mit x i j = y j für j = 1,...,n. Beispiel: Folge Y Folge X Y ist Teilfolge von X BCAC ABACABC

8 LS 2 / Informatik 8 Längste gemeinsame Teilfolge Definition: Seien X=(x 1,...,x m ) und Y=(y 1,...,y n ) zwei Teilfolgen, wobei x i, y j A für ein endliches Alphabet A. Dann heißt Y Teilfolge von X, wenn es aufsteigend sortierte Indizes i 1,...,i n gibt mit x i j = y j für j = 1,...,n. Beispiel: Folge Y Folge X Y ist Teilfolge von X BCAC ABACABC

9 LS 2 / Informatik 9 Längste gemeinsame Teilfolge Definition: Seien X=(x 1,...,x m ) und Y=(y 1,...,y n ) zwei Teilfolgen, wobei x i, y j A für ein endliches Alphabet A. Dann heißt Y Teilfolge von X, wenn es aufsteigend sortierte Indizes i 1,...,i n gibt mit x i j = y j für j = 1,...,n. Beispiel: Folge Y Folge X Y ist Teilfolge von X BCAC ABACABC

10 LS 2 / Informatik 10 Längste gemeinsame Teilfolge Definition: Seien X=(x 1,...,x m ) und Y=(y 1,...,y n ) zwei Teilfolgen, wobei x i, y j A für ein endliches Alphabet A. Dann heißt Y Teilfolge von X, wenn es aufsteigend sortierte Indizes i 1,...,i n gibt mit x i j = y j für j = 1,...,n. Beispiel: Folge Y Folge X Y ist Teilfolge von X Wähle (i 1,i 2,i 3,i 4 ) = (2,4,5,7) Y ist Teilfolge von X BCAC ABACABC

11 LS 2 / Informatik 11 Längste gemeinsame Teilfolge Definition: Seien X, Y, Z Folgen über A. Dann heißt Z gemeinsame Teilfolge von X und Y, wenn Z Teilfolge sowohl von X als auch von Y ist.

12 LS 2 / Informatik 12 Längste gemeinsame Teilfolge Definition: Seien X, Y, Z Folgen über A. Dann heißt Z gemeinsame Teilfolge von X und Y, wenn Z Teilfolge sowohl von X als auch von Y ist. Beispiel: Folge Z Folge X Folge Y Z ist gemeinsame Teilfolge von X und Y ABACABC BCAC BACCABBC

13 LS 2 / Informatik 13 Längste gemeinsame Teilfolge Definition: Seien X, Y, Z Folgen über A. Dann heißt Z gemeinsame Teilfolge von X und Y, wenn Z Teilfolge sowohl von X als auch von Y ist. Beispiel: Folge Z Folge X Folge Y Z ist gemeinsame Teilfolge von X und Y ABACABC BCAC BACCABBC

14 LS 2 / Informatik 14 Längste gemeinsame Teilfolge Definition: Seien X, Y, Z Folgen über A. Dann heißt Z gemeinsame Teilfolge von X und Y, wenn Z Teilfolge sowohl von X als auch von Y ist. Beispiel: Folge Z Folge X Folge Y Z ist gemeinsame Teilfolge von X und Y ABACABC BCAC BACCABBC

15 LS 2 / Informatik 15 Längste gemeinsame Teilfolge Definition: Seien X, Y, Z Folgen über A. Dann heißt Z längste gemeinsame Teilfolge von X und Y, wenn Z gemeinsame Teilfolge von X und Y ist und es keine andere gemeinsame Teilfolge von X und Y gibt, die größere Länge als Z besitzt.

16 LS 2 / Informatik 16 Längste gemeinsame Teilfolge Definition: Seien X, Y, Z Folgen über A. Dann heißt Z längste gemeinsame Teilfolge von X und Y, wenn Z gemeinsame Teilfolge von X und Y ist und es keine andere gemeinsame Teilfolge von X und Y gibt, die größere Länge als Z besitzt. Beispiel: Folge X Folge Y ABACABC BACCABBC

17 LS 2 / Informatik 17 Längste gemeinsame Teilfolge Definition: Seien X, Y, Z Folgen über A. Dann heißt Z längste gemeinsame Teilfolge von X und Y, wenn Z gemeinsame Teilfolge von X und Y ist und es keine andere gemeinsame Teilfolge von X und Y gibt, die größere Länge als Z besitzt. Beispiel: Folge X Folge Y Folge Z 1 ABACABC BACCABBC BCAC

18 LS 2 / Informatik 18 Längste gemeinsame Teilfolge Definition: Seien X, Y, Z Folgen über A. Dann heißt Z längste gemeinsame Teilfolge von X und Y, wenn Z gemeinsame Teilfolge von X und Y ist und es keine andere gemeinsame Teilfolge von X und Y gibt, die größere Länge als Z besitzt. Beispiel: Folge X Folge Y Folge Z 1 Folge Z 2 ABACABC BACCABBC BACAC BCAC

19 LS 2 / Informatik 19 Z 1 ist nicht längste gemeinsame Teilfolge! Längste gemeinsame Teilfolge Definition: Seien X, Y, Z Folgen über A. Dann heißt Z längste gemeinsame Teilfolge von X und Y, wenn Z gemeinsame Teilfolge von X und Y ist und es keine andere gemeinsame Teilfolge von X und Y gibt, die größere Länge als Z besitzt. Beispiel: Folge X Folge Y Folge Z 1 Folge Z 2 ABACABC BACCABBC BACAC BCAC

20 LS 2 / Informatik 20 Problem LCS Eingabe: Folge X=(x 1,...,x m ) Folge Y=(y 1,...,y n ) Ausgabe: Längste gemeinsame Teilfolge Z (Longest Common Subsequenz)

21 LS 2 / Informatik 21 Problem LCS Eingabe: Folge X=(x 1,...,x m ) Folge Y=(y 1,...,y n ) Ausgabe: Längste gemeinsame Teilfolge Z (Longest Common Subsequenz) Beispiel: Folge X Folge Y ABCBDAB BDCABA

22 LS 2 / Informatik 22 Einfacher Ansatz Algorithmus: Erzeuge alle möglichen Teilfolgen von X Teste für jede Teilfolge von X, ob auch Teilfolge von Y Merke zu jedem Zeitpunkt bisher längste gemeinsame Teilfolge Laufzeit: 2 m mögliche Teilfolgen Exponentielle Laufzeit!

23 LS 2 / Informatik 23 Struktur von LCS Satz 24: Seien X=(x 1,...,x m ) und Y=(y 1,...,y n ) beliebige Folgen und sei Z=(z 1,...,z k ) eine längste gemeinsame Teilfolge von X und Y. Dann gilt 1.Ist x m = y n, dann ist z k = x m = y n und (z 1,...,z k-1 ) ist eine längste gemeinsame Teilfolge von (x 1,...,x m-1 ) und (y 1,...,y n-1 ). dann ist Z eine längste gemeinsame Teilfolge von X und (y 1,...,y n-1 ).

24 LS 2 / Informatik 24 Struktur von LCS Satz 24: Seien X=(x 1,...,x m ) und Y=(y 1,...,y n ) beliebige Folgen und sei Z=(z 1,...,z k ) eine längste gemeinsame Teilfolge von X und Y. Dann gilt 1.Ist x m = y n, dann ist z k = x m = y n und (z 1,...,z k-1 ) ist eine längste gemeinsame Teilfolge von (x 1,...,x m-1 ) und (y 1,...,y n-1 ). 2.Ist x m y n und z k x m, dann ist Z eine längste gemeinsame Teilfolge von (x 1,...,x m-1 ) und Y. dann ist Z eine längste gemeinsame Teilfolge von X und (y 1,...,y n-1 ).

25 LS 2 / Informatik 25 Struktur von LCS Satz 24: Seien X=(x 1,...,x m ) und Y=(y 1,...,y n ) beliebige Folgen und sei Z=(z 1,...,z k ) eine längste gemeinsame Teilfolge von X und Y. Dann gilt 1.Ist x m = y n, dann ist z k = x m = y n und (z 1,...,z k-1 ) ist eine längste gemeinsame Teilfolge von (x 1,...,x m-1 ) und (y 1,...,y n-1 ). 2.Ist x m y n und z k x m, dann ist Z eine längste gemeinsame Teilfolge von (x 1,...,x m-1 ) und Y. 3.Ist x m y n und z k y n, dann ist Z eine längste gemeinsame Teilfolge von X und (y 1,...,y n-1 ).

26 LS 2 / Informatik 26 Anwendung des Optimalitätsprinzips Struktur von LCS Satz 24: Seien X=(x 1,...,x m ) und Y=(y 1,...,y n ) beliebige Folgen und sei Z=(z 1,...,z k ) eine längste gemeinsame Teilfolge von X und Y. Dann gilt 1.Ist x m = y n, dann ist z k = x m = y n und (z 1,...,z k-1 ) ist eine längste gemeinsame Teilfolge von (x 1,...,x m-1 ) und (y 1,...,y n-1 ). 2.Ist x m y n und z k x m, dann ist Z eine längste gemeinsame Teilfolge von (x 1,...,x m-1 ) und Y. 3.Ist x m y n und z k y n, dann ist Z eine längste gemeinsame Teilfolge von X und (y 1,...,y n-1 ).

27 LS 2 / Informatik 27 Struktur von LCS Beweis: (1)Annahme: z k x m Dann können wir z k = x m hängen, um eine gemeinsame Teilfolge von X und Y der Länge k+1 zu erhalten. Widerspruch: Z ist eine längste gemeinsame Teilfolge von X und Y z k = x m = y n (z 1, z 2, … z k-1 ) ist eine gemeinsame Teilfolge der Länge k-1 von (x 1, x 2, … x m-1 ) und (y 1, y 2, … y n-1 ). Annahme: Es gibt eine gemeinsame Teilfolge W von (x 1, x 2, … x m-1 ) und (y 1, y 2, … y n-1 ), die mindestens Länge k hat. Dann erzeugt das Anhängen von z k = x m an W eine gemeinsame Teilfolge von X und Y, dessen Länge mindestens k+1 hat. Widerspruch zur Optimalität von Z.

28 LS 2 / Informatik 28 Struktur von LCS Beweis: (2)Falls z k x m dann ist Z eine gemeinsame Teilfolge von (x 1, x 2, … x m-1 ) und Y. Annahme: Es gibt eine gemeinsame Teilfolge W von (x 1, x 2, … x m-1 ) und Y mit einer Länge größer k. Dann ist W auch eine gemeinsame Teilfolge von X und Y. Widerspruch: Z ist längste gemeinsame Teilfolge von X und Y. (3)Der Beweis ist analog zu (2)

29 LS 2 / Informatik 29 Rekursion für Länge von LCS Lemma 25: Sei C[i][ j] die Länge einer längsten gemeinsamen Teilfolge von (x 1,...,x i ) und (y 1,...,y j ). Dann gilt:

30 LS 2 / Informatik 30 Rekursion für Länge von LCS Lemma 25: Sei C[i][ j] die Länge einer längsten gemeinsamen Teilfolge von (x 1,...,x i ) und (y 1,...,y j ). Dann gilt:

31 LS 2 / Informatik 31 Rekursion für Länge von LCS Lemma 25: Sei C[i][ j] die Länge einer längsten gemeinsamen Teilfolge von (x 1,...,x i ) und (y 1,...,y j ). Dann gilt:

32 LS 2 / Informatik 32 Rekursion für Länge von LCS Lemma 25: Sei C[i][ j] die Länge einer längsten gemeinsamen Teilfolge von (x 1,...,x i ) und (y 1,...,y j ). Dann gilt: Beobachtung: Rekursive Berechnung der C[i][ j] würde zu Berechnung immer wieder derselben Werte führen. Dieses ist ineffizient. Berechnen daher die Werte C[i][ j] iterativ, nämlich zeilenweise.

33 LS 2 / Informatik 33 Berechnung der C[i][ j] Werte LCS-Länge(X, Y) 1. m length[X] 2. n length[Y] 3. new array C[0..m][0..n] 4. for i 0 to m do C[i][0] 0 5. for j 0 to n do C[0][ j] 0 6. for i 1 to m do 7. for j 1 to n do 8. Längenberechnung(X, Y, C, i, j) 9. return C

34 LS 2 / Informatik 34 Berechnung der C[i][ j] Werte LCS-Länge(X, Y) 1. m length[X] 2. n length[Y] 3. new array C[0..m][0..n] 4. for i 0 to m do C[i][0] 0 5. for j 0 to n do C[0][ j] 0 6. for i 1 to m do 7. for j 1 to n do 8. Längenberechnung(X, Y, C, i, j) 9. return C

35 LS 2 / Informatik 35 Berechnung der C[i][ j] Werte Tabelle für die C[i][j] Werte anlegen. LCS-Länge(X, Y) 1. m length[X] 2. n length[Y] 3. new array C[0..m][0..n] 4. for i 0 to m do C[i][0] 0 5. for j 0 to n do C[0][ j] 0 6. for i 1 to m do 7. for j 1 to n do 8. Längenberechnung(X, Y, C, i, j) 9. return C

36 LS 2 / Informatik 36 Berechnung der C[i][ j] Werte LCS-Länge(X, Y) 1. m length[X] 2. n length[Y] 3. new array C[0..m][0..n] 4. for i 0 to m do C[i][0] 0 5. for j 0 to n do C[0][ j] 0 6. for i 1 to m do 7. for j 1 to n do 8. Längenberechnung(X, Y, C, i, j) 9. return C Erste Spalte der Tabelle auf 0 setzen.

37 LS 2 / Informatik 37 Berechnung der C[i][ j] Werte LCS-Länge(X, Y) 1. m length[X] 2. n length[Y] 3. new array C[0..m][0..n] 4. for i 0 to m do C[i][0] 0 5. for j 0 to n do C[0][ j] 0 6. for i 1 to m do 7. for j 1 to n do 8. Längenberechnung(X, Y, C, i, j) 9. return C Erste Reihe der Tabelle auf 0 setzen.

38 LS 2 / Informatik 38 Berechnung der C[i][ j] Werte LCS-Länge(X, Y) 1. m length[X] 2. n length[Y] 3. new array C[0..m][0..n] 4. for i 0 to m do C[i][0] 0 5. for j 0 to n do C[0][ j] 0 6. for i 1 to m do 7. for j 1 to n do 8. Längenberechnung(X, Y, C, i, j) 9. return C

39 LS 2 / Informatik 39 Berechnung der C[i][ j] Werte Längenberechnung(X, Y, C, i, j) 1. if x i = y j then C[i][ j] C[i-1][ j-1] else 3. if C[i-1][ j] C[i][ j-1] then C[i][ j] C[i-1][ j] 4. else C[i][ j] C[i][ j-1]

40 LS 2 / Informatik 40 Berechnung der C[i][ j] Werte Längenberechnung(X, Y, C, i, j) 1. if x i = y j then C[i][ j] C[i-1][ j-1] else 3. if C[i-1][ j] C[i][ j-1] then C[i][ j] C[i-1][ j] 4. else C[i][ j] C[i][ j-1]

41 LS 2 / Informatik 41 Berechnung der C[i][ j] Werte LCS-Länge(X, Y) 1. m length[X] 2. n length[Y] 3. new array C[0..m][0..n] 4. for i 0 to m do C[i][0] 0 5. for j 0 to n do C[0][ j] 0 6. for i 1 to m do 7. for j 1 to n do 8. Längenberechnung(X, Y, C, i, j) 9. return C

42 LS 2 / Informatik 42 j yjyj BDCABA i 0xixi 1A 2B 3C 4B 5D 6A 7B

43 LS 2 / Informatik 43 j yjyj BDCABA i 0xixi 1A 2B 3C 4B 5D 6A 7B

44 LS 2 / Informatik 44 j yjyj BDCABA i 0xixi 1A 2B 3C 4B 5D 6A 7B

45 LS 2 / Informatik j yjyj BDCABA i 0xixi 1A 2B 3C 4B 5D 6A 7B

46 LS 2 / Informatik j yjyj BDCABA i 0xixi 1A 2B 3C 4B 5D 6A 7B

47 LS 2 / Informatik j yjyj BDCABA i 0xixi 1A 2B 3C 4B 5D 6A 7B

48 LS 2 / Informatik j yjyj BDCABA i 0xixi 1A 2B 3C 4B 5D 6A 7B

49 LS 2 / Informatik j yjyj BDCABA i 0xixi 1A 2B 3C 4B 5D 6A 7B

50 LS 2 / Informatik j yjyj BDCABA i 0xixi 1A 2B 3C 4B 5D 6A 7B

51 LS 2 / Informatik j yjyj BDCABA i 0xixi 1A 2B 3C 4B 5D 6A 7B

52 LS 2 / Informatik j yjyj BDCABA i 0xixi 1A 2B 3C 4B 5D 6A 7B

53 LS 2 / Informatik j yjyj BDCABA i 0xixi 1A 2B 3C 4B 5D 6A 7B

54 LS 2 / Informatik j yjyj BDCABA i 0xixi 1A 2B 3C 4B 5D 6A 7B

55 LS 2 / Informatik j yjyj BDCABA i 0xixi 1A 2B 3C 4B 5D 6A 7B

56 LS 2 / Informatik j yjyj BDCABA i 0xixi 1A 2B 3C 4B 5D 6A 7B

57 LS 2 / Informatik j yjyj BDCABA i 0xixi 1A 2B 3C 4B 5D 6A 7B

58 LS 2 / Informatik j yjyj BDCABA i 0xixi 1A 2B 3C 4B 5D 6A 7B

59 LS 2 / Informatik j yjyj BDCABA i 0xixi 1A 2B 3C 4B 5D 6A 7B

60 LS 2 / Informatik j yjyj BDCABA i 0xixi 1A 2B 3C 4B 5D 6A 7B

61 LS 2 / Informatik j yjyj BDCABA i 0xixi 1A 2B 3C 4B 5D 6A 7B

62 LS 2 / Informatik j yjyj BDCABA i 0xixi 1A 2B 3C 4B 5D 6A 7B

63 LS 2 / Informatik j yjyj BDCABA i 0xixi 1A 2B 3C 4B 5D 6A 7B

64 LS 2 / Informatik j yjyj BDCABA i 0xixi 1A 2B 3C 4B 5D 6A 7B

65 LS 2 / Informatik j yjyj BDCABA i 0xixi 1A 2B 3C 4B 5D 6A 7B

66 LS 2 / Informatik j yjyj BDCABA i 0xixi 1A 2B 3C 4B 5D 6A 7B

67 LS 2 / Informatik j yjyj BDCABA i 0xixi 1A 2B 3C 4B 5D 6A 7B

68 LS 2 / Informatik j yjyj BDCABA i 0xixi 1A 2B 3C 4B 5D 6A 7B

69 LS 2 / Informatik j yjyj BDCABA i 0xixi 1A 2B 3C 4B 5D 6A 7B

70 LS 2 / Informatik j yjyj BDCABA i 0xixi 1A 2B 3C 4B 5D 6A 7B

71 LS 2 / Informatik j yjyj BDCABA i 0xixi 1A 2B 3C 4B 5D 6A 7B

72 LS 2 / Informatik j yjyj BDCABA i 0xixi 1A 2B 3C 4B 5D 6A 7B

73 LS 2 / Informatik j yjyj BDCABA i 0xixi 1A 2B 3C 4B 5D 6A 7B

74 LS 2 / Informatik j yjyj BDCABA i 0xixi 1A 2B 3C 4B 5D 6A 7B

75 LS 2 / Informatik j yjyj BDCABA i 0xixi 1A 2B 3C 4B 5D 6A 7B

76 LS 2 / Informatik j yjyj BDCABA i 0xixi 1A 2B 3C 4B 5D 6A 7B

77 LS 2 / Informatik j yjyj BDCABA i 0xixi 1A 2B 3C 4B 5D 6A 7B

78 LS 2 / Informatik j yjyj BDCABA i 0xixi 1A 2B 3C 4B 5D 6A 7B

79 LS 2 / Informatik j yjyj BDCABA i 0xixi 1A 2B 3C 4B 5D 6A 7B

80 LS 2 / Informatik j yjyj BDCABA i 0xixi 1A 2B 3C 4B 5D 6A 7B

81 LS 2 / Informatik 81 Laufzeitanalyse Lemma 26: Der Algorithmus LCS-Länge hat Laufzeit O(nm), wenn die Folgen X,Y Länge n und m haben. Lemma 27: Die Ausgabe der längsten gemeinsamen Teilfolge anhand der Tabelle hat Laufzeit O(n+m), wenn die Folgen X,Y Länge n und m haben.

82 LS 2 / Informatik 82 Vorgehensweise bei dynamischer Programmierung 1.Bestimme rekursive Struktur einer optimalen Lösung. 2.Entwerfe rekursive Methode zur Bestimmung des Wertes einer optimalen Lösung. 3.Transformiere rekursiv Methode in eine iterative (bottom-up) Methode zur Bestimmung des Wertes einer optimalen Lösung. 4.Bestimmen aus dem Wert einer optimalen Lösung und in 3. ebenfalls berechneten Zusatzinformationen eine optimale Lösung.

83 LS 2 / Informatik 83 Zusammenfassung Algorithmenentwurfstechnik: Oft bei Optimierungsproblemen angewandt Einsatz: Bei rekursiven Problemlösungen, wenn Teillösungen mehrfach benötigt werden Lösungsansatz: Tabellieren von Teilergebnissen Vorteil: Laufzeitverbesserungen, oft polynomiell statt exponentiell


Herunterladen ppt "LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)"

Ähnliche Präsentationen


Google-Anzeigen