Agenda. 1 Sortering, heap og select. 2 Binære trær. 3 Grafer, BFS og DFS. 4 Spenntrær og Korteste vei. 5 Maks flyt. 6 Dynamisk programmering

Like dokumenter
ALGORITMER OG DATASTRUKTURER

ALGORITMER OG DATASTRUKTURER

Algdat Eksamensforelesning. Nils Barlaug

LØSNINGSFORSLAG, EKSAMEN I ALGORITMER OG DATASTRUKTURER (IT1105)

Avsluttende eksamen i TDT4120 Algoritmer og datastrukturer

Kontinuasjonseksamen i fag SIF8010 Algoritmer og Datastrukturer Torsdag 9. August 2001, kl

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Studentnummer: Side 1 av 1. Løsningsforslag, Eksamen i TDT4120 Algoritmer og datastrukturer August 2005

Ekstra ark kan legges ved om nødvendig, men det er meningen at svarene skal få plass i rutene på oppgavearkene. Lange svar teller ikke positivt.

ALGORITMER OG DATASTRUKTURER

ALGORITMER OG DATASTRUKTURER

Maks Flyt og NPkompletthet

Algdat-ninja på 60 minutter: Et galskapsprosjekt. Magnus Lie Hetland

Eksamen i tdt4120 Algoritmer og datastrukturer

ALGORITMER OG DATASTRUKTURER

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Dijkstras algoritme. Her finnes det også (minst) en riktig rekkefølge for Relax, men den må vi oppdage litt etter hvert.

Notater til INF2220 Eksamen

Go with the. Niende forelesning. Mye matematikk i boka her ikke så komplisert, men mye å holde styr på.

Løsningsforslag for eksamen i fag TDT4120 Algoritmer og datastrukturer Tirsdag 9. desember 2003, kl

Øvingsforelesning Korteste vei: Alle til alle

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Løsningsforslag for eksamen i fag SIF8010 Algoritmer og Datastrukturer Tirsdag 18. Desember 2000, kl

All good things. Fjortende forelesning

Avsluttende eksamen i TDT4120 Algoritmer og datastrukturer

Algdat Oppsummering, eksamen-ting. Jim Frode Hoff

Eksamen i fag SIF8010 Algoritmer og Datastrukturer Tirsdag 18. Desember 2000, kl

Innhold. Innledning 1

Eksamen i fag SIF8010 Algoritmer og Datastrukturer Tirsdag 14. Desember 1999, kl

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Løsningsforslag for eksamen i fag SIF8010 Algoritmer og datastrukturer Lørdag 9. august 2003, kl

SIF8010 ALGORITMER OG DATASTRUKTURER

Eksamen i fag SIF8010 Algoritmer og datastrukturer Lørdag 9. august 2003, kl

Rundt og rundt og. Trettende forelesning

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

for bare trær Andre forelesning

Pensum: fra boken (H-03)+ forelesninger

Live life and be merry

Pensum: fra boken (H-03)+ forelesninger

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

deeegimnoorrrsstt Sjette forelesning

Algdat - øvingsforelesning

Avsluttende eksamen i TDT4120 Algoritmer og datastrukturer

IN Algoritmer og datastrukturer

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Longest increasing. subsequence Betingelser. Longest. common subsequence. Knapsack Grådig vs. DP Moro: 2D-Nim Spørsmål. Forside. Repetisjon.

Trær. Består av sammenkoblede noder Hver node har 0 eller flere barne-noder. Må være asyklisk. Et tre med n noder har n-1 kanter.

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Løsningsforslag til eksamen i fag SIF8010 Algoritmer og Datastrukturer Tirsdag 14. Desember 1999, kl

INF Algoritmer og datastrukturer

Dijkstras algoritme. Her finnes det også (minst) en riktig rekkefølge for Relax, men den må vi oppdage litt etter hvert.

INF1020 Algoritmer og datastrukturer GRAFER

UNIVERSITETET I OSLO

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

INF Algoritmer og datastrukturer

Avsluttende eksamen i IT1105/TDT4120 Algoritmer og datastrukturer

Algdat - øvingsforelesning

Øvingsforelesning 4. Topologisk sortering, Strongly Connected Components og Minimale spenntrær. Magnus Botnan

ALGORITMER OG DATASTRUKTURER

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

LO118D Forelesning 12 (DM)

Øvingsforelesning 12 Maks flyt

INF Algoritmer og datastrukturer

