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 Teile & Herrsche 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

3 LS 2 / Informatik 3 Teile & Herrsche Weiteres Beispiel Problem: Finde Element in sortiertem Feld Eingabe: Sortiertes Feld A, gesuchtes Element b A[1,…,n] Ausgabe: Index i mit A[i] = b BinäreSuche(A,b,p,r) 1. if p=r then return p 2. else 3. q (p+r)/2 4. if b A[q] then return BinäreSuche(A,b,p,q) 5. else return BinäreSuche(A,b,q+1,r)

4 LS 2 / Informatik 4 Teile & Herrsche Satz 9 Algorithmus BinäreSuche(A,b,p,r) findet den Index einer Zahl b in einem sortierten Feld A[p..r], sofern b in A[p..r] vorhanden ist. Beweis Wir zeigen die Korrektheit per Induktion über n=r-p. Ist n<0, so ist nichts zu zeigen. Wir nehmen an, dass b in A[p..r] ist, da es sonst nichts zu zeigen gibt.

5 LS 2 / Informatik 5 Teile & Herrsche Satz 9 Algorithmus BinäreSuche(A,b,p,r) findet den Index einer Zahl b in einem sortierten Feld A[p..r], sofern b in A[p..r] vorhanden ist. Beweis Wir zeigen die Korrektheit per Induktion über n=r-p. Ist n<0, so ist nichts zu zeigen. Wir nehmen an, dass b in A[p..r] ist, da es sonst nichts zu zeigen gibt. (I.A.) Für n=0, d.h. p=r, gibt der Algorithmus p zurück. Dies ist der korrekte (weil einzige) Index.

6 LS 2 / Informatik 6 Teile & Herrsche Satz 9 Algorithmus BinäreSuche(A,b,p,r) findet den Index einer Zahl b in einem sortierten Feld A[p..r], sofern b in A[p..r] vorhanden ist. Beweis Wir zeigen die Korrektheit per Induktion über n=r-p. Ist n<0, so ist nichts zu zeigen. Wir nehmen an, dass b in A[p..r] ist, da es sonst nichts zu zeigen gibt. (I.A.) Für n=0, d.h. p=r, gibt der Algorithmus p zurück. Dies ist der korrekte (weil einzige) Index. (I.V.) Für alle r,p mit m=r-p und 0mn findet BinäreSuche(A,b,p,r) den Index einer Zahl b in einem sortierten Feld A[p..r].

7 LS 2 / Informatik 7 Teile & Herrsche Satz 9 Algorithmus BinäreSuche(A,b,p,r) findet den Index einer Zahl b in einem sortierten Feld A[p..r], sofern b in A[p..r] vorhanden ist. Beweis (I.V.) Für alle r,p mit m=r-p und 0mn findet BinäreSuche(A,b,p,r) den Index einer Zahl b in einem sortierten Feld A[p..r].

8 LS 2 / Informatik 8 Teile & Herrsche Satz 9 Algorithmus BinäreSuche(A,b,p,r) findet den Index einer Zahl b in einem sortierten Feld A[p..r], sofern b in A[p..r] vorhanden ist. Beweis (I.V.) Für alle r,p mit m=r-p und 0mn findet BinäreSuche(A,b,p,r) den Index einer Zahl b in einem sortierten Feld A[p..r]. (I.S.) Wir betrachten den Aufruf von BinäreSuche für beliebige p, r mit n+1 = r-p. Da n+1>0 folgt p<r und der Algorithmus führt den else-Fall aus. Dort wird q auf (p+r)/2 gesetzt.

9 LS 2 / Informatik 9 Teile & Herrsche Satz 9 Algorithmus BinäreSuche(A,b,p,r) findet den Index einer Zahl b in einem sortierten Feld A[p..r], sofern b in A[p..r] vorhanden ist. Beweis (I.V.) Für alle r,p mit m=r-p und 0mn findet BinäreSuche(A,b,p,r) den Index einer Zahl b in einem sortierten Feld A[p..r]. (I.S.) Wir betrachten den Aufruf von BinäreSuche für beliebige p, r mit n+1 = r-p. Da n+1>0 folgt p<r und der Algorithmus führt den else-Fall aus. Dort wird q auf (p+r)/2 gesetzt. Es gilt qp und q<r. Ist b A[q], so wird BinäreSuche rekursiv für A[p..q] aufgerufen.

10 LS 2 / Informatik 10 Teile & Herrsche Satz 9 Algorithmus BinäreSuche(A,b,p,r) findet den Index einer Zahl b in einem sortierten Feld A[p..r], sofern b in A[p..r] vorhanden ist. Beweis (I.V.) Für alle r,p mit m=r-p und 0mn findet BinäreSuche(A,b,p,r) den Index einer Zahl b in einem sortierten Feld A[p..r]. (I.S.) Wir betrachten den Aufruf von BinäreSuche für beliebige p, r mit n+1 = r-p. Da n+1>0 folgt p<r und der Algorithmus führt den else-Fall aus. Dort wird q auf (p+r)/2 gesetzt. Es gilt qp und q<r. Ist b A[q], so wird BinäreSuche rekursiv für A[p..q] aufgerufen. Da A[p..r] sortiert ist, liegt b in A[p..q]. Damit folgt aus (I.V.), dass der Index von b gefunden wird.

11 LS 2 / Informatik 11 Teile & Herrsche Satz 9 Algorithmus BinäreSuche(A,b,p,r) findet den Index einer Zahl b in einem sortierten Feld A[p..r], sofern b in A[p..r] vorhanden ist. Beweis (I.V.) Für alle r,p mit m=r-p und 0mn findet BinäreSuche(A,b,p,r) den Index einer Zahl b in einem sortierten Feld A[p..r]. (I.S.) Wir betrachten den Aufruf von BinäreSuche für beliebige p, r mit n+1 = r-p. Da n+1>0 folgt p A[q], so wird BinäreSuche rekursiv für A[q+1..r] aufgerufen. Da A[p..r] sortiert ist, liegt b in A[q+1..r].

