Rekursjon. Et enkelt eksempel

Like dokumenter
Et enkelt eksempel. Rekursjon

Rekursjon. I. Et enkelt eksempel

Et enkelt eksempel. terminering. i-120 : H Rekursjon: 1. invarianter (notat til Krogdahl&Haveraaen) ... t.o.m. som hale-rekursjon

Rekursjon I. TRE AV REKURSIVE KALL, II. INDUKTIVE DATA TYPER IV. STABEL AV REKURSIVE KALL V. KORREKTHET. rekursjonsdybde terminering ordning

Fakultet for teknologi, kunst og design Teknologiske fag

EKSAMEN Løsningsforslag

Kombinatorikk. MAT0100V Sannsynlighetsregning og kombinatorikk. Multiplikasjonssetningen

Kombinatorikk. MAT0100V Sannsynlighetsregning og kombinatorikk. Multiplikasjonssetningen

2. Å R S B E R E T N I N G O G R E G N S K A P F O R A ) Å r s b e r e t n i n g o g r e g n s k a p f o r

IN3030 Uke 12, v2019. Eric Jul PSE, Inst. for informatikk

Kapittel 9: Mer kombinatorikk

Uke 12 IN3030 v2019. Eric Jul PSE-gruppa Ifi, UiO

Lekestativ MaxiSwing

LO118D Forelesning 2 (DM)

Realavkastning. Investeringsanalyse og inflasjon. Realavkastning av finansinvesteringer

Løsningsforslag: Deloppgave om heuristiske søkemetoder

I N N K AL L I N G T I L O R D I N Æ R T S A M E I E R M Ø T E

Modul 1 15 studiepoeng, internt kurs Notodden/Porsgrunn

TMA4100 Høst Løsningsforslag Øving 2. Norges teknisknaturvitenskapelige universitet Institutt for matematiske fag

8 + 2 n n 4. 3n 4 7 = 8 3.

Driftsinstruks. Montering vinterdrift. Vi håper de får stor glede av et Novema kulde produkt!

K j æ r e b e b o e r!

K j æ r e b e b o e r!

Prøveeksamen 2. Elektronikk 24. mars 2010

Om Grafiske Bruker-Grensesnitt (GUI) Hvordan gjør vi det, to typer av vinduer? GUI (Graphical User Interface)-programmering

K j æ r e b e b o e r!

Ge i r Berge 47. En d a t a s t r u k t u r f o r o rd b ø k e r f o r n a t u r lig e sp råk. 1. In n le d n in g

FAGKONFERANSE KONTROL L OG TILSYN GARDERMOEN JUNI A RSMØTE I FORU M FO R KONTROLL OG TILSYN 5. JUN I 2013

P r in s ipp s ø k n a d. R egu l e r i ngsen d r i n g f o r S ands t a d gå r d gn r. 64 b n r. 4 i Å f j o r d ko mm un e

n/b log b n = (lg n) a log b n = n log b a

Del I InDustrIutvIklIng: en fortelling om fornyelsen av luftfart... 15

Kombinatorikk. MAT1030 Diskret matematikk Forelesning 20: Kombinatorikk. Repetisjon. Repetisjon

Vedlegg til eksamensoppgaven i Diskret matematikk

Faglærer går normalt én runde gjennom lokalet. Ha evt. spørsmål klare!

å være aktve og skape egne kunstneriske og kulturelle uerykk.»

Fakultet for teknologi, kunst og design Teknologiske fag Eksamen i: Diskret matematikk

Innhold. For br u ker k jøps lo vens omr åde. Prin sip pet om yt el se mot yt el se sam ti dig hets prin sip pet. Selgers plikter.

Stabler, Køer og Lister. ADT er

Obligatorisk oppgave nr. 3 i Diskret matematikk

8 ØKONOMISTYRING FOR LØM-FAGENE

Innhold. Ka pit tel 1 Inn led ning Barn og sam funn Bo kas opp byg ning... 13

EKSAMEN Ny og utsatt

AVDELING FOR INGENIØRUTDANNING EKSAMENSOPPGAVE

