Technische Universität München Fakultät für Informatik Lehrstuhl für Effiziente Algorithmen Prof. Dr. Ernst W. Mayr Wintersemester 2005 Lösungsblatt 6 6. Dezember 2005 Diskrete Strukturen Aufgabe 1 Wir betrachten die ganzzahlige Division a ÷ b zweier Zahlen a ∈ Z, b ∈ N und die zugehörige modulo-Operation a mod b, für die gilt a = (a ÷ b) · b + (a mod b) , mit 0 ≤ a mod b < b. 1. Zeigen Sie für alle a, b ∈ Z und m ∈ N (a + b) mod m = [(a mod m) + (b mod m)] mod m , (a · b) mod m = [(a mod m) · (b mod m)] mod m , a ≡ (a mod b) mod b . 2. Berechnen Sie (1017 + 523 − 30100 ) mod 3 ! 3. Berechnen Sie 7999999 mod 11 und 27346790100 mod 12 ! Benutzen Sie, wenn möglich, den kleinen Satz von Fermat. Lösungsvorschlag 1. Für den Beweis von Gleichungen modulo einer natürlichen Zahl m kann man die folgende einfache Kennzeichnung benutzen. Für alle ganzen Zahlen x, y mit 0 ≤ x, y < m gilt: x=y ⇐⇒ (∃k ∈ Z) [y = x + k · m] . (a) Wir setzen nun x := (a + b) mod m , y := [(a mod m) + (b mod m)] mod m . Es gilt 0 ≤ x, y < m und x y (a mod m) (b mod m) = = = = a + b + kx · m , (a mod m) + (b mod m) + ky · m , a + ka · m , b + kb · m für gewisse ka , kb , kx , ky ∈ Z. Nun folgt a + ka · m + b + kb · m + ky · m x − kx · m + k a · m + kb · m + ky · m x + (ka + kb + ky − kx ) · m x + k · m. y = = = = Mit der eingangs gegebenen Kennzeichnung folgt x = y. (b) Zum Beweis der 2. Gleichung setzen wir x := (a · b) mod m , y := [(a mod m) · (b mod m)] mod m . Es gilt 0 ≤ x, y < m und x y (a mod m) (b mod m) = = = = a · b + kx · m , (a mod m) · (b mod m) + ky · m , a + ka · m , b + kb · m für gewisse ka , kb , kx , ky ∈ Z. Nun folgt y = = = = (a + ka · m) · (b + kb · m) + ky · m x − kx · m + ka · m · b + a · kb · m + k a · m · kb · m + ky · m x + (ka · b + kb · a + ka · kb · m + ky − kx ) · m x + k · m. Mit der eingangs gegebenen Kennzeichnung folgt wieder x = y. (c) Die Kongruenz modulo m ist definiert durch x≡y mod b :⇐⇒ (∃k ∈ Z) [ x = y + k·b ] . Nach Definition von a mod b gilt für ein bestimmtes k ∈ Z gilt a mod b = a + k·b , d. h. a = a mod b + k 0 ·b , mithin a ≡ (a mod b) mod b . 2. Wir benützen die obigen Rechenregeln und erhalten (1017 +523 −30100 ) mod 3 = = = = = [(10 mod 3)17 +(5 mod 3)23 −(30 mod 3)100 ] mod 3 [117 + 223 − 0100 ] mod 3 (1 + 411 · 2) mod 3 (1 + (4 mod 3)11 · 2) mod 3 (1 + 2) mod 3 = 0 . 2 3. (a) Nach dem kleinen Satz von Fermat gilt für die Primzahl p = 11 7p−1 ≡ 1 mod p und folglich 5 (710 )10 ≡ 1 mod 11 . Es folgt 7999999 · 7 ≡ 1 mod 11 , 7999999 · 7 · 8 ≡ 8 mod 11 , und wegen (7 · 8) mod 11 = 1 folgt 7999999 ≡ 8 mod 11 . (b) Die Potenzen 2k müssen sich modulo 12 wiederholen. Man rechnet z. B. sofort 22 ≡ 24 mod 12. Also lassen sich die Potenzen n ≥ 4 von 2 gleichwertig um 2 verringern, d. h. für alle k ∈ N0 24+k ≡ 22+k mod 12 . Für gerade, positive Potenzen n = 2 + 2k von 2 ergibt sich per Induktion 2n ≡ 22 mod 12 . Mithin folgt 27346790100 mod 12 = 4 . Aufgabe 2 1. Zeigen Sie: Die Menge aller Elemente endlicher Ordnung in einer abelschen Gruppe bildet eine Untergruppe. 2. Zeigen Sie: In einem beliebigen Ring hR, +, ·, 0, 1i gelten die folgenden Gleichungen. a · 0 = 0 · a = 0, a · (−b) = (−a) · b = −a · b . 3. Zeigen Sie, dass der Ring hZ3 , +3 , ·3 , 0, 1i ein Körper ist. 4. Die Charakteristik eines Körpers K, i. Z. char(K), ist definiert als die Ordnung des Elements 1 in der additiven Gruppe von K. Man zeige: p = char(K) ∈ N ⇒ p ist eine Primzahl . 5. Geben Sie die Verknüpfungstafeln eines Körpers mit 4 Elementen an. Welche Charakteristik hat dieser Körper? Begründen Sie Ihre Angaben! 3 Lösungsvorschlag 1. Sei U die Menge aller Elemente endlicher Ordnung einer abelschen Gruppe hG, +, 0i, d. h. U = {x ∈ G; (∃n ∈ N0 ) [n · x = 0]}. Wir zeigen (a) Abgeschlossenheit von +: Seien x, y ∈ U , d. h. mx = 0, ny = 0 für gewisse m, n ∈ N0 . Es folgt mn(x + y) = 0, d. h. x + y ∈ U . (b) Neutrales Element in U: Wegen z. B. 1 · 0 = 0 gilt 0 ∈ U . (c) Abgeschlossenheit gegen Inversenbildung: Sei x ∈ U , d. h. nx = 0 für ein n ∈ N0 . Dann gilt auch nx + n(−x) = 0, also n(−x) = 0, mithin −x ∈ U . 2. Es gilt a · 0 = a · (0 + 0) = a · 0 + a · 0. Daraus folgt a · 0 = 0. Analog folgt 0 · a = 0. Andererseits gilt 0 = a · 0 = a · (b − b) = a · b + a · (−b). Daraus folgt −a · b = a · (−b). Analog folgt −a · b = (−a) · b. 3. Wir haben nur zu zeigen, dass die kommutative Halbgruppe hZ3 \ {0}, ·3 , 1i sogar eine (abelsche) Gruppe ist. Es gilt Z3 \{0} = {1, 2}. Wegen 2 ·3 2 = 1 ist 2 zu sich selbst invers. Andererseits ist 1 trivialerweise ebenfalls zu sich selbst invers. 4. Zur besseren Unterscheidung schreiben wir die Multiplikation in K als ◦. Wir betrachten p = s · t. Dann gilt nach dem Distributivgesetz von ◦ (1| + 1 + {z. . . + 1}) ◦ (1| + 1 + {z. . . + 1}) = (1| + 1 + {z. . . + 1}) = 0 , s × t × s·t × oder anders geschrieben (s · 1) ◦ (t · 1) = (s · t) ◦ 1 = p · 1 = 0 . Da ein Körper nullteilerfrei ist, folgt s · 1 = 0 oder t · 1 = 0. Da p die Charakteristik der additiven Gruppe von K ist, muss s ≥ p oder t ≥ p gelten, d. h. p = s oder p = t. Damit kann aber p keine echten Teiler enthalten. 5. Die Charakteristik eines Körpers K mit 4 Elementen ist notwendig gleich 2, weil sie sowohl Primzahl ist als auch Teiler der Anzahl der Körperelemente. Letzteres muss gelten, weil die Ordnung der von 1 additiv erzeugten Untergruppe die Ordnung von K teilen muss nach dem Satz von Lagrange. Damit gilt 1 + 1 = 0. Die Multiplikation mit einem x 6= 0 ergibt x + x = 0. Damit ist die additive Gruppe identisch mit der in Blatt 5, Aufgabe 1 hergeleiteten Gruppe Z2×2 mit der dort zu entnehmenden Verknüpfungstafel. Die multiplikative Gruppe von K besitzt drei Elemente 1, b, c. Für die Verknüpfungstafel gilt zunächst ◦ 1 b c 1 1 b c b b × ? c c 4 Falls man an die Stelle × die 1 setzen würde, entstünde an der Stelle ? ein Widerspruch zur Kürzungsregel. Die Vervollständigung ergibt sich damit zwingend wie folgt. ◦ 1 b c 1 1 b c b b c 1 c c 1 b Aufgabe 3 In gewissen kommutativen Ringen R = hS, +, ·, 0, 1i stellt sich der erweiterte Euklidsche Algorithmus zur Berechnung des größten gemeinsamen Teilers ggT (a, b) zweier Elemente a ∈ S und b ∈ S dar als eine iterierte Transformation (Matrixmultiplikation) Qi angewandt auf ∆i−1 wie folgt. a ri 0 1 ri−1 ∆0 = , ∆i = = Qi ∆i−1 = , i := 1, 2, . . . , n ∈ N . b ri+1 1 −qi ri Dabei werden die Quotienten qi so gewählt (geschätzt), dass die ∆i mit wachsendem i in einem gewissen Sinn stets echt kleiner werden. Eine Berechnung wird beendet, wenn die Folge der ∆i maximale Länge besitzt, d. h. wenn kein Quotient existiert, der die Bildung eines noch kleineren Restes erlaubt. Zur Bemessung der Größe von Elementen eines Ringes dient beispielweise im Ring der ganzen Zahlen hZ, +, ·, 0, 1i die Betragsfunktion. In Polynomringen wird der Grad eines Polynoms verwendet. Wir betrachten im Folgenden den Ring hZ, +, ·, 0, 1i der ganzen Zahlen. 1. Zeigen Sie für alle ensprechenden i ggT (a, b) = ggT (ri , ri+1 ). 2. Berechnen Sie mit dem Euklidschen Algorithmus den ggT (10800, 122). 3. Berechnen Sie mit dem erweiterten Euklidschen Algorithmus ganze Zahlen m, n, so dass 81m + 128n = 1. 4. Bestimmen Sie mit dem erweiterten Euklidschen Algorithmus einen größten gemeinsamen Teiler der Polynome x5 − 5x4 + 4x3 + 2x2 − 12x + 10 und x2 − 1. Die Polynome werden im Ring Q[x] betrachtet. Lösungsvorschlag 1. Gemeinsame Teiler zweier Ringelemente ri−1 , ri übertragen sich auf deren Linearkombinationen sri−1 + tri . Falls x Teiler von ri−1 und von ri , i. Z. x|ri−1 ∧ x|ri , gilt sri−1 + tri = sxh + txk = (sh + tk)x für gewisse Faktoren h, k ∈ R, mithin x|(sri−1 + tri ). 5 Die Matrixmultiplikation liefert eine Linearkombination wie folgt. ri ri 0 1 ri−1 = = . ri+1 ri−1 − qi ri 1 −qi ri Da die Matrix invertierbar ist mit −1 Q = qi 1 1 0 , haben die Komponentenpaare der ∆i für alle i die gleichen Teiler. 2. Wir rechnen im Ring der ganzen Zahlen. Im Euklidschen Algorithmus für den Ring ganzer Zahlen zur Berechnung des ggT (a, b) werden die Quotienten qi durch ganzzahlige Division bestimmt. qi = ri−1 ÷ ri . Für die Linearkombination ri+1 = ri−1 − qi ri folgt dann ri+1 = ri−1 mod ri . Die Berechnung wird beendet, wenn rn+1 = 0 eintritt für irgendein n ∈ N. r0 r1 r2 r3 r4 r5 r6 r7 = = = = = = = = 10800 , 122 , 10800 mod 122 = 64 , 122 mod 64 = 58 , 64 mod 58 = 6 , 58 mod 6 = 4 , 6 mod 4 = 2 , 4 mod 2 = 0 . Ergebnis: ggT (10800, 122) = r6 = 2. 3. Der erweiterte Euklidsche Algorithmus läßt sich als Matrixmultiplikation wie folgt darstellen rn a = Qn · Qn−1 · . . . · Q2 · Q1 · . rn+1 b Mit Pk := k Y Qi , k = 0, 1, . . . , n i=1 hat man rn als Linearkombination von a, b wie folgt rn a = Pn · . rn+1 b 6 Die Matrizen Pk enthalten die Koeffizienten der jeweiligen Linearkombinationen. Man berechnet diese Koeffizienten gleichzeitig mit den rk durch sukzessive Berechnung von 0 1 mk−1 nk−1 Pk = Qk · Pk−1 = · . 1 −qk mk nk Es gelten die folgenden Gleichungen. qk = rk+1 = mk+1 = nk+1 = rk = rk−1 ÷ rk , rk−1 mod rk , mk−1 − qk · mk , nk−1 − qk · nk , mk · a + nk · b . Wir führen die Auswertung der Formeln von Hand aus mit Buchführung in einer Tabelle. k rk−1 rk qk mk−1 nk−1 mk nk k=1 81 128 0 1 0 0 1 k=2 128 81 1 1 0 k=3 81 47 1 −1 1 k=4 47 34 1 2 −1 k=5 34 13 2 −3 2 k=6 13 8 1 8 −5 k=7 8 5 1 −11 7 k=8 5 3 1 19 −12 k=9 3 2 1 −30 19 k = 10 2 1 2 49 −31 k = 11 1 0 Ergebnis: 81 · 49 + 128 · (−31) = 1. 4. Wir führen die Auswertung der Formeln von Hand aus mit Buchführung in einer Tabelle, zunächst ohne die Spalten für die Erweiterung des Euklidschen Algorithmus. k rk−1 k = 1 (x5 − 5x4 + 4x3 + 2x2 − 12x + 10) k = 2 (x2 − 1) k = 3 (−7x + 7) rk qk 2 (x − 1) (x3 − 5x2 + 5x − 3) (−7x + 7) (− 71 x − 17 ) 0 Einen größten gemeinsamen Teiler der Polynome lesen wir mit r2 = (−7x + 7) aus der Tabelle ab. Durch Normierung erhalten wir den normierten ggT mit x − 1. Die Erweiterung des euklidschen Algorithmus ist zwar für die Berechnung des ggT nicht notwendig, die Aufgabenstellung verlangt dies aber. k qk k = 1 (x3 − 5x2 + 5x − 3) k = 2 (− 17 x − 17 ) mk−1 nk−1 mk nk 1 0 0 1 1 −(x3 − 5x2 + 5x − 3) Wir erhalten mit p := x5 − 5x4 + 4x3 + 2x2 − 12x + 10 und q := x2 − 1 ggT (p, q) = −7x + 7 = 1 · p + (−(x3 − 5x2 + 5x − 3))q . 7 Aufgabe 4 Wir betrachten im Folgenden den Ring hZ, +, ·, 0, 1i der ganzen Zahlen. Sei A eine nichtleere, endliche Teilmenge von Z \ {0}. Dann definieren wir den größten gemeinsamen Teiler aller Elemente von A, i. Z. ggT (A), als diejenige natürliche Zahl g für die gilt: g ist Teiler aller a ∈ A und jedes g 0 ∈ N, das alle Elemente von A teilt, teilt auch g. 1. Seien A, B nichtleere, endliche Teilmengen von Z \ {0}. Beweisen Sie ggT (A ∪ B) = ggT (ggT (A), ggT (B)) . Zeigen Sie zunächst, dass ggT (A) (bzw. ggT (B)) stets existiert. 2. Entwerfen Sie ein Verfahren zur Berechnung des ggT (A) für endliche Mengen ganzer Zahlen auf der Basis des Euklidschen Algorithmus. 3. Sei A = {a1 , a2 , . . . , an }. Entwerfen Sie ein Verfahren zur Berechnung ganzer Zahlen m1 , m2 , . . . , mn , so dass ggT (A) = m1 a1 + m2 a2 + . . . + mn an . Lösungsvorschlag 1. Man zeigt zunächst durch Induktion über die Anzahl n = |A| von Elementen einer nichtleeren, endlichen Menge A die Aussage P (n), i. e. dass ein ggT aller n Elemente von A existiert, wie folgt. Wir benutzen die Bezeichnung x|y für die Eigenschaft ’x Teiler von y’. n = 1: ggT ({a}) = |a|. (∀n ≥ 1)[P (n) ⇒ P (n + 1)]: Es gelte P (n). Seien |A| = n, |A ∪ {b}| = n + 1 und x := ggT (A). Wir setzen y := ggT (x, b) (dessen Existenz wurde in der Vorlesung mit dem Euklidschen Algorithmus gezeigt) und zeigen y = ggT (A ∪ {b}) wie folgt. 1. Es gilt y|x und y|b. Da x alle Elemente von A teilt, folgt (∀a ∈ A)[y|a] und y|b. 2. Sei umgekehrt z|c, ∀c ∈ A ∪ {b}. Dann folgt z|x und z|b, mithin z|y. Aus 1. und 2. folgt die Behauptung y = ggT (A ∪ {b}). Nun haben wir die Existenz eines ggT einer nichtleeren, endlichen Menge A ⊂ (Z\{0}) bewiesen. Die Eindeutigkeit des ggT war zwar nicht zu beweisen, sie ist aber klar, weil für alle a, b ∈ N gilt a|b ∧ b|a ⇒ a = b. Wir zeigen nun ggT (A ∪ B) = ggT (ggT (A), ggT (B)) . Dazu setzen wir x := ggT (A ∪ B), u := ggT (A), v := ggT (B), w := ggT (u, v) . 1. Es gilt x|a, ∀a ∈ A und x|b, ∀b ∈ B. Daraus folgt x|u und x|v, mithin x|w. 2. Umgekehrt gilt w|u und w|v. Da aber u|a, ∀a ∈ A und u|b, ∀b ∈ B, folgt w|a, ∀a ∈ A und w|b, ∀b ∈ B. Damit folgt aber auch w|x. Wir erhalten x|w und w|x mit x, w ∈ N, mithin x = w. 8 2. Wir berechnen den ggT (A) rekursiv wie folgt. 1. Falls |A| = 1: Wähle x ∈ A. Dann gilt ggT (A) = |x|. 2. Falls |A| = n > 1: Wähle x ∈ A. Dann gilt ggT (A) = ggT (x, ggT (A \ {x}). 3. Wir berechnen den ggT (A) = m1 a1 + m2 a2 + . . . + mn an rekursiv wie folgt. 1. Falls |A| = 1: Wähle x ∈ A. Dann gilt ggT (A) = m1 · |x| mit m1 = 1. 2. Falls |A| = n > 1: Wähle x ∈ A. Berechne g = ggT (A\{x}) = k1 a1 +k2 a2 +. . .+kn−1 an−1 . Berechne ggT (x, g) = mx + ng. Dann gilt mit an = x ggT (A) = nk1 a1 + nk2 a2 + . . . + nkn−1 an−1 + man . 9