12 LS 2 / Informatik 12 Teile & Herrsche Satz 9 Algorithmus BinäreSuche(A,b,p,r) findet den Index einer Zahl b in einem sortierten Feld A[p..r], sofern b in A[p..r] vorhanden ist. Beweis (I.V.) Für alle r,p mit m=r-p und 0mn findet BinäreSuche(A,b,p,r) den Index einer Zahl b in einem sortierten Feld A[p..r]. (I.S.) Wir betrachten den Aufruf von BinäreSuche für beliebige p, r mit n+1 = r-p. Da n+1>0 folgt p A[q], so wird BinäreSuche rekursiv für A[q+1..r] aufgerufen. Da A[p..r] sortiert ist, liegt b in A[q+1..r]. Damit folgt aus (I.V.), dass der Index von b gefunden wird.

13 LS 2 / Informatik 13 Teile & Herrsche Satz 9 Algorithmus BinäreSuche(A,b,p,r) findet den Index einer Zahl b in einem sortierten Feld A[p..r], sofern b in A[p..r] vorhanden ist. Beweis (I.V.) Für alle r,p mit m=r-p und 0mn findet BinäreSuche(A,b,p,r) den Index einer Zahl b in einem sortierten Feld A[p..r]. (I.S.) Wir betrachten den Aufruf von BinäreSuche für beliebige p, r mit n+1 = r-p. Da n+1>0 folgt p A[q], so wird BinäreSuche rekursiv für A[q+1..r] aufgerufen. Da A[p..r] sortiert ist, liegt b in A[q+1..r]. Damit folgt aus (I.V.), dass der Index von b gefunden wird.

14 LS 2 / Informatik 14 Teile & Herrsche Auflösen von T(n) T(n/2) + c (Intuition; wir ignorieren Runden) n n c n/2 n/4 1 1 c c c Höhe log n c log n

15 LS 2 / Informatik 15 Teile & Herrsche Binäre Suche vs. lineare Suche Beobachtung n wächst sehr viel stärker als log n Binäre Suche effizient für riesige Datenmengen In der Praxis ist log n fast wie eine Konstante Laufzeit101001,00010,000100,000 n101001,00010,000100,000 log n36101317

16 LS 2 / Informatik 16 Teile & Herrsche Integer Multiplikation Problem: Multipliziere zwei n-Bit Integer Eingabe: Zwei n-Bit Integer X,Y Ausgabe: 2n-Bit Integer Z mit Z=XY Annahmen: Wir können n-Bit Integer in (n) (worst case) Zeit addieren Wir können n-Bit Integer in (n+k) (worst case) Zeit mit 2 multiplizieren k

17 LS 2 / Informatik 17 Teile & Herrsche Schulmethode: (13 11)

18 LS 2 / Informatik 18 Teile & Herrsche Schulmethode: (13 11) 1101 1011

19 LS 2 / Informatik 19 Teile & Herrsche Schulmethode: (13 11) 1101 1011 1101

20 LS 2 / Informatik 20 Teile & Herrsche Schulmethode: (13 11) 1101 1011 1101

21 LS 2 / Informatik 21 Teile & Herrsche Schulmethode: (13 11) 1101 1011 1101

22 LS 2 / Informatik 22 Teile & Herrsche Schulmethode: (13 11) 1101 1011 1101

23 LS 2 / Informatik 23 Teile & Herrsche Schulmethode: (13 11) 1101 1011 1101 10001111

24 LS 2 / Informatik 24 Teile & Herrsche Laufzeit Schulmethode n Multiplikationen mit 2 für ein kn n-1 Additionen im worst-case: 11…111 11…111 Jede Addition (n) Zeit Insgesamt (n²) Laufzeit n-Bit k

25 LS 2 / Informatik 25 Teile & Herrsche Laufzeit Schulmethode n Multiplikationen mit 2 für ein kn n-1 Additionen im worst-case: 11…111 11…111 Jede Addition (n) Zeit Insgesamt (n²) Laufzeit n-Bit Bessere Laufzeit mit Teile & Herrsche? k

26 LS 2 / Informatik 26 Teile & Herrsche Integer Multiplikation AB CD

27 LS 2 / Informatik 27 Teile & Herrsche Integer Multiplikation AB CD B D

28 LS 2 / Informatik 28 Teile & Herrsche Integer Multiplikation AB CD B D B C +

29 LS 2 / Informatik 29 Teile & Herrsche Integer Multiplikation AB CD B D B C A D + +

30 LS 2 / Informatik 30 Teile & Herrsche Integer Multiplikation AB CD B D B C A D A C + + +

31 LS 2 / Informatik 31 Teile & Herrsche Integer Multiplikation AB CD B D B C A D A C Ergebnis + + + =

32 LS 2 / Informatik 32 Teile & Herrsche Integer Multiplikation ABCD B D B C A D A C Ergebnis + + + = 4 Multiplikationen von n/2-Bit Integers

33 LS 2 / Informatik 33 Teile & Herrsche Integer Multiplikation ABCD B D B C A D A C Ergebnis + + + = 4 Multiplikationen von n/2-Bit Integers 3 Additionen von 2n-Bit Integers

34 LS 2 / Informatik 34 Teile & Herrsche Integer Multiplikation ABCD B D B C A D A C Ergebnis + + + = 4 Multiplikationen von n/2-Bit Integers 3 Additionen von 2n-Bit Integers 3 Multiplikationen mit 2 für kn k

35 LS 2 / Informatik 35 Teile & Herrsche Laufzeit einfaches Teile & Herrsche T(n) 4 T(n/2) + cn, n>1 c, n=1 c geeignete Konstante

36 LS 2 / Informatik 36 Teile & Herrsche Laufzeit einfaches Teile & Herrsche cn T(n) 4 T(n/2) + cn, n>1 c, n=1 c geeignete Konstante n n

37 LS 2 / Informatik 37 Teile & Herrsche Laufzeit einfaches Teile & Herrsche cn 4cn/2 T(n) 4 T(n/2) + cn, n>1 c, n=1 c geeignete Konstante n n n/2

38 LS 2 / Informatik 38 Teile & Herrsche Laufzeit einfaches Teile & Herrsche cn 4cn/2 ……. ……. 4 c T(n) 4 T(n/2) + cn, n>1 c, n=1 c geeignete Konstante n n n/2 1 1 1 1 1 1 1 1 1 1 1 1 h Höhe h

