1 / 18

Induktion og (især) rekursion

Induktion og (især) rekursion. Mange begreber defineres ud fra en basis og så en gentagen anvendelse af et antal regler. Nogle eksempler:. De naturlige tal. Basis: ZERO Regel: hvis n er et naturligt tal, så er SUCC( n ) det også: ZERO SUCC(ZERO) SUCC(SUCC(ZERO)) SUCC(SUCC(SUCC(ZERO)))

mariko
Télécharger la présentation

Induktion og (især) 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 (især) rekursion Mange begreber defineres ud fra en basis og så en gentagen anvendelse af et antal regler. Nogle eksempler: Rekursion og induktion

  2. De naturlige tal Basis: ZERO Regel: hvis n er et naturligt tal, så er SUCC(n) det også: ZERO SUCC(ZERO) SUCC(SUCC(ZERO)) SUCC(SUCC(SUCC(ZERO))) SUCC(SUCC(SUCC(SUCC(ZERO)))) ... Standard-notationen: ZERO skrives 0 SUCC(n) skrives 1 + n decimal notation for hvert af tallene. SUCC(SUCC(SUCC(ZERO))) skrives f.eks. 3. Rekursiv definition: 0N For allen N, sån+1N Vi siger kort, at N indeholder 0 og er lukket mht. succ-operationen Rekursion og induktion

  3. Eksempel: sum • Summen af de første n naturlige tal kan defineres ved følgende rekursive funktion: sum(n) = 0 for n= 0 sum(n) = n + sum(n-1) for n>0 Fx: sum(2)= 2 + sum(1) sum(1) = 1 + sum(0) sum(0) = 0 sum(2)= 2+ 1+ 0 = 3 Rekursion og induktion

  4. I fx Java int sum(int n) {//PRE n>= 0 if (n==0) return 0; else return n + sum(n-1); } Rekursion og induktion

  5. Sekvenser Sekvenser over en mængde A: Basis: NIL, den tomme sekvens Regel: hvis a  A, og s er en sekvens over A, så er CONS(a; s), dvs. a efterfulgt af s, også en sekvens over A. Fx: A= {a, b} sekvenserne over A: NIL CONS(a; NIL) CONS(b; NIL) CONS(a; CONS(a; NIL)) CONS(a; CONS(b; NIL)) CONS(b; CONS(a; NIL)) CONS(b; CONS(b; NIL)) CONS(a; CONS(a; CONS(a; NIL))) CONS(a; CONS(a; CONS(b; NIL))) ... Den tomme sekvens skrives  (stort lambda),  (lille lambda) eller (lille epsilon)  CONS(a; s) skrives normalt blot as. Den sidste sekvens ovenfor skrives normalt aab, idet det afsluttende NIL udelades. Rekursion og induktion

  6. 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: lChild rChild T T Rekursion og induktion

  7. Som selv er træer… Generelle træer • Består af • en enkelt knude eller • en rodknude med et vilkårligt antal subtræer • Kan ikke implementeres på samme måde som binære træer, da antallet af subtræer kan variere meget • Fx: Rekursion og induktion

  8. Som selv er træer… …eller blade – rekursionen skal terminere Rekursion og induktion

  9. Træstruktur - objektmodel 0..* Abstrakt træ Blad Træ Composite Pattern Rekursion og induktion

  10. Kædet implementation – generaliseret liste (A, (B, (E , F, G), C, (D, (H, I)) Rekursion og induktion

  11. Også sprog kan defineres rekursivt: • Sproget Expr: lovlige regneudtryk med identifieren a, 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 . Rekursion og induktion

  12. Kan Bal defineres rekursivt? • Sproget Bal: strenge indeholdende parenteser, hvor parenteserne balancerer (fx strenge som , (), (a+a*a) og (a+a*(a+a)), men også ((()))). Rekursion og induktion

  13. Closure – eller transitiv aflukning af en relation (eller en graf) • Lad R være en relation over en endelig mængde S. For et givet element sS kan vi definere en delmænge af S: r(s) som indeholder alle de elementer, der er forbundet med s ved: • sr(s) • For alle cr(s) og alle dS, hvor cRd, så er dr(s) • Mængden r(s) kaldes closure eller transitiv aflukning. • Fx kan S være alle personer på facebook, og R kan være relationen ”er ven med”, så er r(s) alle s’ venner, venners venner, venners venners venner etc. • Man taler om den transitive aflukning af grafer (sammenhængende komponenter). Rekursion og induktion

  14. Øvelse: • Specificér en rekursiv funktion, som opløfter et tal x til en potens n (heltal0): • Udvid definitionen til alle heltal • Realiser i Java Rekursion og induktion

  15. Induktionsbeviser Basis • Anvendes til bevis af udsagn, som vedr. heltal: • Bevis udsagnet for startværdien (induktionsbasis) • Antag, at udsagnet gælder for en vilkårlig værdi, n, (induktionshypotesen) • Bevis, at under forudsætning af hypotesen, så gælder udsagnet for n+1 • Heraf konkluderes, at udsagnet gælder for alle heltal • Anvendes direkte på rekursive algoritmer • Anvendes indirekte på iterative algoritmer Vise: n= 1 Induktionshypotese Antag n Induktionsskridt Vise: n+1 Rekursion og induktion

  16. Et induktionsbevis Sætning for alle naturlige tal n Bevis: Induktionsstart: For n = 1 reducerer formlen til 1 = 1 hvilket jo passer. Rekursion og induktion

  17. Et induktionsbevis - fortsat Induktionsskridtet: Vi antager, at og skal bevise, at : Rekursion og induktion

  18. Øvelser • Vis ved induktion på n: For alle naturlige tal n>2 gælder: n+1< n2 • Vis ved induktion på antal elementer n, at antal elementer i 2A er 2n, når A har n elementer. løsning Rekursion og induktion

More Related