Induktion Induktion Diskret matematik Definition (Induktionsprincipen) Antag att vi vill visa ett påstående P(n) (som handlar om ett tal n ∈ Z+ ). Om då P0 är sant och P(n) ⇒ P(n + 1) är sant för alla n = 0, 1, 2, . . ., så gäller P(n) för alla n ∈ Z+ . Föreläsning 2: Induktion och primtal Eric Järpe Example C 2014 Eric Järpe MPE-lab IDE-sektionen Högskolan i Halmstad Bevisa att 2n < n! för alla n ≥ 4. Lösning: Basfall (n = 4): Ind.steg: December 18, 2014 Eric Järpe (Högskolan i Halmstad) Diskret matematik December 18, 2014 1 / 26 Eric Järpe (Högskolan i Halmstad) Induktion Diskret matematik December 18, 2014 2 / 26 Induktion Nestad induktion Rekursion I Algoritm För att visa P(m, n) för alla m, n ∈ Z 1. Visa basfallet: P(1, 1) 2. Visa induktionssteg 1: P(m, 1) ⇒ P(m + 1, 1) 3. Visa induktionssteg 2: P(m, n) ⇒ P(m, n + 1) Diskret matematik En algoritm kan presenteras på sluten form, xn = f (n), n ≥ 1, implicit form, t.ex. f (xn ) = g(xn ), n ≥ 1, eller (m-stegs) rekursiv form, C n=1 xn = f (xn−1 , . . . , xn−m ) n ≥ 2 (Ofta menar man 1-stegs när man bara säger rekursivt.) I Eric Järpe (Högskolan i Halmstad) 24 = 16 < 4! = 4 · 3 · 2 · 1 = 24 ok! Antag 2n < n!. Visa 2n+1 < (n + 1)!. 2n+1 = 2 · 2n < 2n! < (n + 1)n! = (n + 1)! December 18, 2014 3 / 26 Vid algoritmer i datorprogram är det ofta lämpligt med rekursiva specifikationer eftersom det reducerar minnesförbrukning vid loopar. Eric Järpe (Högskolan i Halmstad) Diskret matematik December 18, 2014 4 / 26 Induktion Induktion Rekursion Rekursion Example (CUSUM) Specificera algoritmen an = max 1≤m≤n n X Example Låt talföljden {an : n ∈ Z+ } vara definierad av att p a0 = 0 och an+1 = 2an + 1 för alla n ≥ 0. ! xk , n ≥ 1 rekursivt. k =m Bevisa att 1 ≤ an ≤ 3 för alla n ∈ Z+ . Lösning: an = = = = max(x1 + x2 + . . . + xn−1 + xn , x2 + . . . + xn−1 + xn , . . . , xn−1 + xn , xn ) max(x1 + x2 . . . + xn−1 , x2 + . . . + xn−1 , . . . , xn−1 , 0) + xn max(max(x1 + x2 . . . + xn−1 , x2 + . . . + xn−1 , . . . , xn−1 ), 0) + xn max(an−1 , 0) + xn a1 n=1 Alltså är an = max(an−1 , 0) + an n ≥ 2 Eric Järpe (Högskolan i Halmstad) Diskret matematik December 18, 2014 Lösning: Vi ska bevisa att 1 ≤ an ≤ 3, dvs att (1) an ≥ 1 och (2) an ≤ 3. (1) Basfall (n = 0): a0 = 1 ≥ 1 ok √ √ Ind.steg: an+1 = 2an + 1 {där an ≥ 1 enl. ind.ant.} ≥ 2 · 1 + 1≥ 1. (2) Basfall (n = 0): a0 = 1 ≤ 3 ok √ √ √ Ind.steg: an+1 = 2an + 1 {där an ≤ 3 enl. ind.ant.} ≤ 2 · 3 + 1≤ 9 = 3 Alltså är 1 ≤ an ≤ 3 för alla n ∈ Z+ enligt induktionsprincipen. 5 / 26 Eric Järpe (Högskolan i Halmstad) Diskret matematik Primtal gcd och Euklides algoritm Algoritm (Divisionsalgoritmen) Example (Diofantisk ekvation) Om a, b ∈ Z och b 6= 0 så finns entydigt en kvot k ∈ Z och en principal rest r ∈ Z så att 0 ≤ r ≤ |b| − 1 och ba = k + br . Hitta minsta x, y ∈ Z+ så att 10101x − 4107y = 1221. Gcd Example Eukl.alg. Hitta kvot och rest då −30 heltalsdivideras med 9. a b =k+ 6 / 26 December 18, 2014 8 / 26 Primtal Primtal Lösning: Divisionsalgritmen December 18, 2014 r b kan även skrivas a = kb + r varmed −30 = k · 9 + r där r = 0, 1, . . . , 8 ⇒ k måste vara största heltal så att 9k ≤ −30 = (−4) · 9+6. ⇒ k = −4 och r = 6. | {z } 3·3367 3·37·91 10101 4107 = 3·1369 = 3·37·37 ⇒ 10101 4107 1887 333 222 = = = = = gcd(10101, 4107) = 3 · 37 = 111 2 · 4107 + 1887 2·1887+333 5·333+222 1·222+111 2·111+0 =−36 Eric Järpe (Högskolan i Halmstad) Diskret matematik December 18, 2014 7 / 26 Eric Järpe (Högskolan i Halmstad) Diskret matematik Primtal Primtal gcd och Euklides algoritm gcd och Euklides algoritm Example (Diofantisk ekvation) Example (Diofantisk ekvation) Hitta minsta x, y ∈ Z+ så att 10101x − 4107y = 1221. Hitta minsta x, y ∈ Z+ så att 10101x − 4107y = 1221. 10101 4107 1887 333 222 Ekvationen. 10101 | {z } x Eukl.alg. 111·91 = 2 · 4107 + 1887 = 2·1887+333 = 5·333+222 = 1·222+111 = 2·111+0 − 4107 | {z } y = 111 · 11 10101 4107 1887 333 222 Hjälpekv. 10101x Eukl.alg. = 2 · 4107 + 1887 = 2·1887+333 = 5·333+222 = 1·222+111 = 2·111+0 − 4107y = 111 Eukl renskr Eukl.bakl. 111 = 333 − 222 = 333 − (1887 − 5 · 333) = 6 · 333 − 1887 111·37 Hjälpekv. 10101x − 4107y = 111 Eukl renskr = 6(4107 − 2 · 1887) − 1887 = 6 · 4107 − 13 · 1887 Eukl.bakl. 111 = Eukl renskr = 6 · 4107 − 13(10101 − 2 · 4107) = 32 · 4107 − 13 · 10101 P.-lösn. (x, y ) = (−13, −32) Eric Järpe (Högskolan i Halmstad) Diskret matematik December 18, 2014 9 / 26 Eric Järpe (Högskolan i Halmstad) Diskret matematik Primtal gcd och Euklides algoritm Example (Diofantisk ekvation) Example (Diofantisk ekvation) + Hitta minsta x, y ∈ Z+ så att 10101x − 4107y = 1221. Hitta minsta x, y ∈ Z så att 10101x − 4107y = 1221. 10101 4107 1887 333 222 Hjälpekv. 10101x = 2 · 4107 + 1887 = 2·1887+333 = 5·333+222 = 1·222+111 = 2·111+0 − 4107y = 111 10101 4107 1887 333 222 Hjälpekv. 10101x Eukl.alg. Eukl renskr renskr Eukl Diskret matematik renskr = 6(4107 − 2 · 1887) − 1887 = 6 · 4107 − 13 · 1887 renskr Eukl = 6 · 4107 − 13(10101 − 2 · 4107) = 32 · 4107 − 13 · 10101 P.-lösn. (x, y ) = (−13, −32) Eric Järpe (Högskolan i Halmstad) renskr Eukl.bakl. 111 = 333 − 222 = 333 − (1887 − 5 · 333) = 6 · 333 − 1887 = 6(4107 − 2 · 1887) − 1887 = 6 · 4107 − 13 · 1887 Eukl = 2 · 4107 + 1887 = 2·1887+333 = 5·333+222 = 1·222+111 = 2·111+0 − 4107y = 111 Eukl Eukl.bakl. 111 = 333 − 222 = 333 − (1887 − 5 · 333) = 6 · 333 − 1887 Eukl 10 / 26 Primtal gcd och Euklides algoritm Eukl.alg. December 18, 2014 December 18, 2014 renskr = 6 · 4107 − 13(10101 − 2 · 4107) = 32 · 4107 − 13 · 10101 P.-lösn. (x, y) = (−13, −32) 11 / 26 Eric Järpe (Högskolan i Halmstad) Diskret matematik December 18, 2014 12 / 26 Primtal Primtal gcd och Euklides algoritm En ny beteckning Example (Diofantisk ekvation) Hitta minsta x, y ∈ Z+ så att 10101x − 4107y = 1221. Hjälpekv. 10101x − 4107y = 111 I a r = k+ , b b 0 ≤ r ≤ b − 1. I a = kb + r , 0 ≤ r ≤ b − 1. I a ≡ r P.-lösn. (x, y) = (−13, −32) Ekvationen 10101x − 4107y = 1221 P.-lösn. (x, y ) = 11(−13, −32) = (−143, −352) (mod b) Fullst.lösn. (x, y ) = (−143 + 4107k , −352 + 10101k ), k ∈ Z Svar: Minsta positiva är (x, y ) = (−143 + 4107, −352 + 10101) = (3964, 9749). Eric Järpe (Högskolan i Halmstad) Diskret matematik December 18, 2014 13 / 26 Eric Järpe (Högskolan i Halmstad) Primtal Diskret matematik December 18, 2014 Primtal Räkneregler Räkneregler I Om a ≡ r och b ≡ s (mod c), så är a + b ≡ r + s (mod c). I Om a ≡ r och b ≡ s (mod c), så är a + b ≡ r + s (mod c). I Om a ≡ r och b ≡ s (mod c), så är ab ≡ rs (mod c). I Om a ≡ r och b ≡ s (mod c), så är ab ≡ rs (mod c). I Om a ≡ r (mod c), så är ab ≡ r b (mod c). I Om a ≡ r (mod c), så är ab ≡ r b (mod c). Exempel Beräkna 178 mod 17 Exempel Beräkna 13 200 mod 49 Lösning: Eftersom 178 = 170 + 8 och 170 = 17 · 10 ≡ 0 (mod 17) och 8 ≡ 8 (mod 17), så är resten vid heltalsdivision av 170 + 8 med 17: 0 + 8 = 8. På så sätt kan det vara enklare att tänka att “man får dra bort multipler av det tal man räknar modulo”. Så t ex är 178 ≡ 178 − 17 · 10 = 8 (mod 17). Lösning: Eftersom 13 200 = 132 · 100 och 132 ≡ 132 − 2 · 49 = 34 (mod 49) och 100 ≡ 100 − 2 · 49 = 2 (mod 49), så är resten vid heltalsdivision av 132 · 100 med 49: 34 · 2 = 68 ≡ 68 − 49 = 19 mod 49. Kortare: 13 200 = 132 · 100 ≡ (132−2 · 49)(100−2 · 49) = 34 · 2 ≡ 68−49 = 19. Eric Järpe (Högskolan i Halmstad) 14 / 26 Diskret matematik December 18, 2014 15 / 26 Eric Järpe (Högskolan i Halmstad) Diskret matematik December 18, 2014 16 / 26 Primtal Primtal Räkneregler I I I Räkneregler Om a ≡ r och b ≡ s (mod c), så är a + b ≡ r + s (mod c). I Exempel Bevisa att 12 · 3456 + 78 är jämnt delbart med 9. I Lösning: Vid räkning modulo 9 får vi att 12 · 3456 + 78 Om a ≡ r och b ≡ s (mod c), så är ab ≡ rs (mod c). Om a ≡ r (mod c), så är ab ≡ r b (mod c). 89 Exempel Beräkna 67 mod 11 Lösning: Eftersom 67 ≡ 67 − 6 · 11 = 1 så är 67 ≡ 1 (mod 11) och därmed 6789 ≡ 189 = 1 (mod 11). ≡ (12 − 9)(34 − 4 · 9)7·8 + (78 − 8 · 9) = 3 · ((−2)8 )7 + 6 ≡ 3 · (256 − 28 · 9)7 + 6 = 3 · 43+4 + 6 ≡ 3 · (64 − 7 · 9)(256 − 28 · 9) + 6 = 3·1·4+6 = 18 ≡ 18 − 2 · 9 = 0 56 Alltså ger 12 · 34 + 78 resten 0 vid division med 9 dvs 12 · 3456 + 78 är jämnt delbart med 9. Eric Järpe (Högskolan i Halmstad) Diskret matematik December 18, 2014 17 / 26 Eric Järpe (Högskolan i Halmstad) Primtal I I 18 / 26 December 18, 2014 20 / 26 Primtalsbestämning Tal som inte kan delas jämnt med något annat heltal utom sig självt och 1 kallas primtal. De första primtalen är 2, 3, 5, 7, 11, 13, 17, 19, . . . I Snabbast: AKS-algoritmen (2002). Fortfarande aktuell: Eratosthenes såll (200 f Kr). I Eratosthenes såll Antag att vi vill avgöra om N är ett primtal. 1. Beräkna det största heltalet n ≤ I December 18, 2014 Primtal Primtal I Diskret matematik Exempel 7 är ett primtal för det det delas endast av sig självt och 1. 7 mod 6 = 1, 7 mod 5 = 2, 7 mod 4 = 3, 7 mod 3 = 1, 7 mod 2 = 1 √ N. 2. Lista alla heltal 2, 3, 4, . . ., n. 3. Om alla tal i listan så är strukna är N ett primtal. Gå till 6. 4. Låt k vara det minsta ostrukna talet ur listan och kolla om k delar N. Exempel 8 är inte ett primtal eftersom 8 delas av 2 och 4 dvs 8 mod 4 = 0 och 8 mod 2 = 0 5. Om ja: då är N inte ett primtal. Gå till 6. Om nej: stryk alla multipler av k ur listan och gå till 3. 6. Terminera. Eric Järpe (Högskolan i Halmstad) Diskret matematik December 18, 2014 19 / 26 Eric Järpe (Högskolan i Halmstad) Diskret matematik Primtal I I Primtal Exempel Avgör om talet 199 är ett primtal. Faktorisering Lösning √ 1. Först n = [ 199] = 14. 2. Lista talen 2, 3, . . ., 14. 2 3 4 5 6 7 8 9 10 11 12 13 14 3. Alla tal ej strukna ännu. 4. Eftersom 2 är det lägsta ostrukna är k = 2. 5. Eftersom 199 är udda så delas 199 ej av 2 ⇒ stryk alla multipler av 2. Gå till 3. 6. Fortfarande alla ej strukna. 7. k = 3 lägsta ostrukna. 8. 3 ej delare till 199 så stryk multipler av 3. × × × × × × × × × × × × × I Centralt vid modern kryptering är faktorisering. I Den fullständiga faktoriseringen är entydig: primtalsfaktoriseringen I Allmänna faktoriseringsmetoder är: Snabbast: General number field sieve, 2007, fritt tillgänglig Näst snabbast: Quadratic sieve, 1981 Dixon’s faktoriseringsmetod, 1981 Continued fraction factorization method, 1975 (1931) Fermat’s faktoriseringsmetod . . . och dess utvecklingar. I År 2002 lyckades Prof. Agrawal och ett par av hans studenter vid Indian Institute of Technology, Kanpur konstruera algoritmen AKS för primtalsbestämning. Snabb algoritm. Också relativt enkel! osv med k = 5, 7, 11, 13. 11. Alla strukna ⇒ Ja, 199 är ett primtal! 12. Terminera. Eric Järpe (Högskolan i Halmstad) Diskret matematik December 18, 2014 21 / 26 Eric Järpe (Högskolan i Halmstad) Primtal Diskret matematik 22 / 26 Primtal Faktorisering Faktorisering Fermats algoritm I 1. Vi får ett heltal n och vill hitta heltal a, b så att ab = n. √ 2. Låt x = [ n] + 1 (“heltalsdelen av roten ur n plus 1”) I Exempel Faktorisera talet 1 971 061. √ Lösning: 1 971 061 = 1403.945 så vi börjar med x = 1403 + 1 = 1404. 3. Beräkna x 2 − n. 4. Blir det en jämn kvadrat? √ 5. Om ja: Låt a = x + √x 2 − n b = x − x2 − n Om nej: x++(ticka upp 1 steg) Gå tillbaks till steg 3. I 6. Då är ab√= √ = (x + x 2 − n)(x − x 2 − n) = x 2 − (x 2 − n) = n Eric Järpe (Högskolan i Halmstad) December 18, 2014 Diskret matematik I December 18, 2014 23 / 26 x 1404 1405 1406 .. . x2 − n 155 2 964 5 775 .. . Primtal? Nej Nej Nej .. . 1443 1444 1445 111 188 114 075 116 964 Nej Nej Ja! Alltså är √ √ − n = 1445 + 116 a = x + x2√ √964 = 1787 och b = x − x 2 − n = 1445 − 116 964 = 1103 Check: 1787 · 1103 = 1 971 061 ok! Eric Järpe (Högskolan i Halmstad) Diskret matematik December 18, 2014 24 / 26 Primtal Primtal Faktorisering I I I Faktorisering Vid RSA-kryptering: n = pq (publik) där primtalen p och q är hemliga. Den som känner till p och q kan även konstruera φ(n) = (p − 1)(q − 1) (Eulers φ-funktion som betyder: antalet positiva heltal < n som är relativt prima med n.) Diskret matematik Exempel Beräkna p och q om n = 16 821 och φ(n) = 16 544. I Lösning: Eftersom (p − 1)(q − 1) = pq −p −q +1 har vi att 16 821 = pq och 16 544 = (p − 1)(q − 1) = pq − p − q + 1 = 16 821 − p − q + 1 så p + q = 16 821 + 1 − 16 544 = 278 I Kan då också φ(n) vara publik? Nej, för då kan man räkna ut p och q. Eric Järpe (Högskolan i Halmstad) I December 18, 2014 25 / 26 Nu vet vi dessutom att pq = 16 821 så q = 16 p821 varmed p + 16 p821 = 278. Multiplikation med p ger p2 +q 16 821 = 278p dvs p2 − 278p + 16 821 = 0. √ 278 2 pq-formeln ger nu p = 2 ± ( 278 19 321 − 16 821 2 ) − 16 821 = 139 ± = 139 ± 50 dvs p = 189 och q = 89. Eric Järpe (Högskolan i Halmstad) Diskret matematik December 18, 2014 26 / 26