39 LS 2 / Informatik 39 Teile & Herrsche Laufzeit einfaches Teile & Herrsche cn 4cn/2 ……. ……. 4 c T(n) 4 T(n/2) + cn, n>1 c, n=1 c geeignete Konstante n n n/2 1 1 1 1 1 1 1 1 1 1 1 1 h Höhe h Höhe des Baums: h = log n (n²)

40 LS 2 / Informatik 40 Teile & Herrsche Laufzeit einfaches Teile & Herrsche cn 4cn/2 ……. ……. 4 c T(n) 4 T(n/2) + cn, n>1 c, n=1 c geeignete Konstante n n n/2 1 1 1 1 1 1 1 1 1 1 1 1 h Höhe h Höhe des Baums: h = log n (n²) Nichts gewonnen!

41 LS 2 / Informatik 41 Teile & Herrsche Satz 11 Die Multiplikation zweier n-Bit Zahlen mit dem einfachen Teile & Herrsche Verfahren hat Laufzeit O(n²). Beweis Wir nehmen an, dass n eine Zweierpotenz ist. Induktion über n. Wir zeigen T(n) cn².

42 LS 2 / Informatik 42 Teile & Herrsche Satz 11 Die Multiplikation zweier n-Bit Zahlen mit dem einfachen Teile & Herrsche Verfahren hat Laufzeit O(n²). Beweis Wir nehmen an, dass n eine Zweierpotenz ist. Induktion über n. Wir zeigen T(n) cn². (I.A.) Die Laufzeit zur Multiplikation von zwei 1-Bit Zahlen ist höchstens c.

43 LS 2 / Informatik 43 Teile & Herrsche Satz 11 Die Multiplikation zweier n-Bit Zahlen mit dem einfachen Teile & Herrsche Verfahren hat Laufzeit O(n²). Beweis Wir nehmen an, dass n eine Zweierpotenz ist. Induktion über n. Wir zeigen T(n) cn². (I.A.) Die Laufzeit zur Multiplikation von zwei 1-Bit Zahlen ist höchstens c. (I.V.) Für jedes m<n ist die Laufzeit zur Multiplikation von zwei m-Bit Zahlen cm².

44 LS 2 / Informatik 44 Teile & Herrsche Satz 11 Die Multiplikation zweier n-Bit Zahlen mit dem einfachen Teile & Herrsche Verfahren hat Laufzeit O(n²). Beweis Wir nehmen an, dass n eine Zweierpotenz ist. Induktion über n. Wir zeigen T(n) cn². (I.A.) Die Laufzeit zur Multiplikation von zwei 1-Bit Zahlen ist höchstens c. (I.V.) Für jedes m<n ist die Laufzeit zur Multiplikation von zwei m-Bit Zahlen cm². (I.S.) Betrachte eine Multiplikation von zwei n-Bit Zahlen. Es gilt T(n) 4 T(n/2) + cn. Nach (I.V.) gilt dann T(n) 4 c (n/2)² + cn = cn²+cn.

45 LS 2 / Informatik 45 Satz 11 Die Multiplikation zweier n-Bit Zahlen mit dem einfachen Teile & Herrsche Verfahren hat Laufzeit O(n²). Beweis Wir nehmen an, dass n eine Zweierpotenz ist. Induktion über n. Wir zeigen T(n) cn². (I.A.) Die Laufzeit zur Multiplikation von zwei 1-Bit Zahlen ist höchstens c. (I.V.) Für jedes m<n ist die Laufzeit zur Multiplikation von zwei m-Bit Zahlen c m². (I.S.) Betrachte eine Multiplikation von zwei n-Bit Zahlen. Es gilt T(n) 4 T(n/2) + cn. Nach (I.V.) gilt dann T(n) 4 c (n/2)² + cn = cn²+cn. Teile & Herrsche Funktioniert nicht !!!!!

46 LS 2 / Informatik 46 Satz 11 Die Multiplikation zweier n-Bit Zahlen mit dem einfachen Teile & Herrsche Verfahren hat Laufzeit O(n²). Beweis (neuer Versuch) Wir nehmen an, dass n eine Zweierpotenz ist. Induktion über n. O.b.d.A. sei cT(2). Wir zeigen T(n) cn² - cn. Teile & Herrsche Trick: Die Funktion etwas verkleinern!!

47 LS 2 / Informatik 47 Teile & Herrsche Satz 11 Die Multiplikation zweier n-Bit Zahlen mit dem einfachen Teile & Herrsche Verfahren hat Laufzeit O(n²). Beweis (neuer Versuch) Wir nehmen an, dass n eine Zweierpotenz ist. Induktion über n. O.b.d.A. sei cT(2). Wir zeigen T(n) cn² - cn. (I.A.) Die Laufzeit zur Multiplikation von zwei 2-Bit Zahlen ist höchstens c.

48 LS 2 / Informatik 48 Teile & Herrsche Satz 11 Die Multiplikation zweier n-Bit Zahlen mit dem einfachen Teile & Herrsche Verfahren hat Laufzeit O(n²). Beweis (neuer Versuch) Wir nehmen an, dass n eine Zweierpotenz ist. Induktion über n. O.b.d.A. sei cT(2). Wir zeigen T(n) cn² - cn. (I.A.) Die Laufzeit zur Multiplikation von zwei 2-Bit Zahlen ist höchstens c. (I.V.) Für jedes m<n ist die Laufzeit zur Multiplikation von zwei m-Bit Zahlen c m² -cm.

49 LS 2 / Informatik 49 Teile & Herrsche Satz 11 Die Multiplikation zweier n-Bit Zahlen mit dem einfachen Teile & Herrsche Verfahren hat Laufzeit O(n²). Beweis (neuer Versuch) Wir nehmen an, dass n eine Zweierpotenz ist. Induktion über n. O.b.d.A. sei cT(2). Wir zeigen T(n) cn² - cn. (I.A.) Die Laufzeit zur Multiplikation von zwei 2-Bit Zahlen ist höchstens c. (I.V.) Für jedes m<n ist die Laufzeit zur Multiplikation von zwei m-Bit Zahlen c m² -cm. (I.S.) Betrachte eine Multiplikation von zwei n-Bit Zahlen. Es gilt T(n) 4 T(n/2) + cn.

