Discrete Structuren Piter Dykstra Opleidingsinstituut Informatica en Cognitie www.math.rug.nl/~piter piter@math.rug.nl 22 februari 2009 INDUCTIE & RECURSIE Paragrafen 4.3-4.6 Discrete Structuren Week 3: Inductie & Recursie
Onderwerpen Loopinvarianten Mathematische inductie Ordes van grootte Recursieve definities Recurrente betrekkingen Volledige inductie Discrete Structuren Week 3: Inductie & Recursie 1
Lusinvariant Discrete Structuren Week 3: Inductie & Recursie 2
Lusinvariant Discrete Structuren Week 3: Inductie & Recursie 3
Inductie Is 37 500 37 100 een veelvoud van 10? Is de volgende stelling waar? Theorem 1. n 5 n is deelbaar door 5 voor alle n N. Gedachtenexperiment: we testen de bewering n 5 n is deelbaar door 5 voor 1 n,37 100 met een computerprogramma. begin n:=1 ; while n <37 100 do if n 5 n is een veelvoud van 5 then n:=n+1 end Discrete Structuren Week 3: Inductie & Recursie 4
Stel n = n +1 Als I = n 5 n is deelbaar door 5 een invariant is, moet na iedere iteratie gelden waar I bij aanvang waar is, ook I aan het eind waar zijn, dus n 5 n is deelbaar door 5 (n +1) 5 (n +1) is deelbaar door 5 (n +1) 5 (n +1) = n 5 +5n 4 +10n 3 +10n 2 +5n +1 n 1 = (n 5 n) +5(n 4 +2n 3 +2n 2 +n) Als n 5 n is deelbaar door 5 dan ook (n +1) 5 (n +1), want 5(n 4 +2n 3 +2n 2 +n) is ook deelbaar door 5. Discrete Structuren Week 3: Inductie & Recursie 5
Voor willekeurig grote getallen kan het volgende programma uitkomst bieden: n:=1 ; while 1 n do if n 5 n is een veelvoud van 5 then n:=n+1 In het algemeen zouden we willekeurige beweringen p(k),m k < n kunnen bewijzen met het programma: begin k:=m ; {p(k) is waar} while m k <n do if p(k) is waar then n:=n+1 end Discrete Structuren Week 3: Inductie & Recursie 6
Voor de invariant p(k) volstaat het om te bewijzen dat: (B) p(m) is waar en (I) p(k +1) is waar indien p(k) waar is en m k < n. Discrete Structuren Week 3: Inductie & Recursie 7
Beperkte & volledige inductie (B) - basisstap (I) - inductiestap (H) - inductiehypothese Theorem 2. [Het principe van eindige (beperkte) inductie]. Als p(m),p(m + 1),...,p(n) een eindige rij proposities is met (B) p(m) is waar en (I) Uit de waarheid van p(k) (H) en m k < n volgt p(k +1) is waar, dan zijn alle proposities waar. Discrete Structuren Week 3: Inductie & Recursie 8
Theorem 3. [Het principe van volledige inductie]. Als p(m), p(m + 1),... een oneindige rij proposities is met (B) p(m) is waar en (I) Uit de waarheid van p(k) en m k volgt p(k +1) is waar, dan zijn alle proposities waar. Discrete Structuren Week 3: Inductie & Recursie 9
Voorbeeld 1 Theorem 4. Voor elk positief geheel getal n 4 geldt: n! > 2 n Het bewijs verloopt met inductie naar de grootte van n. (B) n = 4. Te bewijzen 4! > 2 4 check! (I) n > 4. Gegeven: (H) = k! > 2 k en 4 k Te bewijzen (k +1)! > 2 ( k +1) c (k +1)! = k! (k +1) > 2 k (k +1) [ inductie hypothese: k! > 2 k ] 2 k 2 [ omdat k +1 5 > 2] = 2 k+1 Dus p(k +1) is waar. Discrete Structuren Week 3: Inductie & Recursie 10
Voorbeeld Ordes Theorem 5. 2 n < n! < n n voor alle n 4 Bewijs: 1. Te bewijzen: 2 n < n! 1 Voor n = 4 krijgen we 16 < 24 < 256. Voor n > 4 geldt: n! = (4!) 5 6...(n 1) n De eerste factor 4! is groter dan 2 4 en de overige n 4 factoren zijn groter dan 2. Dus: n! > 2 4 2 n 4 = 2 n 2. Te bewijzen: n! < n n Alle factoren van n n, op één na, zijn groter dan die van n!. 1 2 n < n! is met theorema 5 bewezen (met volledige inductie). Discrete Structuren Week 3: Inductie & Recursie 11
Orde 2 Theorem 6. Voor alle natuurlijke getallen n geldt: 4 n 3 n n n n 2 n 3 n 4... Discrete Structuren Week 3: Inductie & Recursie 12
Theorem 7. Er is een ordening van rijen, zodat voor elke element van een rij geldt dat het kleiner of gelijk is dan het overeenkomstige element in alle rijen aan haar rechterzijde: 1, log 2 n, 4 n, 3 n, n,n,nlog 2 n,n n,n 2,n 3,n 4,...,2 n,n!,n n Om aan te geven dat een rij op de lange duur niet sneller groeit dan een andere rij gebruiken we de grote O-notatie Discrete Structuren Week 3: Inductie & Recursie 13
Definition 1. [Grote O]. Als s een rij is van reële getallen en a een rij van positieve reële getallen, dan schrijven we: 2 s(n) = O(a(n)) = def C,k n > k ( s(n) C a(n)) 2x = O(x 2 ) 2 En we spreken uit: s(n) is in grote O van a(n) Discrete Structuren Week 3: Inductie & Recursie 14
Polynomiale groei 6n 4 +20n 2 +2000 = O(n 4 ) Want er zijn een C en k te vinden zodat 6n 4 +20n 2 +2000 C n 4 voor alle n k Voor C = 7 en n = 8 geldt: k 8 = 6n 4 +20n 2 +2000 7 n 4 Alleen de exponent van de dominante term bepaalt dus de orde. Discrete Structuren Week 3: Inductie & Recursie 15
Alleen de exponent van de dominante term bepaalt dus de orde. Theorem 8. [Polynomiale groei]. Beschouw het polynoom s(n) = a m n m +a m 1 n m 1 +... +a 0 in n en met de graad m (met a m = 0) Dan hebben we: En dus geldt: s(n) a m n m + a m 1 n m 1 +... + a 0 ( a m + a m 1 +... + a 0 ) n m s(n) = O(n m ) Discrete Structuren Week 3: Inductie & Recursie 16
Grote theta We willen uitdrukken dat s(n) en a(n) groeien met dezelfde orde. Definition 2. s(n) = Θ(a(n)) = def s(n) = O(a(n)) en a(n) = O(s(n)) Voorbeelden: 1. 3n 2 +15n = O(n 2 ), maar n 2 3n 2 3n 2 +15n Dus: n 2 = O(3n 2 +15n) En daarom ook: 3n 2 +15n = Θ(n 2 ) 2. Als s(n) = a m n m +a m 1 n m 1 +... +a 0 met a m = 0, dan s(n) = O(n m ) Maar ook n m = (1/a m ) a m n m (1/a m ) s(n). Dus: n m = O(s(n)) en daarom ook: s(n) = Θ(n m ) Discrete Structuren Week 3: Inductie & Recursie 17
Theorem 9. Als a(n) en b(n) rijen positieve getallen zijn en als: 1. s(n) = O(a(n)) en c is een constante dan c s(n) = O(a(n)) 2. s(n) = O(a(n)) en t(n) = O(a(n)) dan s(n) +t(n) = O(a(n)) 3. s(n) = O(a(n)) en t(n) = O(b(n)) dan s(n) +t(n) = O(max(a(n),b(n))) 4. s(n) = O(a(n)) en t(n) = O(b(n)) dan s(n) t(n) = O(a(n) b(n)) Idem voor Θ (bewijs in beide richtingen). Discrete Structuren Week 3: Inductie & Recursie 18
Recursieve Definities Definition 3. [Recursieve Rij]. Een rij is recursief gedefinieerd als er: (B) Er een eindige verzameling (begin-)waarden is aangegeven. (R) De overige waarden van de rij worden gedefinieerd in termen van eraan voorafgaande. Zo n formule heet een recurrente betrekking. Voorbeeld: We definiëren de rij faculteit recursief. (B) FACT(0) = 1 (R) FACT(n +1) = (n +1) FACT(n) voor n > 0 Discrete Structuren Week 3: Inductie & Recursie 19
Theorem 10. FACT(n) = n! voor n N Bewijs: (B) FACT(0) = 1 = 0! (H) FACT(m) = m! (hyp) (I) Te bewijzen: FACT(m +1) = (m +1)! FACT(m +1) = (m +1) FACT(m) [Stap (R) : m +1 1] = (m +1) m! [ind. hyp (H)] = (m +1)! Discrete Structuren Week 3: Inductie & Recursie 20
Voorbeeld Beschouw de rij SUM(n) = n 1 i! i=0 Een computerprogramma voor het berekenen van de rij kan gebaseerd zijn op de recursieve definitie: (B) SUM(0) = 1 (R) SUM(n +1) = 1 (n+1)! + SUM(n) voor n > 0 Maar dan wordt voor iedere n FACT(n) berekend. Het volgende programma combineert beide berekeningen. {Input:een integer n 0} {Output:SUM,de som k+1 i=0 1 i! } begin Discrete Structuren Week 3: Inductie & Recursie 21
i:=0 ; SUM:=0 ; FACT:=1 ; {FACT = i!} while i n do SUM:=SUM +1/FACT ; FACT:= (i +1). FACT ; i:=i+1 return SUM end Discrete Structuren Week 3: Inductie & Recursie 22
Voorbeelden De rij Fibonacci is als volgt gedefinieerd. (B) FIB(1) = FIB(2) = 1 (R) FIB(n) = FIB(n 1) + FIB(n 2) voor n 3 De rij kan zo worden gedefinieerd: 1,1,2,2,3,3,... (B) SEQ(0) = SEQ(1) = 0 (R) SEQ(n) = 1+ SEQ(n 2) voor n 2 Discrete Structuren Week 3: Inductie & Recursie 23
Recurrentie relaties We willen proberen voor recurrente betrekkingen proberen formules te vinden die niet afhankelijk zijn van de oplossingen in een voorgaande stap. We kijken naar relaties van de vorm: s n = as n 1 +bs n 2 waarin a en b constanten zijn. De gevallen a = 0 en b = 0 zijn makkelijk. Als b = 0 dan s n = a s n 1 voor n 1 s 1 = as 0, s 2 = as 1 = a 2 s 0, dus s n = a n s 0 voor alle n N Als a = 0 dan s 2 = bs 0, s 4 = bs 1 = b 2 s 0, dus s 2n = b n s 0 voor alle n N Evenzo: s 3 = bs 1, s 5 = bs 3 = b 2 s 1, dus s 2n+1 = b n s 1 voor alle n N Maar als a = 0 en b = 0 dan zouden we kunnen hopen op iets van de vorm s n = c r n. Dat geeft: r n = ar n 1 +br n 2 Delen door r n 2 geeft: r 2 = ar +b Ofwel de karakteristieke vergelijking: r 2 ar b = 0 Discrete Structuren Week 3: Inductie & Recursie 24
Recurrentie relaties 2 Theorem 11. Beschouw: s n = as n 1 +bs n 2 met karakteristieke vergelijking x 2 ax b = 0 met a = 0 en b = 0 Als de karakteristieke functie twee wortels, r 1 en r 2 heeft, dan zijn er constanten c 1 en c 2 zodat: s n = c 1 r1 n +c 2 r2 n voor n N Als s 0 en s 1 gegeven zijn, kunnen daarmee c 1 en c 2 worden opgelost. Als de karakteristieke functie één wortel, r heeft, dan zijn er constanten c 1 en c 2 zodat: s n = c 1 r n +c 2 n r n voor n N Discrete Structuren Week 3: Inductie & Recursie 25
Voorbeeld Fibonacci Stel s 0 = 0 en s n = FIB(n) voor n 1 Dan: s n = s n 1 +s n 2 voor n 1 Dus: a = b = 1 en we lossen x 2 x 1 = 0 op r 1 = 1 + 5 2 en r 2 = 1 5 2 Deel a van de stelling is van toepassing: s n = c 1 r n 1 +c 2 r n 2 = c 1 ( 1 + 5 2 c 1 en c 2 zijn op te lossen door n = 0 en n = 1 te kiezen: ) n ( ) n 1 5 +c 2 voor n N 2 0 = c 1 +c 2 en 1 = c 1 r 1 +c 2 r 2 Discrete Structuren Week 3: Inductie & Recursie 26
0 = c 1 +c 2 en 1 = c 1 r 1 +c 2 r 2 We vervangen c 2 door c 1 in de rechter vergelijking en we krijgen: 1 = c 1 r 1 c 1 r 2 = c 1 (r 1 r 2 ) En dus: c 1 = 1 r 1 r 2 Omdat r 1 r 2 = 5, concluderen we dat c 1 = 1/ 5 en c 2 = 1/ 5 s(n) = c 1 r 1 c 1 r 2 = 1 5 r n 1 1 5 r n 2 = 1 5 (r n 1 r n 2) voor n 1 [ (1 FIB(n) = 1 ) n + 5 5 2 ( ) n ] 1 5 2 voor n 1 Discrete Structuren Week 3: Inductie & Recursie 27
Bewijs theorema 7 (a) Er zijn twee wortels r 1 en r 2. (B) Uit: s 0 = c 1 +c 2 en s 1 = c 1 r 1 +c 2 r 2 kunnen c 1 en c 2 worden opgelost. Voor r 1 geldt: als x = r 1 dan x 2 = ax +b, Dus hebben we: r1 n = arn 1 1 +br n 2 1 Evenzo r2 n (I) as n 1 +bs n 2 = a(c 1 r n 1 1 +c 2 r n 1 2 ) +b(c 1 r n 2 1 +c 2 r n 2 2 ) = c 1 (ar n 1 1 +br n 2 2 ) +c 2 (ar n 1 1 +br n 2 2 ) = c 1 r n 1 +c 2 r n 2 = s n Discrete Structuren Week 3: Inductie & Recursie 28
(b) Er is één wortel r met karakteristieke functie (x r) 2 = 0 Dus de vergelijkingen x 2 2rx +r 2 en x 2 ax b zijn dezelfde. We krijgen a = 2r en b = r 2. De recurrentierelatie wordt dan: s n = 2rs n 1 r 2 s n 2 (B) Invullen van n = 0 en n = 1 in: s n = c 1 r n +c 2 n r n geeft: s 0 = c 1 en s 1 = c 1 r +c 2 r Dus voor c 1 = s 0 en c 2 = s 0 +s 1 /r voldoet de stelling. Discrete Structuren Week 3: Inductie & Recursie 29
(I) Nog te bewijzen: s n = c 1 r n +c 2 n r n voor n > 1 s n = 2rs n 1 r 2 s n 2 = 2r(c 1 r n 1 +c 2 (n 1)r n 1 ) r 2 (c 1 r n 2 +c 2 (n 2)r n 2 ) = 2c 1 r n +2c 2 (n 1)r n c 1 r n c 2 (n 2)r n = c 1 r n +c 2 n r n = s n Discrete Structuren Week 3: Inductie & Recursie 30
Inductie revisited Definition 4. [Eerste principe van volledige inductie]. Stel m is een geheel getal en p(n) een rij proposities gedefinieerd op {n Z : n m}. Als: (B) p(m) is waar en (I) p(k) volgt uit de waarheid van p(k 1) voor k m, dan zijn alle proposities p(n) waar voor n m. Definition 5. [Tweede principe van volledige inductie]. Stel m is een geheel getal en p(n) een rij proposities gedefinieerd op {n Z : n m}. Als: (B) p(m) is waar en (I) p(k) volgt uit p(m),...,p(k 1) voor k m, dan zijn alle proposities p(n) waar voor n m. Discrete Structuren Week 3: Inductie & Recursie 31
driemaal is scheepsrecht Definition 6. [Tweede principe van volledige inductie]. Stel m is een geheel getal en p(n) een rij proposities gedefinieerd op {n Z : n m} en l is een niet negatief geheel getal. Als:, (B) p(m),...,p(m +l) zijn waar en (I) p(k) > m+l volgt uit de waarheid van p(m),...,p(k 1) voor k m dan zijn alle proposities p(n) waar voor n m. Discrete Structuren Week 3: Inductie & Recursie 32
Bewijs tweede principe van volledige inductie Stel: (B) p(m),...p(m +l) zijn allemaal waar (I) voor k > m +l als p(k) waar is als p(m),...p(k 1) maar p(n) is onwaar voor een n m Dan is de verzameling S = {n Z : n m en p(n) is onwaar} niet leeg. Volgens het welordeningsprincipe heeft S een kleinste element n 0. Vanwege (B) moet n 0 > m +l Omdat p(n) geldt voor m n n 0 moet volgens (I) ook p(n 0 ) waar zijn. Dat houdt in dat n 0 / S Tegenspraak. Dus als (B) en (I) waar zijn, is elke p(n) waar. Discrete Structuren Week 3: Inductie & Recursie 33