LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
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
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)
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.
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.
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].
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].
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.
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.
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.
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].
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.
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.
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
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 n
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
LS 2 / Informatik 17 Teile & Herrsche Schulmethode: (13 11)
LS 2 / Informatik 18 Teile & Herrsche Schulmethode: (13 11)
LS 2 / Informatik 19 Teile & Herrsche Schulmethode: (13 11)
LS 2 / Informatik 20 Teile & Herrsche Schulmethode: (13 11)
LS 2 / Informatik 21 Teile & Herrsche Schulmethode: (13 11)
LS 2 / Informatik 22 Teile & Herrsche Schulmethode: (13 11)
LS 2 / Informatik 23 Teile & Herrsche Schulmethode: (13 11)
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
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
LS 2 / Informatik 26 Teile & Herrsche Integer Multiplikation AB CD
LS 2 / Informatik 27 Teile & Herrsche Integer Multiplikation AB CD B D
LS 2 / Informatik 28 Teile & Herrsche Integer Multiplikation AB CD B D B C +
LS 2 / Informatik 29 Teile & Herrsche Integer Multiplikation AB CD B D B C A D + +
LS 2 / Informatik 30 Teile & Herrsche Integer Multiplikation AB CD B D B C A D A C + + +
LS 2 / Informatik 31 Teile & Herrsche Integer Multiplikation AB CD B D B C A D A C Ergebnis =
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
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
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
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
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
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
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/ h Höhe h
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/ h Höhe h Höhe des Baums: h = log n (n²)
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/ h Höhe h Höhe des Baums: h = log n (n²) Nichts gewonnen!
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².
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.
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².
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.
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 !!!!!
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!!
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.
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.
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.
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.
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.
LS 2 / Informatik 52 Teile & Herrsche Verbesserte Integer Multiplikation AB CD B D B C A D A C Ergebnis =
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
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
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
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/ h Höhe h Höhe des Baums: h = log n O(3 ) log n
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/ 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
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
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
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
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 (n/2) + cn = c 3 - 2cn. log n log 3 log n log 4 log n log m
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 (n/2) + cn = c 3 - 2cn. log n log 3 log n log 4 log n log m
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
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
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
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
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
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
LS 2 / Informatik 69 Teile & Herrsche Matrixmultiplikation Zeile x Spalte = =
LS 2 / Informatik 70 Teile & Herrsche Matrixmultiplikation Zeile x Spalte = =
LS 2 / Informatik 71 Teile & Herrsche Matrixmultiplikation =
LS 2 / Informatik 72 Teile & Herrsche Matrixmultiplikation =
LS 2 / Informatik 73 Teile & Herrsche Matrixmultiplikation =
LS 2 / Informatik 74 Teile & Herrsche Matrixmultiplikation =
LS 2 / Informatik 75 Teile & Herrsche Matrixmultiplikation =
LS 2 / Informatik 76 Teile & Herrsche Matrixmultiplikation Problem: Berechne das Produkt zweier n n-Matrizen Eingabe: Matrizen X, Y Ausgabe: Matrix Z = X Y
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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)
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³)
LS 2 / Informatik 93 Teile & Herrsche Matrixmultiplikation Aufwand 8 Multiplikationen von n/2 n/2 Matrizen 4 Additionen von n/2 n/2 Matrizen
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
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/ h Höhe h=log n n/2
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/ h Höhe h=log n n/2 (n³)
LS 2 / Informatik 97 Teile & Herrsche Satz 14 Die einfache Matrizenmultiplikation hat Laufzeit (n³). Beweis
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².
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²
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².
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².
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².
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)
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) 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
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) 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 Nur 7 Multiplikationen !!!!!
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) 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 Nur 7 Multiplikationen !!!!!
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/ h Höhe h=log n n/2 (7 ) log n
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/ h Höhe h=log n n/2 (n ) log 7
LS 2 / Informatik 109 Teile & Herrsche Satz 14 Die einfache Matrizenmultiplikation hat Laufzeit (7 ). Beweis log n
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
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
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
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) c (n/2)² + cn² 7 - 2cn². log n log m log (n/2) log n
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) c (n/2)² + cn² 7 - 2cn². log n log m log (n/2) log n
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
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
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
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
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
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
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