50 LS 2 / Informatik 50 Teile & Herrsche Satz 11 Die Multiplikation zweier n-Bit Zahlen mit dem einfachen Teile & Herrsche Verfahren hat Laufzeit O(n²). Beweis (neuer Versuch) Wir nehmen an, dass n eine Zweierpotenz ist. Induktion über n. O.b.d.A. sei cT(2). Wir zeigen T(n) cn² - cn. (I.A.) Die Laufzeit zur Multiplikation von zwei 2-Bit Zahlen ist höchstens c. (I.V.) Für jedes m<n ist die Laufzeit zur Multiplikation von zwei m-Bit Zahlen c m² -cm. (I.S.) Betrachte eine Multiplikation von zwei n-Bit Zahlen. Es gilt T(n) 4 T(n/2) + cn. Nach (I.V.) gilt dann T(n) 4 c (n/2)² - 4 c(n/2) + cn = cn² - cn.

51 LS 2 / Informatik 51 Teile & Herrsche Satz 11 Die Multiplikation zweier n-Bit Zahlen mit dem einfachen Teile & Herrsche Verfahren hat Laufzeit O(n²). Beweis (neuer Versuch) Wir nehmen an, dass n eine Zweierpotenz ist. Induktion über n. O.b.d.A. sei cT(2). Wir zeigen T(n) cn² - cn. (I.A.) Die Laufzeit zur Multiplikation von zwei 2-Bit Zahlen ist höchstens c. (I.V.) Für jedes m<n ist die Laufzeit zur Multiplikation von zwei m-Bit Zahlen c m² -cm. (I.S.) Betrachte eine Multiplikation von zwei n-Bit Zahlen. Es gilt T(n) 4 T(n/2) + cn. Nach (I.V.) gilt dann T(n) 4 c (n/2)² - 4 c(n/2) + cn = cn² - cn.

52 LS 2 / Informatik 52 Teile & Herrsche Verbesserte Integer Multiplikation AB CD B D B C A D A C Ergebnis + + + =

53 LS 2 / Informatik 53 Teile & Herrsche Verbesserte Integer Multiplikation AB CD B D B C A D A C Ergebnis + + + = Berechne BC + AD Mit einer Multiplikation

54 LS 2 / Informatik 54 Teile & Herrsche Verbesserte Integer Multiplikation ABCD B D B C A D A C Ergebnis + + + = Berechne BC + AD Mit einer Multiplikation Trick: (A+B) (C+D) – AC – BD = BC + AD Trick: (A+B) (C+D) – AC – BD = BC + AD

55 LS 2 / Informatik 55 Teile & Herrsche Aufwand Verbesserte Integer Multiplikation 3 Multiplikationen der Länge n/2 [AC, BD, (A+B) (C+D)] Konstant viele Additionen und Multiplikationen mit Zweierpotenzen Laufzeit T(n) = 3 T(n/2) + cn, n>1 c, n=1 c geeignete Konstante

56 LS 2 / Informatik 56 Teile & Herrsche Laufzeit verbesserte Integer Multiplikation cn 3cn/2 ……. ……. 3 c T(n) 3 T(n/2) + cn, n>1 c, n=1 c geeignete Konstante n n n/2 1 1 1 1 1 1 1 1 1 1 1 1 h Höhe h Höhe des Baums: h = log n O(3 ) log n

57 LS 2 / Informatik 57 Teile & Herrsche Laufzeit verbesserte Integer Multiplikation cn 3cn/2 ……. ……. 3 c T(n) 3 T(n/2) + cn, n>1 c, n=1 c geeignete Konstante n n n/2 1 1 1 1 1 1 1 1 1 1 1 1 h Höhe h Höhe des Baums: h = log n O(3 ) log n 3 = 2 = n log nlog 3 log n log 3

58 LS 2 / Informatik 58 Teile & Herrsche Satz 12 Die Laufzeit der verbesserten Integer Multiplikation ist O(3 ) = O(n ). Beweis Induktion über n. Sei T(4) c. Wir zeigen T(n) c 3 - 2cn. log n log 3 log n

59 LS 2 / Informatik 59 Teile & Herrsche Satz 12 Die Laufzeit der verbesserten Integer Multiplikation ist O(3 ) = O(n ). Beweis Induktion über n. Sei T(4) c. Wir zeigen T(n) c 3 - 2cn. (I.A.) Es gilt T(4) c = c 3 – 2 c 4. log n log 3 log n log 4

60 LS 2 / Informatik 60 Teile & Herrsche Satz 12 Die Laufzeit der verbesserten Integer Multiplikation ist O(3 ) = O(n ). Beweis Induktion über n. Sei T(4) c. Wir zeigen T(n) c 3 - 2cn. (I.A.) Es gilt T(4) c = c 3 – 2 c 4. (I.V.) Für jedes m<n ist die Laufzeit für die Multiplikation zweier m-Bit Zahlen höchstens c 3 - 2cm. log n log 3 log n log 4 log m

61 LS 2 / Informatik 61 Teile & Herrsche Satz 12 Die Laufzeit der verbesserten Integer Multiplikation ist O(3 ) = O(n ). Beweis Induktion über n. Sei T(4) c. Wir zeigen T(n) c 3 - 2cn. (I.A.) Es gilt T(4) c = c 3 – 2 c 4. (I.V.) Für jedes m<n ist die Laufzeit für die Multiplikation zweier m-Bit Zahlen höchstens c 3 - 2cm. (I.S.) Betrachte die Multiplikation von zwei n-Bit Zahlen. Es gilt T(n) = 3 T(n/2) + cn c 3 - 6 (n/2) + cn = c 3 - 2cn. log n log 3 log n log 4 log n log m

62 LS 2 / Informatik 62 Teile & Herrsche Satz 12 Die Laufzeit der verbesserten Integer Multiplikation ist O(3 ) = O(n ). Beweis Induktion über n. Sei T(4) c. Wir zeigen T(n) c 3 - 2cn. (I.A.) Es gilt T(4) c = c 3 – 2 c 4. (I.V.) Für jedes m<n ist die Laufzeit für die Multiplikation zweier m-Bit Zahlen höchstens c 3 - 2cm. (I.S.) Betrachte die Multiplikation von zwei n-Bit Zahlen. Es gilt T(n) = 3 T(n/2) + cn c 3 - 6 (n/2) + cn = c 3 - 2cn. log n log 3 log n log 4 log n log m