Pensum: 3. utg av Cormen et al. Øvingstime: I morgen, 14:15

Avsluttende eksamen i TDT4120 Algoritmer og datastrukturer

UNIVERSITETET I OSLO

Ny/utsatt EKSAMEN. Dato: 5. januar 2018 Eksamenstid: 09:00 13:00

INF Algoritmer og datastrukturer

August

All good things. Fjortende forelesning

Avsluttende eksamen i TDT4120 Algoritmer og datastrukturer

Løsningsforslag - Korteste vei

UNIVERSITETET I OSLO

Alle mot alle. Åttende forelesning. (eller eller Bellman-Ford, eller BFS, alt ettersom) fra alle noder.

Løsningsforslag for utvalgte oppgaver fra kapittel 9

Grunnleggende Grafteori

Eksamenshefte TDT4120 Algoritmer og datastrukturer

O(V 2 ) bwfs(v, i=1) λ[v] = i for each neighbor u of v if 0 < λ[u] < i. bwfs(u, i+1) if λ[u] = 0

Lineær sortering. Radix sort

INF Algoritmer og datastrukturer

IN Algoritmer og datastrukturer

Minimum Spenntrær - Kruskal & Prim

Live life and be merry

Avsluttende eksamen i TDT4120 Algoritmer og datastrukturer

Longest. increasing. subsequence. Betingelser. Matrise- common. Grådig vs. DP. Forside. Intro. Fibonacci-tall. Memoisering DP

A new study has found that cockroaches are morons in the morning and geniuses in the evening in terms of their learning capacity.

EKSAMEN. Dato: 28. mai 2018 Eksamenstid: 09:00 13:00

Algdat Redux. Fjortende forelesning. Repetisjon av utvalgte emner.

Øvingsforelesning 6. Sorteringsalgoritmer. Martin Kirkholt Melhus Basert på foiler av Kristian Veøy 30/09/14 1

IN Algoritmer og datastrukturer

Grådige algoritmer. Lars Vidar Magnusson Kapittel 16. Aktivitetvelgingsproblemet Huffmankoder

INF Algoritmer og datastrukturer

Algdat - Øvingsforelesning. Maks flyt

Innledning. IN2010/INF Algoritmer og datastrukturer. Tirsdag 27. november 2018 Kl (4 timer)

INF Algoritmer og datastrukturer

Øvingsforelesning 2 - TDT4120. Grafer og hashing. Benjamin Bjørnseth

INF2220: Forelesning 1. Praktisk informasjon Analyse av algoritmer (kapittel 2) (Binær)trær (kapittel )

Transkript:

Agenda 1 Sortering, heap og select Oppsummering Ola Natvig IDI - NTNU 23. november 2007 2 Binære trær 3 Grafer, BFS og DFS 4 Spenntrær og Korteste vei 5 Maks flyt 6 Dynamisk programmering 7 Grådighet 8 Lineærprogrammering 9 P, NP, NPC og deres medlemmer 10 Eksamenstips Ola Natvig (IDI - NTNU) Oppsummering 23. november 2007 1 / 33 Ola Natvig (IDI - NTNU) Oppsummering 23. november 2007 2 / 33 Sortering, heaper og select O(n lg n) algoritmer for sortering: Quicksort, Mergesort og Heapsort Kjenne kjøretider, best, worst, avg - case. O(n) algoritmer for sortering: Counting-sort, Radix-sort og Bucket-sort Kjenne kjøretider krav til data, (heltall, uniform fordeling) Binære heaper: Kjenne kjøretider, kjenne anvendelser Heapsort, prioritetskøer... Select: Select, Randomized-Select og Median-of-medians Huske å bruke når sortering blir overkill. Sortering, heaper og select - fra en eksamen Tabell A med n Boolske verdier (true eller false). Finn en lineær (O(n)) algoritme som sorterer verdiene (f alse < true), med kun konstant (O(1)) ekstra minnebruk, dvs. det er ikke mulig å telle antallet true og false siden dette hadde tatt O(n) ekstra minne. Svar: Partition - O(n), hvorfor? Ola Natvig (IDI - NTNU) Oppsummering 23. november 2007 3 / 33 Ola Natvig (IDI - NTNU) Oppsummering 23. november 2007 4 / 33

Sortering, heaper og select - fra en eksamen Binære trær Gitt heltallsvektor: V [1...n], finn en mest mulig effektiv algoritme for å avgjøre om det finnes en undermengde av k elementer i V med sum en oppgitt verdi T. Svar: Sorter alle tallene og velg ut de k minste. Θ(n lg n) Bedre svar: Bruk en Min-Heap og trekk ut de k minste. Θ(n) for å lage heap. Θ(k lg n) for å hente ut k minste. Beste svar: Bruk en Select for å finne kte minste tall. Siden Select bruker partisjonering vil de k minste tallene befinne seg til venstre for det kte minste taller. Θ(n). (Randomized-Select og Median-of-Medians er selvfølgelig også minst like riktig.) Binære søketrær som datastruktur. Kjenne forskjell på balanserte og ubalanserte søketrær Kjenne infix (inorder), prefix (preorder) og postfix (postorder) Kjenne framgangsmåte for å finne maksimum, minimum og etterfølger i binære trær. Rød-svart trær som datastruktur. Kjenne motivasjonen bak rød-svart-trær Ha en viss forståelse om hvorfor rød-svart-trær er ganske balanserte. Ola Natvig (IDI - NTNU) Oppsummering 23. november 2007 5 / 33 Ola Natvig (IDI - NTNU) Oppsummering 23. november 2007 6 / 33 Binære trær - fra en eksamen Binære trær - fra en eksamen Anta at du har et balansert binært søketre med n elementer. Du ønsker å skrive ut alle elementene i verdiområdet fra x til y. Anta at det finnes k elementer i dette verdiområdet. Algoritmen din må finne alle disse elementene og skrive dem ut. Hva blir kjøretiden? Svar: T (n, k) = Θ(k + lg n), hvorfor? Vi må finne x, dette gjøres i Θ(lg n) tid i et ballansert søketre. Vi må skrive ut de k neste verdiene, siden treet er ballansert kan vi skrive ut de k etterfølgende tallene i Θ(k) tid. Hva er hensikten med heap-strukturen? Hvorfor kan man ikke like gjerne bruke binære søketrær? Man kan bruke binærtrær til å finne største og minste element, og den gjennomsnittlige asymptotiske kostnaden for å sette inn og ta ut elementer er jo den samme. Hvilken fordel er det da heaper (hauger) har (for sitt anvendelsesområde)? Svar: En heap er alltid ballansert, best-case = avg-case = worst-case Ola Natvig (IDI - NTNU) Oppsummering 23. november 2007 7 / 33 Ola Natvig (IDI - NTNU) Oppsummering 23. november 2007 8 / 33

Grafer, DFS, BFS +++ Grafer, DFS, BFS +++ (1/2) Grafer Kjenne forskjellige typer: rettede, urettede, vektede,... Kjenne ulike strukturer: lenket liste, tre, skog, n-regulært-tre, DAG,... Kjenne ulike måter å representere grafer: naboliste, nabomatrise,... DFS, BFS: Kjenne forskjell på DFS og BFS Kjenne egenskaper ved DFS - oppdager sykler (grå kant), parentessetting,... Kjenne egenskaper ved BFS - korteste vei ved uniform kostnad,... Forstå at DFS og BFS i tilegg til å være grafsøkealgoritmer også er paradigmer som benyttes av mange andre algoritmer. (2/2) Topologisk sortering Kjenne krav (DAG) Kjenne inplementasjon. Sterkt sammenknyttede komponenter Vite hva en sterkt sammenknyttet komponent er. Kjenne inplementasjon. Ola Natvig (IDI - NTNU) Oppsummering 23. november 2007 9 / 33 Ola Natvig (IDI - NTNU) Oppsummering 23. november 2007 10 / 33 Grafer, DFS, BFS +++ - fra en eksamen Urettet asyklisk graf G = (V, E), alle kantene i E har vekt 1. Eksentrisiteten til noden v er den den lengste stien i mengden S v der S v inneholder alle de korteste stiene fra node v til de andre nodene i V. Finn en algoritme som finner en eller flere noder med minimal eksentrisitet. Oppgi kjøretid. Svar: urettet, asyklisk -> skog. Hvis vi har en skog (usammenhengende) har alle nodene eksentrisitet lik. Antar derfor et tre. Har man interne noder, kan ikke løvnodene være de nodene med lavest eksentrisitet. Vi kan fjerne løvnodene gjentatte ganger intill vi ikke lenger har interne noder. Kan finne løvnoder i Θ(V ) tid, fjerning av løvnoder kan holde rede på nye løvnoder i Θ(1) tid. Vi kan ikke fjerne mer enn V noder. Kjøretiden blir derfor Θ(n). Spenntrær og korteste vei Minimale-spenntrær algoritmer: Prim og Kruskal Kjenne problemstillingen, minimalt-spenntre. Forstå begrepet sikker kant., Prim bygger spenntre, Kruskal bygger skog. Korteste vei en til alle algoritmer: DAG-Shortest-Path, Dijkstra og Bellman-Ford Kunne velge riktig algoritme på grunnlag av probleminstans (DAG, negative kanter) er. Kunne velge mellom heap eller tabell i Dijkstra. Korteste vei alle-til-alle: Floyd-Warshall Kjenne til implementasjonen. Forstå at FW er DP. Kjenne likhet til transitiv tilukkning Kjenne til likheten mellom korteste vei alle-alle og matrisemultiplikasjon. Ola Natvig (IDI - NTNU) Oppsummering 23. november 2007 11 / 33 Ola Natvig (IDI - NTNU) Oppsummering 23. november 2007 12 / 33

