1 / 20

Induktion og rekursion

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).

avel
Download Presentation

Induktion og rekursion

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 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

  2. Vise: n= 1 Antag n Vise: n+1 Konkluder: nN: 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

  3. 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 + 20 = 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

  4. 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

  5. Ø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

  6. Vise: n= 1 Antag for alle kn Vise: n+1 Konkluder: nN: 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

  7. Vise: n= 1 Vise: n= 1 Antag for alle kn Antag n Vise: n+1 Vise: n+1 Konkluder: nN: P(n) Konkluder: nN: P(n) Svag og stærk induktion Diskret matematik/Seminar 3 - induction

  8. 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

  9. 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

  10. 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

  11. 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

  12. 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

  13. 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

  14. 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 xy i stedet for x + y og xy i stedet for x*y) Diskret matematik/Seminar 3 - induction

  15. 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

  16. Ø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

  17. 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

  18. Ø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 32log2(32). Diskret matematik/Seminar 3 - induction

  19. Øvelse: Effektivitet af mergeSort løsning Diskret matematik/Seminar 3 - induction

  20. Ø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

More Related