63 LS 2 / Informatik 63 Teile & Herrsche Satz 13 Zwei n-Bit Integer Zahlen können mit Hilfe des Teile & Herrsche Verfahrens in O(n ) worst case Laufzeit multipliziert werden. Beweis Die Laufzeit folgt aus Satz 12 wegen 1.59 log 3. Korrektheit zeigen wir per Induktion über n. 1.59

64 LS 2 / Informatik 64 Teile & Herrsche Satz 13 Zwei n-Bit Integer Zahlen können mit Hilfe des Teile & Herrsche Verfahrens in O(n ) worst case Laufzeit multipliziert werden. Beweis Die Laufzeit folgt aus Satz 12 wegen 1.59 log 3. Korrektheit zeigen wir per Induktion über n. (I.A.) Die Multiplikation zweier 1-Bit Zahlen wird vom Rechner korrekt ausgeführt. 1.59

65 LS 2 / Informatik 65 Teile & Herrsche Satz 13 Zwei n-Bit Integer Zahlen können mit Hilfe des Teile & Herrsche Verfahrens in O(n ) worst case Laufzeit multipliziert werden. Beweis Die Laufzeit folgt aus Satz 12 wegen 1.59 log 3. Korrektheit zeigen wir per Induktion über n. (I.A.) Die Multiplikation zweier 1-Bit Zahlen wird vom Rechner korrekt ausgeführt. (I.V.) Die Multiplikation von zweier m-Bit Zahlen für m<n ist korrekt. 1.59

66 LS 2 / Informatik 66 Teile & Herrsche Satz 13 Zwei n-Bit Integer Zahlen können mit Hilfe des Teile & Herrsche Verfahrens in O(n ) worst case Laufzeit multipliziert werden. Beweis Die Laufzeit folgt aus Satz 12 wegen 1.59 log 3. Korrektheit zeigen wir per Induktion über n. (I.A.) Die Multiplikation zweier 1-Bit Zahlen wird vom Rechner korrekt ausgeführt. (I.V.) Die Multiplikation von zweier m-Bit Zahlen für m<n ist korrekt. (I.S.) Nach (I.V.) werden die Produkte AC, BD, (A+B)(C+D) korrekt berechnet. 1.59

67 LS 2 / Informatik 67 Teile & Herrsche Satz 13 Zwei n-Bit Integer Zahlen können mit Hilfe des Teile & Herrsche Verfahrens in O(n ) worst case Laufzeit multipliziert werden. Beweis Die Laufzeit folgt aus Satz 12 wegen 1.59 log 3. Korrektheit zeigen wir per Induktion über n. (I.A.) Die Multiplikation zweier 1-Bit Zahlen wird vom Rechner korrekt ausgeführt. (I.V.) Die Multiplikation von zweier m-Bit Zahlen für m<n ist korrekt. (I.S.) Nach (I.V.) werden die Produkte AC, BD, (A+B)(C+D) korrekt berechnet. Damit folgt die Korrektheit des Algorithmus wegen (A+B) (C+D) – AC – BD = BC + AD und aufgrund unserer Vorüberlegungen. 1.59

68 LS 2 / Informatik 68 Teile & Herrsche Satz 13 Zwei n-Bit Integer Zahlen können mit Hilfe des Teile & Herrsche Verfahrens in O(n ) worst case Laufzeit multipliziert werden. Beweis Die Laufzeit folgt aus Satz 12 wegen 1.59 log 3. Korrektheit zeigen wir per Induktion über n. (I.A.) Die Multiplikation zweier 1-Bit Zahlen wird vom Rechner korrekt ausgeführt. (I.V.) Die Multiplikation von zweier m-Bit Zahlen für m<n ist korrekt. (I.S.) Nach (I.V.) werden die Produkte AC, BD, (A+B)(C+D) korrekt berechnet. Damit folgt die Korrektheit des Algorithmus wegen (A+B) (C+D) – AC – BD = BC + AD und aufgrund unserer Vorüberlegungen. 1.59

69 LS 2 / Informatik 69 Teile & Herrsche Matrixmultiplikation Zeile x Spalte 5 1 + 0 7 + 0 0 + 3 2 =11 5003 1111 2304 0011 1213 7220 0100 2040 11 =

70 LS 2 / Informatik 70 Teile & Herrsche Matrixmultiplikation Zeile x Spalte 5 2 + 0 2 + 0 1 + 3 0 =10 5003 1111 2304 0011 1213 7220 0100 2040 1110 =

71 LS 2 / Informatik 71 Teile & Herrsche Matrixmultiplikation 5003 1111 2304 0011 1213 7220 0100 2040 111017 =

72 LS 2 / Informatik 72 Teile & Herrsche Matrixmultiplikation 5003 1111 2304 0011 1213 7220 0100 2040 11101715 =

73 LS 2 / Informatik 73 Teile & Herrsche Matrixmultiplikation 5003 1111 2304 0011 1213 7220 0100 2040 11101715 10 =

74 LS 2 / Informatik 74 Teile & Herrsche Matrixmultiplikation 5003 1111 2304 0011 1213 7220 0100 2040 11101715 105 =

75 LS 2 / Informatik 75 Teile & Herrsche Matrixmultiplikation 5003 1111 2304 0011 1213 7220 0100 2040 11101715 10573 3110246 2140 =

76 LS 2 / Informatik 76 Teile & Herrsche Matrixmultiplikation Problem: Berechne das Produkt zweier n n-Matrizen Eingabe: Matrizen X, Y Ausgabe: Matrix Z = X Y

77 LS 2 / Informatik 77 Teile & Herrsche MatrixMultiplikation (Array X,Y,n) 1. new array Z[1..n][1..n] 2. for i 1 to n do 3. for j 1 to n do 4. Z[i][j] 0 5. for k 1 to n do 6. Z[i][j] Z[i][j] + X[i][k] Y[k][j] 7. return Z

78 LS 2 / Informatik 78 Teile & Herrsche MatrixMultiplikation (Array X,Y,n) 1. new array Z[1..n][1..n] 2. for i 1 to n do 3. for j 1 to n do 4. Z[i][j] 0 5. for k 1 to n do 6. Z[i][j] Z[i][j] + X[i][k] Y[k][j] 7. return Z