n r : Jf. brevet som følgjer med saka

Forelesning 4 torsdag den 28. august

KAPITTEL 6. STØRRELSER OG TALL I GRESK MATEMATIKK

EKSAMEN Løsningsforslag

Oppgave 1 a) I det generelle tilfelle kan man ta utgangspunkt i uttrykket D( E)

Sosialantropologisk institutt

n / ($$ n 0$$/ $ " 1! <! ')! $ : ; $.+ $.5.+ .!)/!/ ) $.) 6$ 7$, $.5., $ 7$,

S T Y R E T G J Ø R O P P M E R K S O M P Å A T D Ø R E N E S T E N G E S K L

Løsning eksamen TFY desember 2014

K j æ r e b e b o e r!

Veileder for prosjektet har vært førsteamanuensis Stein-Erik Fleten. Jeg vil gjerne takke ham for all hjelp og faglig støtte.

"Kapittel 5 i et nøtteskall"

Rekursjon som programmeringsteknikk

S2 kapittel 1 Rekker Løsninger til innlæringsoppgavene

PrioritetsKøer. i-120 : H PrioritetsKøer: 1. Container. n-te/vilkårlig. PositionalContainer. PositionalSequence. Tree. Deque PriorityQueue

K j æ r e b e b o e r!

Dagens temaer. Sortering: 4 metoder Søking: binærsøk Rekursjon: Hanois tårn

alternativer til sortering og søking binære trær søketrær Ikke-rekursiv algoritme som løser Hanois tårn med n plater

Kap. 8-4 Press- og krympeforbindelse

I n n k a l l i n g t i l o r d i n æ r t s a m e i e r m ø t e

En implementasjon av binærtre. Dagens tema. Klassestruktur hovedstruktur abstract class BTnode {}

Kap. 4.4 Reimtransmisjoner. Reimtransmisjoner. Flatreim Kilereim Tannreim. Følgende reimtyper er i vanlig bruk

PG4200 Algoritmer og datastrukturer Forelesning 3 Rekursjon Estimering

Fjøsangerveien Strømmen

Løsningsforslag til øving 4

Rekursjon. Binærsøk. Hanois tårn.

I N N K A L L I N G T I L O R D I N Æ R T S A M E I E R M Ø T E

Hesteveddeløp i 8. klasse

Ninety-nine bottles. Femte forelesning. I dagens forelesning: Mest matematiske verktøy. Først: Asymptotisk notasjon. Så: Rekurrensligninger.

INF3400 Digital Mikroelektronikk Løsningsforslag DEL 9

Løsningsforslag. Oppgavesettet består av 9 oppgaver med i alt 21 deloppgaver. Ved sensur vil alle deloppgaver telle omtrent like mye.

Dagens tema INF1010 INF1010 INF1010 INF1010

K j æ r e b e b o e r!

Fakultet for teknologi, kunst og design Teknologiske fag Eksamen i: Diskret matematikk

Differensligninger Forelesningsnotat i Diskret matematikk Differensligninger

NORSK TEKSTARKIV J o s t e in H. Hauge

Avsnitt 8.1 i læreboka Differensligninger

K j æ r e b e b o e r!

MA1101 Grunnkurs Analyse I Høst 2017

Innledning...16 Kapitlene Ano ny mi tet... 18

INF våren januar, uke 3 - Oversikt og forutsetninger Java datastruktur-tegninger

Oblig 2 - MAT1120. Fredrik Meyer 26. oktober 2009 = A = P1 1 A 1 P 1 A 1 A 2 = P 1. A k+1. A k P k

K j æ r e b e b o e r!

Hjertet Banker & # œ œ œ œ Hjer - tet ban - ker, hjer - tet ban - ker, liv. œ œ œ œ œ œ œ œ œ œ œ œ Œ. œ œ œ œ Œ œ œ œ œ œ œ œ œ Ó gjør oss lev -en-

Pensum: fra boken (H-03)+ forelesninger

Avdeling for ingeniørutdanning. Eksamen i Diskret matematikk

K j æ r e b e b o e r!

Utvalg med tilbakelegging

ECON 2200 VÅREN 2014: Oppgaver til plenumsøvelse den 12.mars

A ft tt * 1 ^ an T ii ft. *< X IP * ft ii l> ff ffl *> (2 # * X fa c, * M L 7 ft tf ;U -h h T T* L /< ft * ft 7 g $ /i & 1 II tz ft ft ip ft M.

EKSAMEN I EMNE TMT4110 KJEMI - løsningsforslag

Mer om utvalgsundersøkelser

Innhold og forelesningsplan Eksempler på LP Begreper Løsning av enkelt eksempel Praktisk relevans Leksjon 2: Simpleksmetoden for løsning av LP

Kapittel 5 - Vektorer - Oppgaver

Løsningsforslag til ukeoppgave 11

Sommerkoteletter fra ferskvaredisken. -appen! Finn oppskrifter og tilbud på MENY.no eller i. 90 ord.pris 17,90/stk SPAR 53% ord.

Transkript:

Reusj I. TRE AV REKURSIVE KA, eusjsdybde temieig dig II. INDUKTIVE DATA TYPER g Reusj ve slie III. SPITT OG HERSK PROBEMØSNING VED REKURSJON (Kap. 8..) IV. REKURSJONS EEKTIVITET dyamis pgammeig avsjæig V. STABE AV REKURSIVE KA iteasj til eusj eusj implemetet sm iteasj VI. KORREKTHET temieig ivaiate (tat til Kgdahl&Haveaae) Demed fedig med geeell basis i- : H-99 4. Reusj: Et eelt esempel ha e metde sm /** lese e lije fa temiale * @etu ileste Stig * @excepti IOExcepti i tilfelle i/ pblem public Stig eadl() g vil lage e sm /** lese e lije fa temiale * itil faa et heltall * @etu ileste tallet * @excepti ige uta * det mme et heltall /* public it iread() { * Stig s= eadl(); * it = het feste it fa s; * while (! alt ) * gjeta: = pev este lije; * etu ; /* public it myread() { * Stig s= eadl(); * it = het feste it fa s; * if (alt ) etu ; * // pev igje med este lije * etu myread(); public it myread() { ty{ etu Itege.paseIt(eadl()); catch(ioexcepti e) { etu myread(); catch(numbematexcepti e) { etu myread(); i- : H-99 4. Reusj:

Iteasj til eusj /** @paam > @etu... it sumw(it ) { it es =; while ( > ) { es = es ; = ; etu es; /** @paam > @etu... it sumr(it ) { if ( == ) etu ; etu sumr(-); Gvt g ie % itig sagt: it Ite(it ) { es= iit; while ( ftsett() ) { es= Kppe(,es); ppd(); etu es; it Rec(it ) { if (!ftsett() ) etu iit; etu Kppe(, Rec(ppd())); Ehve iteasj a sives sm eusj... t..m. sm hale-eusj i- : H-99 4. Reusj:. Reusjste g -dybde fib() = fib() = fib() = fib() fib() f() f() f() f() f() f(4) 5 f() public it fib(it ) { if (== ==) etu ; etu fib(-) fib(-); etue i basistilfelle f() f() elles beeg eusivt elee (mide) dele g sett de samme te av eusive all f(4)...? f()...? eefølge f()...? av all f()...? > f()...? > > f()...? > > f()...? f()...? > f()...? > > > 5 eusjsdybde #svate = #øde lije = # eusive all... itil basistilfelle e ådd (=høyde av teet) i- : H-99 4. Reusj: 4

. Idutive Data Type (vilålig ste me edelige) Stutuell deig atulige tall N: aay av N: A(N) basis: e et N basis -> N e A(N) hvis e et N hvis [...] -> N e A(N) så e: et N så e [...,] -> N e A(N) iste av N: (N): basis: ull e e (N) hvis så e: e (N) g e N (,) e (N) N... N N... N... N Biæe Tæ av N: BT(N): basis: ull e et BT(N) hvis t, t e BT(N) g e N t t t, t så e: (t,, t) et BT(N) t t t t i- : H-99 4. Reusj: 5 Vaiasje ve tema idutiv defiisj = fa basis g ppve eusj = fa tppe mt basis N it fib() { it sum() { basis: if (== ==) etu ; if (==) etu ; id: etu fib(-) fib(-); etu sum(-); Aay[N] vid ic(an A, it ) { it sum(an A, it ) { basis: [] -> N A[]; if (==) etu A[]; id: [.., ] -> N if ( > ) ic(a,-); etu A[] sum(a,-); iste[n] class T { vid ic(s ) { it sum(s ) { basis: ull it ; if (==ull) { if (==ull) etu ; id: () T xt; { ; etu sum(.ext); ic(.xt); BiætTe[N] class BT { vid ic(bt B) { it sum(bt T) { basis: ull it ; if (T==ull) { if (T==ull) etu ; id: (t,,t) BT left; { ; etu BT ight; ic(t.left); sum(t.left) ic(t.ight); sum(t.ight) ; RACTAe i- : H-99 4. Reusj: 6

E teis bemeig iste av N: [N]: basis: ull e e [N] hvis e [N] g e N så e: (,) e [N] Reusj implemetet utefa datastutue : class N { ic(n ) { it sum(n ) { public it ; if (==ull) { if (==ull) etu ; public N xt; {.; etu sum(.ext).;... ic(.xt); class N { pivate it ; pivate N xt; ic() {... it sum() {... elle ief datastutue : ic() { it sum() { ; if (xt!= ull) if (xt!= ull) etu xt.sum(); xt.ic(); etu ; ic(n ) { it sum(n ) { if (!= ull) if (!= ull).ic(); etu.sum(); etu ; i- : H-99 4. Reusj: 7. Splitt g hes Reusj sm e geeell stategi f pblemløsig g algitmedesig Gitt e istas av et pblem P :. hva gjø jeg å e basis tilfelle. hvda stuee løsig f utfa løsige f e mi P = ste iput aay A ( = A.legth) /* it[] SS(it[] A,) { * iitielt all med SS(A,) * = A.legth; * if (==-) { etu A; * { * i= idese til miste elemetet * i A[...-]; * bytt A[] med A[i]; * etu SS(A, ); O ( ) O (*lg ) /* it[] MS(it[] A) { it = A.legth; * if ( == ) { etu A; * { del A i midte i * t= A[.../] g t= A[/...lgh]; * ste eusivt begge (mide) * = MS(t) g = MS(t) * etu flettet esultat av eusive all (,) * - flette t stete aay i e stet aay P = fi et gitt elemet x i e aay A Hvis A e ustet : sje A[]; hvis x ie e de, lett i A[... ] Hvis A e stet... O () i- : H-99 4. Reusj: 8

Biæ Sø /* fi ides i A til et elemet x: it BS(it[] A,x,l,h) { * @paam A it A[...] stetit m= (lh) / ; * @paam x fi x i A if (l > h) etu -; * @paam l, h sø i A bae fm. l tm. h if (A[m] == x) etu m; * @etu ides til x; if (A[m] x) etu BS(A,x,m,h); * hvis x ie fies etu BS(A,x,l,m-); // iitielt all med BS(A, x,, A.legth ) Nøel e 48 O (lg ). all. all. all bisø(a, 48,, 9) bisø(a, 48, 5, 9) bisø(a, 48, 5, 6) [] [] [] [] [4] [5] [6] [7] [8] [9] A[] 9 4 48 5 55 7 99 l = m = (9)/ h = 9 [] [] [] [] [4] [5] [6] [7] [8] [9] A[] 9 4 48 5 55 7 99 l = 5 m = (59)/ h = 9 [] [] [] [] [4] [5] [6] [7] [8] [9] A[] 9 4 48 5 55 7 99 l = 5 h = 6 basis tilfelle m = (56)/ A[m] == øel etu 5 i- : H-99 4. Reusj: 9 4. Reusj g effetivitet Reduse atall eusive all it fib(it ) { if (== ==) etu ; etu fib(-)fib(-); f() f() f() f() f() f(4) f() f() f(). Dyamis pgammeig : Istedef gjetatte eusive all til f() med samme, a esultatet av f() lages f seee bu: it ib(it ) { it[] a= ew it[]; a[]=; a[]=; etu fib(, a); it fib(it, it[] a) { if (a[] > ) { etu a[]; { it z= fib( ) fib( ); a[]= z; etu z; f(4) f() f() f() f() i- : H-99 4. Reusj:

Reusj & effetivitet i alle pemutasje av [,,...-] (f et patall ) /* pem(a,) { it l= A.legth-; * if (==l) { siv A; * { * f hve id:...l * pem(a,); * bytt A[] g A[id] * pem(a,); * te[...l]; A[..-] A[] A[..l] pem(a,) sive alle pem /* PE(A) { it l= A.legth-; * f hve :...l/ { * bytt A[] g A[]; * pem(a,); * bytt A[] g A[]; siv iv(a);. Avsjæig...........................,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, i- : H-99 4. Reusj: Kmplesitet av e eusiv fusj atall de i eusjsteet avhege av stø på steget mt basis i hvet eusivt all (høyde av teet) atall eusive all i hvet steg ( bedde av fgeige) abeidsmegde ved sammesettig av esultate fa eusive all () =, () = () = () () O( ) h= () =, () = () = () () O(.6 ) 4 h= () =, () = () = () () () O( ) / * = O() 4 h= () =, () = () = () * O() h= MS() = lg() = -=O() MS() = MS(/) MS(/) h= =lg() (/) (/4) (/8) i- : H-99 4. Reusj:

5. Reusj... it ib(it ) { if (== ==) etu ; etu ib(-) ib(-); f() f(4) f() 4 implemetees med Stabel f() f() f() f() f() f() 5 b 5 i- : H-99 4. Reusj: Reusj til iteasj (a alltid mgjøes v.hj.a. Stabel) it fibs(it a) { Stig ; it, a, a; Stac p = ew StacImp(); Stac e = ew StacImp(); it ib(it ) { if (== ==) etu ; etu ib(-) ib(-); Ne eusj (f.es. hale-eusj) a mgjøes til iteasj på e elee måte. Stac a = ew StacImp(); p.push( ); a.push( ew Itege(a) ); while (!p.empty()) { = (Stig) p.pp(); if (.equals( ) ) { = ( (Itege)a.pp() ).itvalue(); if (== ==) e.push( ew Itege() ); { p.push( ); p.push( ); p.push( ); a.push( ew Itege(-) ); a.push( ew Itege(-) ); if (.equals( ) ) { a= ( (Itege)e.pp() ).itvalue(); a= ( (Itege)e.pp() ).itvalue(); e.push( ew Itege(aa) ); etu ( (Itege)e.pp() ).itvalue(); i- : H-99 4. Reusj: 4

6. Kethet Gitt e istas av et pblem P :. hva gjø jeg å e basis tilfelle. hvda stuee løsig f utfa løsige f e mi P() if Basis() etu??? etu Kmbie(P(m)... P(m)) Temieig: P() if Basis() stppe eusj væ sie at hve mi, e æmee Basis mbiasj ppetthlde eusjs-ivaiat Kethet: P() if Basis() tlle at det utføes itig hadlig HVIS hvet eusivt all P(mi) etuee itig esultat!!! DETTE ANTAR VI!!! SÅ gi Kmbie(P(m)... P(m)) itig esultat i- : H-99 4. Reusj: 5 Kethet: eusjs-ivaiat /* it[] MS(it[] A) { it = A.legth; * if ( == ) { etu A; * { * del A i midte i : * t= A[.../] g t = A[/...]; * ste eusivt (mide) delee * = MS(t) g * = MS(t) * etu flettet esultat av * eusive all (,) Ivaiat: MS(A) etuee stet agumet A: if lgh== da e A stet dele A i t disjute dele t= A[.../] g t= A[/...] = MS(t) etuee stet t = MS(t) etuee stet t hvis flette et t stete aay, så etuee hele -gee stet A /* it BS(it[] A, it x, it l, it h) { * it m= (lh) / ; * if (l > h) etu ; * if (A[m] == x) etu m; * if (A[m] x) etu BS(A, x, m, h); * etu BS(A, x, l, m ); Ivaiat: agumetet A e stet & e x i A, så e de mellm [l... h] (iitielt all med (A, x,, A.legth-) if l > h x a ie væe de ( e itig) if A[m] = x da ha vi fuet de (m e itig) if A[m] x e x i A, så må de væe mellm [m... h] BS(A, x, m, h) vil etuee itig esultat A[m] > x e x i A, så må de væe mellm [l... m ] BS(A, x, l, m ) vil etuee itig esultat i- : H-99 4. Reusj: 6

øe-ivaiat it sum(it ) { if ( == ) etu ; basis gi itig sum() = etu sum( ); hvis sum( ) gi itig = i så e sum() = sum( ) = i = = i i it sumw(it ) { it i=, =; while (i!= ) { = i; i; // = i, i =i.. a. b. øe-ivaiat, I: = Iitialiseig: i= & = = hvis I: = i = så hlde I : = = i = i = => I hlde fø ppe i' = ette ppe it sumw(it ) { it i=, =; while (i!= ) { i; = i; // i = i, = i etu ; 4. i Utgag: I: = & i = => = = = etu ; i- : H-99 4. Reusj: 7 øe-ivaait: esempel. /** beege heltalls vsiet samt este @paam x >= @paam y > @etu (q, ) sa. x= q*y & = y & = q div(it x, it y) { it q = ; it = x ; iitialiseig: q = & = x >= x= q*y & = & = q while (y = ) { I: = & x = q*y & = q ata at de gjelde ved igag, samt y = q = q ; = y; da gjelde, ette løeppe: q = q & = q = q & = y & = & y = = q *y = (q)*y ( y) = q*y y y = q*y = x dvs. I ppetthldes gjem ppe utgag fa løe: I & y x = q*y & = y & = q etu (q, ) ; i- : H-99 4. Reusj: 8

øe-ivaiat: esempel. /** beege støste felles divis @paam x > @paam x > @etu y = gcd(x,x) gcd(x,x) { y= x; y= x; iitialiseig: x = y & x = y gcd(x,x) == gcd(x,x) while (y!= ) { if (y y) (y,y) = (y,y); I: gcd(y,y) = gcd(x,x) ata at de gjelde he gcd(x,x) = gcd(y,y) = gcd(y,y) = gcd(y,y ) // (y >= y) y= y y; gcd(x,x) = gcd(y,y) = gcd(y,y-y) = gcd(y,y ) etu y; I : cd(y,y ) = gcd(x,x) utgag: I & y = gcd(x,x) = gcd(y,y) = gcd(,y) = y Hvis gcd(y,y) = z >= & y >= y, så *) y = z* = z* = y & gcd(,) = Me da: y = y y = z*( ) & gcd(, ) = hvis ie, dvs. gcd(, ) = v >, da = v*a & = v*b, så = v*bv*a = v*(ba) dvs. da gså gcd(,) = v > mtsie *) i- : H-99 4. Reusj: 9 Oppsummeig. Reusj Splitt g hes bestem hva sm må gjøes i basis tilfelle() stue ( hes ) e løsig fa (eusive) løsige f ( splitt ) e mide istase. Ehve idutiv datatype (at, it, liste, tæ,...) gi phav til eusive algitme. Reusj vs. iteasj (eusj implemetees iteativt med bu av stabel) 4. Kmplesistet av eusiv fusj avhege av atall de i eusjste ( splitt ) dybde (høyde) av teet hv stt steg mt basis utgjø hve splittig atall eusive all (bedde av teet) på hvet ivå abeidsmegde f å stuee e løsig utfa løsige f mide istase ( hes ) 5. Kethet bestem eusjs-ivaiate veifise at basistilfelle() etablee ivaiate ude ata at eusive all etablee ivaiate, vis at stusje vil ppetthlde de bestem løe-ivaiat vis at de gjelde ette iitialiseig (lie fø igage i løe) ude ata at de gjelde fø løeppe, vis at de gjelde ette i- : H-99 4. Reusj: