180 likes | 379 Views
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)))
E N D
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
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: 0N For allen N, sån+1N Vi siger kort, at N indeholder 0 og er lukket mht. succ-operationen Rekursion og induktion
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
I fx Java int sum(int n) {//PRE n>= 0 if (n==0) return 0; else return n + sum(n-1); } Rekursion og induktion
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
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
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
Som selv er træer… …eller blade – rekursionen skal terminere Rekursion og induktion
Træstruktur - objektmodel 0..* Abstrakt træ Blad Træ Composite Pattern Rekursion og induktion
Kædet implementation – generaliseret liste (A, (B, (E , F, G), C, (D, (H, I)) Rekursion og induktion
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
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
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 sS kan vi definere en delmænge af S: r(s) som indeholder alle de elementer, der er forbundet med s ved: • sr(s) • For alle cr(s) og alle dS, hvor cRd, så er dr(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
Øvelse: • Specificér en rekursiv funktion, som opløfter et tal x til en potens n (heltal0): • Udvid definitionen til alle heltal • Realiser i Java Rekursion og induktion
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
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
Et induktionsbevis - fortsat Induktionsskridtet: Vi antager, at og skal bevise, at : Rekursion og induktion
Ø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