ynask prograerng Metoden ble foralsert av Rchard Bellann (RAN Corporaton på -tallet. Prograerng betydnngen planlegge, ta beslutnnger. (Har kke noe ed kode eller å skrve kode å gøre. ynask for å ndkere at det er en stegvs prosess. Men også et pynteord. Hvlke probleer? ynask prograerng brukes typsk tl å løse optalserngsprobleer. (Probleer hvor det kan være ange ulge løsnnger, og hvor v ønsker å fnne den beste. Skal v kunne løse et proble ed dynask prograerng, å det kunne deles opp ndre og ndre bter helt tl v koer tl et delproble så lte at løsnngen lett kan fnnes. V starter ed løsnngene på så delprobleer, og kobnerer dsse tl løsnnger på større delprobleer, helt tl v har løsnngen på hele probleet. Skal det bl en effektv algorte å: Optaltetsprnsppet holde, delprobleer å overlappe, og antall delprobleer være polynosk. Optaltetsprnsppet Gtt et optalserngsproble, og en funksonen cobne so kobnerer løsnnger på delprobleer tl løsnnger på større probleer, så ser v at Optaltetsprnsppet holder hvs følgende alltd er sant: Hvs S = cobne(s, S,, S, og S er en optal løsnng på sn problenstans, Overlappende delprobleer En dynask prograerngs-algorte starter ed å løse de nste delprobleene, og setter saen dsse løsnngene tl løsnnger på større og større probleer. Hvs sae delproble forekoer flere ganger, unngår v dobbeltarbed. Løsnngene på delprobleene lagres nelg, og v slpper å løse dette delprobleet flere ganger. så er S, S,, S optale løsnnger på sne respektve problenstanser. Hvs optaltetsprnsppet holder, er probleet egnet for løsnng ed dynask prograerng. a genereres bare optale løsnnger på delprobleer når v starter fra optale løsnnger på de nste delprobleene, og kobnerer dsse tl løsnnger på større probleer.
Overlappende delprobleer En dynask prograerngs-algorte starter ed å løse de nste delprobleene, og setter saen dsse løsnngene tl løsnnger på større og større probleer. Hvs sae delproble forekoer flere ganger, unngår v dobbeltarbed. Løsnngene på delprobleene lagres nelg, og v slpper å løse dette delprobleet flere ganger. vde and conquer vs. ynask prograerng vde and conquer (f.eks Qucksort Top down (rekursvt kall Best egnet når delprobleene er uavhengge av hverandre. a re-beregnes kke løsnnger på delprobleer. Kun relevante delprobleer løses. ynask prograerng Botto up Egnet når delprobleer overlapper, etterso løsnnger lagres en tabell og v kan slå opp når v støter på et delproble v har løst. Ulepen er at v beregner løsnnger på alle delprobleer. Metodene kan kobneres, såkalt eoserng, en dvde and conquer algorte kan lagre løsnnger på delprobleer en tabell og slå opp for å unngå dobbeltarbed. Fre enkle(? steg. Beskrv strukturen probleet, hvordan en løsnng er satt saen av delløsnnger. Verfser at optalserngsprnsppet faktsk holder.. Lag en forel for verden av en optal løsnng (ut fra verden av av optale delløsnnger.. Beregn verden tl en optal løsnng, botto up (lagre verden av optale delløsnnger en tabell. (kap.. En streng P er en k-approksason av en streng T derso T kan konverteres tl P ved å utføre aksalt k av følgende operasoner: Substtuson Et sybol T byttes ut ed et annet. Tllegg Et nytt sybol legges tl T. Slettng Et sybol slettes fra T. Edt dstance, E(P,T, ello to strenger P og T er det nste antall slke operasoner so trengs for å konvertere P tl T.. Konstruer en optal løsnng ut fra beregnede verder. (O v faktsk ønsker løsnngen, og kke bare nøyer oss ed verden av en optal løsnng. Eks. logarth alogarth algarth algorth (+a, -o, a/o
.. Gtt to strenger T og P, ønsker v å fnne edt dstance ello dsse. Gtt to strenger T og P, ønsker v å fnne edt dstance ello dsse. La [ ] = E( P [: ], T [: ]. (Edt dstance ello delstrenger La [ ] = E( P [: ], T [: ]. (Edt dstance ello delstrenger V deler følgende delprobleer: V deler følgende delprobleer:. Hvs P [ ] = T [ ], så er [ ] = [ -, -]. a P[: ] = a T[: ]. Hvs P [ ] T [ ], å v se på en optal sekvens av operasoner so transforerer T [: ] tl P [: ]. La oss se på operasonen for å få T [ ] = P [ ], dette kan være: Substtuson T sette T [ ] = P [ ], Tllegg T legge tl sybol T pos T [ ], Slettng T slettng sybol T på pos T [ ]. a P[: ] b T[: ]. Substtuson settet [ ] = P [ ] a n n e P[: ] a n n f T[: ] Tllegg T legge tl sybol T pos T [ ] slettng av P [ ] a n n e P[: ] a n n T[: ] Slettng T slettng sybol T på pos T [ ] a n n P[: ] a n n e T[: ] Regner ut [ ]ved å fnne [ -, -] (edt dstance for det grå orådet, og legger tl en for substtusonen. Å legge tl en e T er det sae so å slette en P.. Regner ut [ ]ved å fnne [ -, ] (edt dstance for det grå orådet, og legger tl en for slettngen P. Regner ut [ ]ved å fnne [, -] (edt dstance for det grå orådet, og legger tl en for slettngen T.. S t r e n g e r s o l g n e r Forelen (rekursv defnson for ] vl altså være so følger:, ] ] n{ [, ], [, ], [ ] substtuson tllegg T slettng T slettng P, ], ], ]. ellers Løsnngen, edt dstance ello strengene, fnnes,n] (P er av lengde og T av lengde n. } hvs P[ ] T[ ]
.. Forelen (rekursv defnson for ] vl altså være so følger: Forelen (rekursv defnson for ] vl altså være so følger:, ] ] n{, ], substtuson, ], ], ]., ], slettng tllegg T P ] slettng T } hvs P[ ] T[ ] ellers, ] ] n{, ], substtuson, ], ], ]., ], slettng tllegg T P ] slettng T } hvs P[ ] T[ ] ellers - - - -...... - - - - +./../. functon Edtstance ( P [:n ], T [: ] for to n do ] for to do, ] for to n do for to do If P [ ] = T [ ] then ] -, - ] else ] n { -, - ] +, -, ] +, - ] + } endf endfor endfor return( n, ] end Edtstance eks. P T a n e a del T del T ns T n n e
./. eks. T a n e Optal atrseultplkason V er gtt en sekvens M, M,, M n - av atrser og ønsker å beregne produktet M M M n -. V gør dette ved å sette parenteser, og ultplsere par av atrser, f.eks slk: P a del T del T ns T n n e M M M M = (M (M M M Parentesene kan settes på ange åter: (M (M (M M (M ((M M M ((M M (M M ((M (M M M (((M M M M Kostnaden (antall skalare ultplkasoner kan varere veldg ello de ulke åtene å sette parenteser på. Gtt to atrser A = p q atrse, B = q r atrse. Optal atrseultplkason Kostnaden (antall skalare ultplkasoner ved å beregne A B er p q r (A B er en p r atrse. Eks. Beregn A B C, hvor A er en atrse, B er en atrse, og C er en atrse. Å beregne = (A B koster, og gr en atrse. Å beregne C koster,. Total kostnad for (A B C blr 7,. Å beregne E = (B C koster, og gr en atrse. Å beregne A E koster,. Total kostnad for A (B C blr 7,.. Optal atrseultplkason Gtt en sekvens av atrser M, M,, M n -, ønsker v å beregne produktet på bllgst ulg åte v å fnne optal parentes-struktur. En parenterserng av sekvensen er en oppdelng to delsekvenser, so hver for seg å parenterseres: (M M M k (M k + M k + M n- V å prøve alle ulge k for å fnne hvor det er best å dele sekvensen. Hvert delngspunkt gr opphav tl to delprobleer paranterserng av venstre og høyre delsekvens. Består sekvensen bare av en atrse, er denne en parenterserng av seg selv. Har v en optal parenterserng av en sekvens av atrser, så å parenterserngen av hver delsekvens også være optal. Ellers kan v o bare bytte ut den so kke var optal ed en bedre en. (Optaltetsprnsppet holder.
. Optal atrseultplkason. Optal atrseultplkason La d, d,, d n være densonene tl sekvensen av atrser M, M,, M n-, slk at atrse M har denson d d +. d La være kostnaden av en optal parenterserng av M, M +,, M Forelen (rekursv defnson for vl være so følger:, d d d, for alle n n k k, k k,87, 9,7 7,,7,, for alle n 7,87,7,,,7,6 7,, Kostnaden av å utføre ultplkasonen ed den optale parenterserngen fnner v,n -. Optal atrseultplkason./. Optal atrseultplkason d, 9,7 7,,7 7,87,7,,,7,6 7,,,87,, = n(d d d + (, + (,, d d d + (, + (,, d d d + (, + (, = n( + +,, +,6 +,, +,7 + M M M M = M (M M M = (M M (M M = (M M M M,,87, 9,7 7,,7 7,87,7,,,7,6 7,, c
./. Optal atrseultplkason. Optal atrseultplkason M M M M = M (M M M = (M M (M M = (M M M M, c c,87, 9,7 7,,7 7,87,7,,,7,6 7,, M M M M M M = (M M M (M M M = ((M (M M ((M M (M./. Optal atrseultplkason functon OptalParens( d[ : n ] for to n- do [ ] for dag to n do for to n dagdo + dag [ ] for k to do q [ k] + [k +, ] + d[] d[k + ] d[ + ] f q < [ ] then [ ] q c[] k endf return [, n ] end OptalParens Ann Joe Pat Ray
Pat Pat Joe Ray Joe Ray Ann Ann Ann Joe Pat Ray Ann Joe Pat Ray p p p p p p p p q q q q q q q q q q Gennosnttlg søketd: p + p + p + p + q + q + q + q + q For generelle søketrær får v følgende forel for gennosnttlg antall saenlknnger so gøres: T et tre ed n nøkler (søkeord lagret nterne noder K,, K n-. n+ bladnoder tlsvarer ntervaller I,, I n ello nøklene. sannsynlghetsvektorer p og q for nøklene og ntervallene ello de. d er nvået tl nøkkel K, e er nvået tl bladnode so korresponderer ed I. n A ( T, n, p, q p( d n qe Hvs p -ene er lke og q -ene er lke, vl det koplette bnære søketreet være det optale. Men noen ord kan være oftere søkt etter enn andre (p -ene ulke, derfor kan det lønne seg ed skeve trær og deltrær, for å få ord so det ofte blr søkt etter så høyt so ulg opp treet. V ønsker å fnne det optale bnære søketreet T over alle ulge, gtt søkesannsynlghetene (p -ene og q -ene. vs treet so nerer gennosnttlg antall saenlknnger A(T,n,p,q: n A( T, n, P, Q T p -ene og q -ene er utgangspunktet sannsynlgheter (tall ntervallet [,], so suerer tl, en v kan slakke på kravet og anta at de er postve reelle tall, det er uansett bare tall so saenlknes. La ( p, q n n p q
. Et bnært tre T for nøklene K, K n- består av en rot ed nøkkel K, og to deltrær L og R. K. La T være et søketre for nøklene K,, K, n. (T er det toe treet o <. K,, K - p,, p - q,, q K +,, K n - p +,, p n - p +,, q n La ( k p k q k k V å prøve alle ulge røtter K for å fnne hvor det er best å dele treet. Hver ulge rot gr opphav tl to delprobleer optalserng av de korresponderende venstre og høyre deltrærne. Forelen (rekursv defnson for A(T vl være so følger: A ( T, k n{ A( T, k A( Tk } ( A( T ( Gennosnttlg antall operasoner for treet T er gtt ved: A( T, n, p, q A( L, p,..., p, q,..., q A( R, n, p,..., p, q,..., q ( p, q n n Kostnaden av det optale treet fnner v A(T,n-. For enkelthets skyld skrver v A(T = A(L + A(R + (p,q./. Fyller ut ulke typer tabeller En algorte kan nå relatvt enkelt lages ved å fylle ut en tabell ed verdene for A(T so defnert av forelen (sae åte so for atrseultplkason: Botto up A( T n{ A( T, k A( Tk, } ( k A( T ( I tllegg tl verden A(T å også en representason av de aktuelle trærne vedlkeholdes, slk at v fnner selve treet.