200 likes | 565 Views
Induktion og rekursion. Induktionsbeviser anvendes til at bevise påstande, som involverer de naturlige tal Fx De består af to dele: Basis Induktionsskridtet. Vise: n= 1. Antag n. Vise: n+1. Konkluder: n N: P(n). Induktionsprincippet (det svage).
E N D
Induktion og rekursion • Induktionsbeviser anvendes til at bevise påstande, som involverer de naturlige tal • Fx • De består af to dele: • Basis • Induktionsskridtet Diskret matematik/Seminar 3 - induction
Vise: n= 1 Antag n Vise: n+1 Konkluder: nN: P(n) Induktionsprincippet (det svage) Vi vil vise påstanden P(n) for alle n N. • Basis: Vise P(n0) for en eller anden startværdi n0 (ofte 0 eller 1) • Induktionsskridt: Vise (n n0 P(n)) P(n+1) • Heraf konkluderes: n N (P(n)) Diskret matematik/Seminar 3 - induction
Eksempel Teorem: For ethvert naturligt tal n går 3 op i n3 + 2n Bevis: Vise: P(n): 3 går op i n3 + 2n Basis: P(0): 3 går op i 03 + 20 = 0 Antagelse: P(n): 3 går op i n3 + 2n Skridt: Vise: (n>0 P(n)) P(n+1) P(n+1): 3 går op i (n+1)3 + 2(n+1) Diskret matematik/Seminar 3 - induction
Leder efter P(n): 3 går op i n3+2n Vi regner: (n+1)3 + 2(n+1) = (n+1)(n+1)2 + 2(n+1) = (n+1)(n2+2n+1) + 2(n+1) = n3 + 2n2 + n + n2 + 2n + 1 + 2n + 2 = n3 + 2n + 3n2 + n + 1 + 2n + 2 = (n3 + 2n) + 3n2 + 3n + 3 = (n3 + 2n) + 3(n2 + n + 1) Ifølge antagelsen, så går 3 op i (n3 + 2n), og det ses tydeligt at 3 går op i resten. QED Antagelsen siger, at 3 går op i n3+2n Diskret matematik/Seminar 3 - induction
Øvelser: 1. KH 4.2 (Bemærk fejl i opgaven) Vis for alle reelle tal a 1 gælder: 2. Martin 3rd Ed. 2.9 Diskret matematik/Seminar 3 - induction
Vise: n= 1 Antag for alle kn Vise: n+1 Konkluder: nN: P(n) Det stærke induktionsprincip • I visse situationer har vi brug for at udvide induktionsprincippet, så vi antager, at påstanden P(n) er sand for alle værdier, k mindre end eller lig n og ikke bare for n, når vi vil vise P(n+1) • Vi vil vise påstanden P(n) for alle n N. • Basis: Vise P(n0) for en eller anden startværdi n0 • Induktionsskridt: Vise: n n0:( n0 k n ( P(k))) P(n+1) • Heraf konkluderes: n N (P(n)) Diskret matematik/Seminar 3 - induction
Vise: n= 1 Vise: n= 1 Antag for alle kn Antag n Vise: n+1 Vise: n+1 Konkluder: nN: P(n) Konkluder: nN: P(n) Svag og stærk induktion Diskret matematik/Seminar 3 - induction
Fibonacci-ting (øv. 5.1) Der gælder bl.a. om Fibonacci-tal, at fib(n) (5/3)n for n 0 Bevis: Her bruger vi, at både fib(n) og fib(n-1) er sande Diskret matematik/Seminar 3 - induction
Eksempel (Martin 1.24) Teorem: Ethvert n>1 er enten et primtal eller et produkt af to eller flere primtal Bevis: Basis: n = 2 er et primtal Antagelse: For alle n>1 og alle k: 2 k n gælder sætningen Vise: n+1 er et primtal eller et produkt af to eller flere primtal Diskret matematik/Seminar 3 - induction
Martin ex. 1.24 • Hvis n+1 er et primtal, så gælder sætningen trivielt, ellers eksisterer der positive heltal r og s, som hverken er 1 eller n+1, så n+1 = r * s og 2 r n og 2 s n. • Af induktionshypotesen er r og s følgelig enten primtal eller produkter af to eller flere primtal. • Derfor er deres produkt også et produkt af to eller flere primtal. Q.E.D. Diskret matematik/Seminar 3 - induction
Rekursion og induktion • Hanois tårne: Flyt(n, kilde, mål, hjælp){ if(n==1) flytEnSkive; else{ flyt(n-1, kilde, hjælp, mål); flytEnSkive; flyt(n-1, hjælp, mål, kilde); } } Effektivitet? Diskret matematik/Seminar 3 - induction
Effektivitet • t(n) betegner køretiden for at flytte n skiver, og er givet ved rekurensligningen: t(1) = 1 t(n) = 2t(n-1) + 1 for n > 1 • Vis ved induktion, at t(n) = 2n - 1 Diskret matematik/Seminar 3 - induction
Vise: t(n) = 2n - 1 Bevis: induktion på n: Basis: t(1) = 1= 21 – 1= 1 Antagelse: Gælder for n: t(n) = 2n - 1 Vise: For n+1: t(n+1) = 2t(n) + 1 = 2(2n - 1) +1 = 2n+1 - 2 + 1 = 2n+1 - 1 QED Brug antagelsen Diskret matematik/Seminar 3 - induction
Strukturel induktion: fx sprog defineret rekursivt: • Sproget Expr: lovlige regneudtryk med identifierena, de binære operationer + og * samt parenteser (fx strenge som a, a+a*a og (a+a*(a+a))): • Rekursiv definition: • a Expr • For alle x Expr og alle y Expr, så x+y Expr og x*y Expr • For alle x Expr, så (x) Expr . (Martin bruger xy i stedet for x + y og xy i stedet for x*y) Diskret matematik/Seminar 3 - induction
Strukturel induktion - fortsat • Rekursiv definition: • a Expr • For alle x Expr og alle y Expr, så x+y Expr og x*y Expr • For alle x Expr, så (x) Expr . • Hvis vi vil vise et eller andet udsagn om af formen P(x) er sand for alle x Expr, så skal vi vise: • P(a) er sand (Basis) • For alle x, y Expr hvis P(x) og P(y) er sande, så er P(x+y) P(x*y) sande. • For alle x Expr hvis P(x) er sand, så er P((x)) sand. Diskret matematik/Seminar 3 - induction
Øvelse: Binære træer • Et binært træ T er enten tomt eller består af en rod med to referencer: lChild og rChild, som selv er binære træer: • Vis ved induktion, at højden altid er mindre end eller lig med antal knuder lChild rChild T T Diskret matematik/Seminar 3 - induction
Mergesort sort(sequence s, int f, int l, s’){ if(s.len>1){ int m = (f+l)/2; sort(s, f, m, s’1); sort(s, m+1, l, s’2); merge(s’1, s’2 , s’); } } Diskret matematik/Seminar 3 - induction
Øvelse: Effektivitet • Effektiviteten af en rekursiv sorteringsalgoritme, fx mergesort, er bestemt ved følgende rekursive funktion (for nemheds skyld betragter vi kun værdier af n, som er 2-potenser, dvs. k(n = 2k)): t(n) = a for n 1 t(n) = t(n/2) + t(n/2) + n + b for n > 1 hvor a og b er konstanter. • Sæt for nemheds skyld a og b lig 0 og beregn t(32). • Beregn 32log2(32). Diskret matematik/Seminar 3 - induction
Øvelse: Effektivitet af mergeSort løsning Diskret matematik/Seminar 3 - induction
Øvelse • Martin 1.45 • Bemærk: • Martin, ex. 1.23 er lidt underligt, se min version i stedet. • vi springer Martin, ex. 1.27 over. Diskret matematik/Seminar 3 - induction