Induktion och primtal - Högskolan i Halmstad

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