Spenntrær og korteste vei - fra en eksamen Kommunikasjonsnettverk med n stasjoner. En potensiell kobling mellom to noder har en gitt oppgitt båndbredde. Dette danner en vektet graf G = (V, E) med vektfunksjon w(e). Vi ønsker å finne den mengden med det minste antallet kanter som skal være med i nettverket slik at alle nodene kommuniserer med hverandre. I tillegg ønsker vi ha maksimal total båndbredde. Svar: vi ønsker et maksimalt spenntre, negger alle kantvektene og kjør Prim, kjøretid Θ( E lg V ). Spenntrær og korteste vei - fra en eksamen Lag en skisse til en prosedyre SHORTEST-PATH(G,w,s)...som selv tar beslutning om hvilken (klassisk) algoritme som bør velges avhengig av G s egenskaper. Løsning def SHORTEST-PATH(G, w, s): if G is a DAG: return DAG-Shortest-Path(G, w, s) else: if G has negative edges: B = Bellman-Ford(G,w,s); if not B: fail "Negative cycles found!!!" return B else: return Dijsktra(G, w, s) Ola Natvig (IDI - NTNU) Oppsummering 23. november 2007 13 / 33 Ola Natvig (IDI - NTNU) Oppsummering 23. november 2007 14 / 33 Maks-flyt Maks-flyt - fra en eksamen Maks-flyt: Ford-Fulkerson-Metoden, Edmonds-Karp Kunne formulere problemer som flytproblemer Maksimal bipartite matching Kjenne til problemstillingen Kunne formulere som flytproblem Finn en best mulig algoritme som kan finne den maksimale flyten fra alle løvnodene og opp til rotnoden i et binærtre. Anta at alle barnebekerne i binærtreet er merket med en kapasitet fra barnet og opp til foreldrenoden. Oppgi tidskompleksiteten. Svar: Hver interne node i treet (untatt rota) har tre kanter, en kant til en foreldrenode, og to kanter til barnenoder. F p = min(p, F l + F r ): flyten opp til foreldrenoden er lik den minste av kapasiteten opp til foreldrenoden og den total flyt inn i noden. Dersom vi har en løvnode, eller en node uten venstre eller høyre barn er flyten derfra uendelig. Traverser treet med postfiks traversering, dette gir kjøretid O(n). Ola Natvig (IDI - NTNU) Oppsummering 23. november 2007 15 / 33 Ola Natvig (IDI - NTNU) Oppsummering 23. november 2007 16 / 33