79 LS 2 / Informatik 79 Teile & Herrsche MatrixMultiplikation (Array X,Y,n) 1. new array Z[1..n][1..n] 2. for i 1 to n do 3. for j 1 to n do 4. Z[i][j] 0 5. for k 1 to n do 6. Z[i][j] Z[i][j] + X[i][k] Y[k][j] 7. return Z

80 LS 2 / Informatik 80 Teile & Herrsche MatrixMultiplikation (Array X,Y,n) 1. new array Z[1..n][1..n] 2. for i 1 to n do 3. for j 1 to n do 4. Z[i][j] 0 5. for k 1 to n do 6. Z[i][j] Z[i][j] + X[i][k] Y[k][j] 7. return Z

81 LS 2 / Informatik 81 Teile & Herrsche MatrixMultiplikation (Array X,Y,n) 1. new array Z[1..n][1..n] 2. for i 1 to n do 3. for j 1 to n do 4. Z[i][j] 0 5. for k 1 to n do 6. Z[i][j] Z[i][j] + X[i][k] Y[k][j] 7. return Z

82 LS 2 / Informatik 82 Teile & Herrsche MatrixMultiplikation (Array X,Y,n) 1. new array Z[1..n][1..n] 2. for i 1 to n do 3. for j 1 to n do 4. Z[i][j] 0 5. for k 1 to n do 6. Z[i][j] Z[i][j] + X[i][k] Y[k][j] 7. return Z

83 LS 2 / Informatik 83 Teile & Herrsche MatrixMultiplikation (Array X,Y,n) 1. new array Z[1..n][1..n] 2. for i 1 to n do 3. for j 1 to n do 4. Z[i][j] 0 5. for k 1 to n do 6. Z[i][j] Z[i][j] + X[i][k] Y[k][j] 7. return Z

84 LS 2 / Informatik 84 Teile & Herrsche MatrixMultiplikation (Array X,Y,n) Laufzeit 1. new array Z[1..n][1..n] 2. for i 1 to n do 3. for j 1 to n do 4. Z[i][j] 0 5. for k 1 to n do 6. Z[i][j] Z[i][j] + X[i][k] Y[k][j] 7. return Z

85 LS 2 / Informatik 85 Teile & Herrsche MatrixMultiplikation (Array X,Y,n) Laufzeit 1. new array Z[1..n][1..n] (n²) 2. for i 1 to n do 3. for j 1 to n do 4. Z[i][j] 0 5. for k 1 to n do 6. Z[i][j] Z[i][j] + X[i][k] Y[k][j] 7. return Z Ausnahme (Rechenmodell): Dynamische Initialisierung eines Feldes benötigt Zeit proportional zur Größe des Feldes Ausnahme (Rechenmodell): Dynamische Initialisierung eines Feldes benötigt Zeit proportional zur Größe des Feldes

86 LS 2 / Informatik 86 Teile & Herrsche MatrixMultiplikation (Array X,Y,n) Laufzeit 1. new array Z[1..n][1..n] (n²) 2. for i 1 to n do (n) 3. for j 1 to n do 4. Z[i][j] 0 5. for k 1 to n do 6. Z[i][j] Z[i][j] + X[i][k] Y[k][j] 7. return Z

87 LS 2 / Informatik 87 Teile & Herrsche MatrixMultiplikation (Array X,Y,n) Laufzeit 1. new array Z[1..n][1..n] (n²) 2. for i 1 to n do (n) 3. for j 1 to n do (n²) 4. Z[i][j] 0 5. for k 1 to n do 6. Z[i][j] Z[i][j] + X[i][k] Y[k][j] 7. return Z

88 LS 2 / Informatik 88 Teile & Herrsche MatrixMultiplikation (Array X,Y,n) Laufzeit 1. new array Z[1..n][1..n] (n²) 2. for i 1 to n do (n) 3. for j 1 to n do (n²) 4. Z[i][j] 0 (n²) 5. for k 1 to n do 6. Z[i][j] Z[i][j] + X[i][k] Y[k][j] 7. return Z

89 LS 2 / Informatik 89 Teile & Herrsche MatrixMultiplikation (Array X,Y,n) Laufzeit 1. new array Z[1..n][1..n] (n²) 2. for i 1 to n do (n) 3. for j 1 to n do (n²) 4. Z[i][j] 0 (n²) 5. for k 1 to n do (n³) 6. Z[i][j] Z[i][j] + X[i][k] Y[k][j] 7. return Z

90 LS 2 / Informatik 90 Teile & Herrsche MatrixMultiplikation (Array X,Y,n) Laufzeit 1. new array Z[1..n][1..n] (n²) 2. for i 1 to n do (n) 3. for j 1 to n do (n²) 4. Z[i][j] 0 (n²) 5. for k 1 to n do (n³) 6. Z[i][j] Z[i][j] + X[i][k] Y[k][j] (n³) 7. return Z

91 LS 2 / Informatik 91 Teile & Herrsche MatrixMultiplikation (Array X,Y,n) Laufzeit 1. new array Z[1..n][1..n] (n²) 2. for i 1 to n do (n) 3. for j 1 to n do (n²) 4. Z[i][j] 0 (n²) 5. for k 1 to n do (n³) 6. Z[i][j] Z[i][j] + X[i][k] Y[k][j] (n³) 7. return Z (1)

92 LS 2 / Informatik 92 Teile & Herrsche MatrixMultiplikation (Array X,Y,n) Laufzeit 1. new array Z[1..n][1..n] (n²) 2. for i 1 to n do (n) 3. for j 1 to n do (n²) 4. Z[i][j] 0 (n²) 5. for k 1 to n do (n³) 6. Z[i][j] Z[i][j] + X[i][k] Y[k][j] (n³) 7. return Z (1) (n³)

93 LS 2 / Informatik 93 Teile & Herrsche Matrixmultiplikation Aufwand 8 Multiplikationen von n/2 n/2 Matrizen 4 Additionen von n/2 n/2 Matrizen

94 LS 2 / Informatik 94 Teile & Herrsche Matrixmultiplikation Aufwand 8 Multiplikationen von n/2 n/2 Matrizen 4 Additionen von n/2 n/2 Matrizen Laufzeit T(n) = 8 T(n/2) + cn², für n>1 c, für n=1

95 LS 2 / Informatik 95 Teile & Herrsche Laufzeit einfache Matrixmultiplikation cn² 8c(n/2)² ……. ……. 8 c T(n) = 8 T(n/2) + cn², n>1 c, n=1 c geeignete Konstante n n n/2 1 1 1 1 1 1 1 1 1 1 1 1 h Höhe h=log n n/2

96 LS 2 / Informatik 96 Teile & Herrsche Laufzeit einfache Matrixmultiplikation cn² 8c(n/2)² ……. ……. 8 c T(n) = 8 T(n/2) + cn², n>1 c, n=1 c geeignete Konstante n n n/2 1 1 1 1 1 1 1 1 1 1 1 1 h Höhe h=log n n/2 (n³)

97 LS 2 / Informatik 97 Teile & Herrsche Satz 14 Die einfache Matrizenmultiplikation hat Laufzeit (n³). Beweis

98 LS 2 / Informatik 98 Teile & Herrsche Satz 14 Die einfache Matrizenmultiplikation hat Laufzeit (n³). Beweis Wir nehmen an, dass n eine Zweierpotenz ist und T(2)c gilt. Wir zeigen zunächst per Induktion über n, dass T(n) cn³ - cn².

99 LS 2 / Informatik 99 Teile & Herrsche Satz 14 Die einfache Matrizenmultiplikation hat Laufzeit (n³). Beweis Wir nehmen an, dass n eine Zweierpotenz ist und T(2)c gilt. Wir zeigen zunächst per Induktion über n, dass T(n) cn³ - cn². (I.A.) Für n=2 ist T(2) c c 2³ - c 2²

100 LS 2 / Informatik 100 Teile & Herrsche Satz 14 Die einfache Matrizenmultiplikation hat Laufzeit (n³). Beweis Wir nehmen an, dass n eine Zweierpotenz ist und T(2)c gilt. Wir zeigen zunächst per Induktion über n, dass T(n) cn³ - cn². (I.A.) Für n=2 ist T(2) c c 2³ - c 2² (I.V.) Für m<n ist T(m) cm³ - cm².

101 LS 2 / Informatik 101 Teile & Herrsche Satz 14 Die einfache Matrizenmultiplikation hat Laufzeit (n³). Beweis Wir nehmen an, dass n eine Zweierpotenz ist und T(2)c gilt. Wir zeigen zunächst per Induktion über n, dass T(n) cn³ - cn². (I.A.) Für n=2 ist T(2) c c 2³ - c 2² (I.V.) Für m<n ist T(m) cm³ - cm². (I.S.) Es gilt T(n) = 8 T(n/2) + cn². Nach (I.V.) folgt T(n) 8 c(n/2)³ - 8 c(n/2)² + cn² cn³ - cn².

102 LS 2 / Informatik 102 Teile & Herrsche Satz 14 Die einfache Matrizenmultiplikation hat Laufzeit (n³). Beweis Wir nehmen an, dass n eine Zweierpotenz ist und T(2)c gilt. Wir zeigen zunächst per Induktion über n, dass T(n) cn³ - cn². (I.A.) Für n=2 ist T(2) c c 2³ - c 2² (I.V.) Für m<n ist T(m) cm³ - cm². (I.S.) Es gilt T(n) = 8 T(n/2) + cn². Nach (I.V.) folgt T(n) 8 c(n/2)³ - 8 c(n/2)² + cn² cn³ - cn².

103 LS 2 / Informatik 103 Teile & Herrsche Matrixmultiplikation Trick (wie bei Integer Multiplikation) P = A (F-H) P = (A+D) (E+H) P = (A+B) H P = (B-D) (G+H) P = (C+D) E P =(A-C) (E+F) P = D (G-E) 1 5 2 6 3 7 4

104 LS 2 / Informatik 104 Teile & Herrsche Matrixmultiplikation Trick (wie bei Integer Multiplikation) P = A (F-H) P = (A+D) (E+H) P = (A+B) H P = (B-D) (G+H) P = (C+D) E P =(A-C) (E+F) P = D (G-E) 1 5 2 6 3 7 4 AE+BG = P + P + P - P AF+BH = P + P CE+DG = P + P CF+DH = P + P - P - P AE+BG = P + P + P - P AF+BH = P + P CE+DG = P + P CF+DH = P + P - P - P 45 62 12 34 15 37

105 LS 2 / Informatik 105 Teile & Herrsche Matrixmultiplikation Trick (wie bei Integer Multiplikation) P = A (F-H) P = (A+D) (E+H) P = (A+B) H P = (B-D) (G+H) P = (C+D) E P =(A-C) (E+F) P = D (G-E) 1 5 2 6 3 7 4 AE+BG = P + P + P - P AF+BH = P + P CE+DG = P + P CF+DH = P + P - P - P AE+BG = P + P + P - P AF+BH = P + P CE+DG = P + P CF+DH = P + P - P - P 45 62 12 34 15 37 Nur 7 Multiplikationen !!!!!

106 LS 2 / Informatik 106 Teile & Herrsche Matrixmultiplikation Trick (wie bei Integer Multiplikation) P = A (F-H) P = (A+D) (E+H) P = (A+B) H P = (B-D) (G+H) P = (C+D) E P =(A-C) (E+F) P = D (G-E) 1 5 2 5 3 7 4 AE+BG = P + P + P - P AF+BH = P + P CE+DG = P + P CF+DH = P + P - P - P AE+BG = P + P + P - P AF+BH = P + P CE+DG = P + P CF+DH = P + P - P - P 45 62 12 34 15 37 Nur 7 Multiplikationen !!!!!

107 LS 2 / Informatik 107 Teile & Herrsche Laufzeit einfache Matrixmultiplikation cn² 7c(n/2)² ……. ……. 7 c T(n) = 7 T(n/2) + cn², n>1 c, n=1 c geeignete Konstante n n n/2 1 1 1 1 1 1 1 1 1 1 1 1 h Höhe h=log n n/2 (7 ) log n

108 LS 2 / Informatik 108 Teile & Herrsche Laufzeit einfache Matrixmultiplikation cn² 7c(n/2)² ……. ……. 7 c T(n) = 7 T(n/2) + cn², n>1 c, n=1 c geeignete Konstante n n n/2 1 1 1 1 1 1 1 1 1 1 1 1 h Höhe h=log n n/2 (n ) log 7