Maks-flyt - utbredt på eksamen Dynamisk programmering Vanlige oppgaver Finn maks-flyt i denne grafen. Er flyten i denne grafen lovlig. Finn et minimalt kutt i denne grafen. Beherske DP som konstruksjonsteknikk Kjenne til krav: Optimal substruktur, uavhengige delproblemer og overlappende delproblemer. Memoisering Kjenne til problemer vi løser med DP Matrise-kjede-multiplikasjon Korteste vei alle-til-alle LCS, LIS og editerings-distanse... Ola Natvig (IDI - NTNU) Oppsummering 23. november 2007 17 / 33 Ola Natvig (IDI - NTNU) Oppsummering 23. november 2007 18 / 33 Dynamisk programmering - fra en eksamen Tabell Studenten Gro tar 3 fag, der sannsynligheten for å stryke i alle fag, i følgeegenvurdering (tabell), er 0.8 0.75 0.9 = 0.54, altså 54%, uten ekstra studietimer pr.uke. Gro synes ikke dette er helt bra og setter opp en tabell som viser hvordan ekstra lese innsats kan redusere sjansene for å stryke i de enkelte fagene. studietimer Fransk Matte 4 AlgDat 0 0.8 0.75 0.9 1 0.7 0.7 0.7 2 0.65 0.67 0.6 3 0.62 0.65 0.55 4 0.6 0.62 0.5 Dynamisk programmering - fra en eksamen Tabellen er p(t, f) der t {0, 1, 2, 3, 4} svarer til ekstra timer lesing og f {1, 2, 3} svarer til fag nummer f (f = 1 svarer til fransk osv..). Tabellen P min (t, f) er definert som følgende: minimal sansynlighet for å stryke i fag f og fag med høyere nummer dersom t timer per uke er tilgjengelig. Oppgave a) Hva blir den rekrusive formelen for beregning av P min (t, f)? Svar: P min (t, f) = min i=0...t (p(i, f) p min(t i, f + 1)) Vi bruker noen av de t tildelte timene på fag f og fordelere resten optimalt på de fagene med høyere nummer. Ola Natvig (IDI - NTNU) Oppsummering 23. november 2007 19 / 33 Ola Natvig (IDI - NTNU) Oppsummering 23. november 2007 20 / 33

Dynamisk programmering - fra en eksamen Oppgave b) Beskriv en algroitme som finner den den laveste mulig sansynligheten for å stryke i alle fag gitt en hvis mengde ekstra lesetimer, og en tilstrekkelig utfyllt tabell p(t, f). Løsning def LES-BEST(p, t): Pmin = [0...t, 0...f] Pmin[0...t, f] = P[0...t, f] for i = 0... t: for j = (f-1) down to 1: Pmin[i, j] = 1 for c = 0... i: Pmin[i, j] = min(pmin[i, j], p(c, j) * Pmin[j-c, j+1]) return Pmin[t, 1] Dynamisk programmering - fra en eksamen Du har n resturanter som ligger etterhverandre i samme gate. Resturantene skal slås sammen til en stor resturant, men du kan bare slå sammen to om gangen, og disse to må ligge ved siden av hverandre. Størrelsen på den nye resturantent er lik summen av de to sammenslåtte. Kostnaden ved sammenslåing er lik resultatstørrelsen. Du ønsker minst mulig total kostnad på de n 1 sammenslåingene. Du har en tabell L[1...n, 1...n]. L[i, j] inneholder den totale størrelsen på resturanten som er sammenslått f.o.m. i, t.o.m. j. Ola Natvig (IDI - NTNU) Oppsummering 23. november 2007 21 / 33 Ola Natvig (IDI - NTNU) Oppsummering 23. november 2007 22 / 33 Dynamisk programmering - fra en eksamen Finn en så effektiv algoritme som mulig som finner den minimale kostnaden ved å slå sammen alle resturantene. Løsning C = [1...n, 1...n] C[i, i] = 0 for all i in 1...n for l = 2...n: for i = 1...(n-l+1): j = i + l - 1 C[i, j] = Inf for k = i...(j-1): C[i, j] = min(c[i, j], C[i, k] + C[k + 1, j] + L[i, j]) return C[n, 1] Grådighet Kjenne prinsipper. (optimal delstruktur, greedy choice property ) Kunne rellatere til DP. Kjenne til noen problemer vi kan løse grådig: Fractional-Knapsack, Activity-Selecton-Problem, Huffmankoder Husk hva huffmankode-algoritmen gjør: min( f(c)d(c)) c C Ola Natvig (IDI - NTNU) Oppsummering 23. november 2007 23 / 33 Ola Natvig (IDI - NTNU) Oppsummering 23. november 2007 24 / 33

Grådighet - fra en eksamen Lineærprogrammering Du skal summere n positive flyttall, x[1]...x[n] slik at avrundigsfeilen blir minst mulig. Avhengig av hvordan dette gjøres kan de ulike tallene delta i et ulikt antall summasjoner. (((x[1] + x[3]) + (x[2] + x[5])) + x[6]). x[1] er med i tre, x[6] er med i en. Jo større en sum er, jo større blir feilen. p(i) er parentesdybden til flyttall x[i]. Feilen er derfor proposjonal med: p(1)x[1] + p(2)x[2] +... + p(n)x[n] Hvordan kan vi få feilen så liten som mulig? Svar: huffmankoding Kjenne prinsipper, bruksområder og begrensninger. Kunne formulere problemer som LP Kjenne standard og slakk form, samt kunne oversette LP problemer mellom generell form og standard/slakk from. Ola Natvig (IDI - NTNU) Oppsummering 23. november 2007 25 / 33 Ola Natvig (IDI - NTNU) Oppsummering 23. november 2007 26 / 33 Lineærprogrammering - fra en eksamen Lineærprogrammering - fra en eksamen Det er invitert N gutter og N jenter til en fest, arangøren ønsker at så få som mulig får en ikke spesielt ønsket bordkavaler/dame til bords. Det er derfor gjennomført en spørreundersøkelse blandt deltakerne, data er samlet i to matriser G og P. G(i, j) = 0 dersom gutt nr.i ikke spesielt ønsker jente nr.j, ellers er G(i, j) = 1. Tilsvarende er P (i, j) en eller null. Ønskene trenger ikke å være gjensidige. Formuler problemet som et LP problem. Løsning N Maksimer: (G(i, j) + P (i, j)) f(i, j) i,j=1 f(i, j) er 0 der gutt i og jente j ikke sitter sammen og 1 ellers. N f(i, j) = 1 for alle 1 i N, siden alle gutter må sitte med j=1 akkurat en jente. N f(i, j) = 1 for alle 1 j N, siden også alle jenter må sitte i=1 med akkurat en gutt. Ola Natvig (IDI - NTNU) Oppsummering 23. november 2007 27 / 33 Ola Natvig (IDI - NTNU) Oppsummering 23. november 2007 28 / 33

P, NP, NPC og deres medlemmer P, NP, NPC og deres medlemmer - fra en eksamen Kjenne de ulike kompleksitetsklassene. Kjenne noen NP-komplette problemer. CIRCUIT-SAT, SAT, 3-CNF-SAT, SUBSET-SUM, CLIQUE, VERTEX-COVER, HAM-CYCLE, TSP. Kjenne igjenn de samme NP-komplette problemene om de viser seg på eksamen. Kjenne til reduksjoner. Du har observert at dataspillet Slurm Invaders ligner svært på det NP-komplette problemet VERTEX-COVER, og du akter å bruke denne likheten til å vise at Slurm Invaders er NP-komplett. Hvordan vil du gå frem? Du kan anta at du alt har vist at Slurm Invaders er i mengden NP. Svar: Finne en reduksjon fra VERTEX-COVER til Slurm Invaders, dvs. vise at en polynomisk løsning på Slurm Invaders gir oss en polynomisk løsning på VERTEX-COVER. Ola Natvig (IDI - NTNU) Oppsummering 23. november 2007 29 / 33 Ola Natvig (IDI - NTNU) Oppsummering 23. november 2007 30 / 33 P, NP, NPC og deres medlemmer - fra en eksamen På en tidligere eksamen har følgende oppgave blitt gitt: Mengden S består av N reelle tall, du får oppgitt et reelt tall T og et heltall K N. Finnes det en delmengde Q S med K elementer slik at q Q q T? Det finnes en algoritme som løser dette problemet i Θ(n) tid. Er det rimelig å tro at vi kan finne en like effektiv løsning på følgende problem: S, N, Q og T som det forrige problemet, men q Q q=t. Svar: nei, når K = N kan vi løse SUBSET-SUM, dermed er problemet NP-komplett, det er ikke rimelig å tro at et NP-komplett problem kan løses i lineær tid. Eksamenstips Gjør Husk å ta med boka. Les alle oppgaven før du starter. Svar på alle oppgavene, en algoritme med eksponensiell kjøretid er bedre enn ingen algoritme (marginalt). Ikke Få panikk Gjør feil på kjør n iterasjoner med algoritme X fyll inn resultatet i disse rutene.... Dere har boka, dere har god tid (besvarelsen i algdat er ofte bare 2-3 sider). Åpne boka for første gang på eksamen. Ola Natvig (IDI - NTNU) Oppsummering 23. november 2007 31 / 33 Ola Natvig (IDI - NTNU) Oppsummering 23. november 2007 32 / 33

Lykke til!! P = {personer i fagstaben TDT4120 høsten 2007} P = P union {Dijkstra, Knuth, Hoare, Turing, Euler} for p in FS: print p, "ønsker dere lykke til!" Ola Natvig (IDI - NTNU) Oppsummering 23. november 2007 33 / 33