109 LS 2 / Informatik 109 Teile & Herrsche Satz 14 Die einfache Matrizenmultiplikation hat Laufzeit (7 ). Beweis log n

110 LS 2 / Informatik 110 Teile & Herrsche Satz 14 Die einfache Matrizenmultiplikation hat Laufzeit (7 ). Beweis Wir nehmen an, dass n eine Zweierpotenz ist und T(4)c gilt. Wir zeigen zunächst per Induktion über n, dass T(n) c 7 - 2cn². log n

111 LS 2 / Informatik 111 Teile & Herrsche Satz 14 Die einfache Matrizenmultiplikation hat Laufzeit (7 ). Beweis Wir nehmen an, dass n eine Zweierpotenz ist und T(4)c gilt. Wir zeigen zunächst per Induktion über n, dass T(n) c 7 - 2cn². (I.A.) Für n=2 ist T(4) c c 49 - c 32. log n

112 LS 2 / Informatik 112 Teile & Herrsche Satz 14 Die einfache Matrizenmultiplikation hat Laufzeit (7 ). Beweis Wir nehmen an, dass n eine Zweierpotenz ist und T(4)c gilt. Wir zeigen zunächst per Induktion über n, dass T(n) c 7 - 2cn². (I.A.) Für n=2 ist T(4) c c 49 - c 32. (I.V.) Für m<n ist T(m) c 7 - cm². log n log m

113 LS 2 / Informatik 113 Teile & Herrsche Satz 14 Die einfache Matrizenmultiplikation hat Laufzeit (7 ). Beweis Wir nehmen an, dass n eine Zweierpotenz ist und T(4)c gilt. Wir zeigen zunächst per Induktion über n, dass T(n) c 7 - 2cn². (I.A.) Für n=2 ist T(4) c c 49 - c 32. (I.V.) Für m<n ist T(m) c 7 - cm². (I.S.) Es gilt T(n) = 7 T(n/2) + cn². Nach (I.V.) folgt T(n) 7 7 - 14 c (n/2)² + cn² 7 - 2cn². log n log m log (n/2) log n

114 LS 2 / Informatik 114 Teile & Herrsche Satz 14 Die einfache Matrizenmultiplikation hat Laufzeit (7 ). Beweis Wir nehmen an, dass n eine Zweierpotenz ist und T(4)c gilt. Wir zeigen zunächst per Induktion über n, dass T(n) c 7 - 2cn². (I.A.) Für n=2 ist T(4) c c 49 - c 32. (I.V.) Für m<n ist T(m) c 7 - cm². (I.S.) Es gilt T(n) = 7 T(n/2) + cn². Nach (I.V.) folgt T(n) 7 7 - 14 c (n/2)² + cn² 7 - 2cn². log n log m log (n/2) log n

115 LS 2 / Informatik 115 Teile & Herrsche Satz 15 Zwei n-Bit Integer Zahlen können mit Hilfe des Teile & Herrsche Verfahrens in O(n ) worst case Laufzeit multipliziert werden. Beweis 2.81

116 LS 2 / Informatik 116 Teile & Herrsche Satz 15 Zwei n-Bit Integer Zahlen können mit Hilfe des Teile & Herrsche Verfahrens in O(n ) worst case Laufzeit multipliziert werden. Beweis Die Laufzeit folgt aus Satz 14 wegen 2.81 log 7. Korrektheit zeigen wir per Induktion über n. 2.81

117 LS 2 / Informatik 117 Teile & Herrsche Satz 15 Zwei n-Bit Integer Zahlen können mit Hilfe des Teile & Herrsche Verfahrens in O(n ) worst case Laufzeit multipliziert werden. Beweis Die Laufzeit folgt aus Satz 14 wegen 2.81 log 7. Korrektheit zeigen wir per Induktion über n. (I.A.) Die Multiplikation zweier 1 1 Matrizen ist korrekt. 2.81

118 LS 2 / Informatik 118 Teile & Herrsche Satz 15 Zwei n-Bit Integer Zahlen können mit Hilfe des Teile & Herrsche Verfahrens in O(n ) worst case Laufzeit multipliziert werden. Beweis Die Laufzeit folgt aus Satz 14 wegen 2.81 log 7. Korrektheit zeigen wir per Induktion über n. (I.A.) Die Multiplikation zweier 1 1 Matrizen ist korrekt. (I.V.) Die Multiplikation zweier m m Matrizen für m<n ist korrekt. 2.81

119 LS 2 / Informatik 119 Teile & Herrsche Satz 15 Zwei n-Bit Integer Zahlen können mit Hilfe des Teile & Herrsche Verfahrens in O(n ) worst case Laufzeit multipliziert werden. Beweis Die Laufzeit folgt aus Satz 14 wegen 2.81 log 7. Korrektheit zeigen wir per Induktion über n. (I.A.) Die Multiplikation zweier 1 1 Matrizen ist korrekt. (I.V.) Die Multiplikation zweier m m Matrizen für m<n ist korrekt. (I.S.) Nach (I.V.) werden die Zwischenergebnisse P bis P korrekt berechnet. Damit folgt die Korrektheit des Algorithmus durch Nachrechnen der Teilformeln. 2.81 17

120 LS 2 / Informatik 120 Teile & Herrsche Satz 15 Zwei n-Bit Integer Zahlen können mit Hilfe des Teile & Herrsche Verfahrens in O(n ) worst case Laufzeit multipliziert werden. Beweis Die Laufzeit folgt aus Satz 14 wegen 2.81 log 7. Korrektheit zeigen wir per Induktion über n. (I.A.) Die Multiplikation zweier 1 1 Matrizen ist korrekt. (I.V.) Die Multiplikation zweier m m Matrizen für m<n ist korrekt. (I.S.) Nach (I.V.) werden die Zwischenergebnisse P bis P korrekt berechnet. Damit folgt die Korrektheit des Algorithmus durch Nachrechnen der Teilformeln. 2.81 17

121 LS 2 / Informatik 121 Teile & Herrsche Zusammenfassung Multiplikation und Matrizenmultiplikation sind weitere Beispiel für Teile & Herrsche Algorithmen Faustregel: Je weniger rekursive Aufrufe desto schneller Trick bei Laufzeitbeweisen: Abziehen von Termen niedriger Ordnung


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

Ähnliche Präsentationen


Google-Anzeigen