Avsluttende eksamen i TDT4125 Algoritmekonstruksjon, videregående kurs (løsningsforslag)

Like dokumenter
Avsluttende eksamen i TDT4120 Algoritmer og datastrukturer

Avsluttende eksamen i TDT4120 Algoritmer og datastrukturer

Avanserte flytalgoritmer

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Eksamen i tdt4120 Algoritmer og datastrukturer

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

ALGORITMER OG DATASTRUKTURER

ALGORITMER OG DATASTRUKTURER

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Avsluttende eksamen i TDT4120 Algoritmer og datastrukturer

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Avsluttende eksamen i TDT4120 Algoritmer og datastrukturer

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

ALGORITMER OG DATASTRUKTURER

Avsluttende eksamen i IT1105/TDT4120 Algoritmer og datastrukturer

Avsluttende eksamen i TDT4125 Algoritmekonstruksjon, videregående kurs

Avsluttende eksamen i TDT4120 Algoritmer og datastrukturer

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Maks Flyt og NPkompletthet

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

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

ALGORITMER OG DATASTRUKTURER

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

Øvingsforelesning 12 Maks flyt

Avsluttende eksamen i TDT4120 Algoritmer og datastrukturer

ALGORITMER OG DATASTRUKTURER

ALGORITMER OG DATASTRUKTURER

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

SIF8010 ALGORITMER OG DATASTRUKTURER

Korteste vei problemet (seksjon 15.3)

Algdat - Øvingsforelesning. Maks flyt

Teoriøving 7 + litt om Ford-Fulkerson. Magnus Lie Hetland

Øvingsforelesning Korteste vei: Alle til alle

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

45011 Algoritmer og datastrukturer Løsningsforslag eksamen 13. januar 1992

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

Algdat Eksamensforelesning. Nils Barlaug

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

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

UNIVERSITETET I OSLO

Løsningsforslag for utvalgte oppgaver fra kapittel 9

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

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

INF Algoritmer og datastrukturer

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

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

Norsk informatikkolympiade runde

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

EKSAMEN med løsningsforslag

Dijkstras algoritme Spørsmål

Øvingsforelesning 9. Flytnettverk, maksimum flyt og maksimum bipartitt matching. Jon Marius Venstad

UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet

Notater til INF2220 Eksamen

INF Algoritmer og datastrukturer

INF Algoritmer og datastrukturer

Oppgave 1. Sekvenser (20%)

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Prioritetskøer. Prioritetskøer. Binære heaper (vanligst) Prioritetskøer

EKSAMEN. Emne: Algoritmer og datastrukturer

Algoritmer og Datastrukturer

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

INF Algoritmer og datastrukturer

Kompleksitet og Beregnbarhet

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

UNIVERSITETET I OSLO

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Grafalgoritmer: Korteste vei

Prioritetskøer. Binære heaper Venstrevridde heaper (Leftist) Binomialheaper Fibonacciheaper

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

Norsk informatikkolympiade runde

TMA4140 Diskret Matematikk Høst 2016

UNIVERSITETET I OSLO

Grunnleggende Grafteori

EKSAMENSOPPGAVE. IAI20102 Algoritmer og datastrukturer

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

IN Algoritmer og datastrukturer

Norsk informatikkolympiade runde. Sponset av. Uke 46, 2015

Emnenavn: Matematikk for IT. Eksamenstid: Faglærer: Christian F Heide

UNIVERSITETET I OSLO

Kontinuasjonseksamen i tdt4125 Algoritmekonstruksjon, videregående kurs

Rundt og rundt og. Trettende forelesning

UNIVERSITETET I OSLO

INF Algoritmer og datastrukturer

HØGSKOLEN I BERGEN Avdeling for ingeniørutdanning

Øvingsforelesning 7. Dijkstras algoritme. Foiler: Fredrik Ludvigsen Foreleser: Jon Marius Venstad 10/4/09 1

Algoritmer og Datastrukturer

Heapsort. Lars Vidar Magnusson Kapittel 6 Heaps Heapsort Prioritetskøer

Ny/utsatt EKSAMEN. Dato: 6. januar 2017 Eksamenstid: 09:00 13:00

EKSAMEN Løsningsforslag. med forbehold om bugs :-)

MAT1030 Diskret Matematikk

Eksamen iin115, 14. mai 1998 Side 2 Oppgave 1 15 % Du skal skrive en prosedyre lagalle som i en global character array S(1:n) genererer alle sekvenser

Forelesning 29: Kompleksitetsteori

Kontinuasjonseksamen i tdt4125 Algoritmekonstruksjon, videregående kurs

Transkript:

TDT4125 2011-06-04 Kand.-nr. 1/5 Avsluttende eksamen i TDT4125 Algoritmekonstruksjon, videregående kurs (løsningsforslag) Kontakt under eksamen Tillatte hjelpemidler Magnus Lie Hetland Alle trykte/håndskrevne; bestemt, enkel kalkulator Bruk gjerne blyant! Les hele oppgavesettet først, disponer tiden og forbered evt. spørsmål til faglærer kommer til eksamenslokalet. Gjør antagelser der det er nødvendig. Svar konsist, fortrinnsvis i svarskjemaet. Svarskjema 1a (13%) 1b (8%) 2a (11%) 2b (8%) 2c (8%) 3a (9%)

TDT4125 2011-06-04 Kand.-nr. 2/5 3b (12%) 3c (10%) 4a (12%) 4b (9%)

TDT4125 2011-06-04 3/5 Oppgave 1 (Parallellitet) Neste to deloppgaver er tatt fra http://faculty.kfupm.edu.sa/ics/malalla/teaching/ics556/exams/ FinalExam-556.pdf La A være en Boolsk tabell (array) av lengde n, og la være en hvilken som helst binær logisk operator. a. Beskriv en algoritme med kjøretid Θ(lg n) som beregner A 1 A 2 A n på en EREW PRAM-maskin. Svar: F.eks. lag et binærtre av prosessorer, der hver utfører én -operasjon. (Kan evt. simuleres med n prosessorer.) b. Beskriv en annen EREW-algoritme for samme problem som er så effektiv som mulig, der produkt av kjøretid og antall prosessorer er forventet å være Θ(n). (Merk: Det er altså snakk om en algoritme som er work-efficient.) Svar: Bruk RANDOMIZED-LIST-PREFIX. Løsninger med kjøretid Θ(n) gir ingen uttelling (er ikke så effektiv som mulig). Oppgave 2 (Kompleksitet) En binærhaug (binary heap) er gjerne representert som en tabell (array), og har dermed en fast kapasitet. a. Hvordan kan man øke kapasiteten til en slik haug uten at den amortiserte kjøretiden til de ulike operasjonene påvirkes? Begrunn svaret. Svar: Bruk tabelldobling. Når haugen er full kopieres alt over i en ny tabell som er dobbelt så stor. Amortisert kostnad for dette er konstant (kjent fra pensum). Betrakt problemet med å finne billigst maks-flyt (min-cost max-flow) fra kilde s til sluk t i en graf der alle kantene har en kapasitet på 1. Grafen har n noder og m kanter og alle nodene kan nås fra s. Anta at ingen kantkostnader er negative. b. Gi en tett øvre grense (O-notasjon) for kjøretiden (som funksjon av n og m) for Busacker- Gowen på dette problemet, hvis du bruker prising (pricing) og Dijkstras algoritme med en binærheap (binary heap) for å finne de flytforøkende stiene (augmenting paths). Svar: O(nm lg n). Forklaring (kreves ikke av studentene): Flyten kan maksimalt være O(n) (f.eks. antall kanter ut av s). Hver forøkende sti øker denne flyten med 1, opp fra 0, og med DIJKSTRA tar det O(m lg n) å finne denne stien. Her vil O(m 2 lg n) gi ca. halv uttelling (begrenser bare flyten til O(m); riktig, men ikke stram nok grense). La BIPARTITE være problemet å avgjøre hvorvidt en graf er bipartitt. c. Vis at BIPARTITE NL. Svar: Traverser i en odde sykel, om mulig (svaret er da nei; ellers ja). Husk bare nåværende posisjon (lg n) og velg riktig startnode og ut-kant ikke-deterministisk. Her kan man også verifisere et sertifikat/en løsning med logaritmisk plassbruk i tillegg til løsningen. Merk at å referere til en node eller en kant krever logaritmisk lagringsplass. Selv om det dermed ikke er korrekt å si at verifiseringen krever konstant plass har det i denne sensuren ikke blitt trukket for dette.

TDT4125 2011-06-04 4/5 Oppgave 3 (Approksimering) Basert på oppgave fra MIT, Introduction to Algorithms, 18. mai, 2003 Anta at du skal flytte eiendeler med størrelser x 1, x 2,, x n fra sted A til sted B. Størrelsene er reelle tall mellom 0 og 1 (0 x i 1, for alle i), og eiendelene skal flyttes i en bil med lastekapasitet 1. Det gjelder å lage en plan for alle flyttelassene slik at det blir så få kjøreturer (lass) som mulig. Merk at vi skal lage en fullstendig plan før noen kjøringer foretas. Dette problemet er NP-hardt, og vi skal vurdere følgende enkle first-fit approksimeringsalgoritme: Putt enhet x 1 på det første lasset og deretter, for i = 2, 3,, n, putt x i i det første av de planlagte lassene der det er stor nok kapasitet. a. Gi et eksempel med n = 4 som viser at first-fit algoritmen ikke er optimal. Svar: F.eks. [0.3, 0.8, 0.2, 0.7]. b. Vis at first-fit algoritmen er en 2-tilnærming (2-approximation). (I begrunnelsen kan du bruke m for antall lass i first-fit-løsningen og m * for det optimale antallet lass. Du kan anta at det er snakk om minst to eiendeler.) Svar: Maks ett lass L kan være under halvfullt, og snittet av L og ethvert annet lass (og dermed snittet av alle) vil være mer enn halvfullt ellers ville L ha vært kombinert med et av dem. Vi har nå m * x i > 0.5m, så m/m * < 2. c. Hvis first-fit algoritmen har en kjøretid på f(n), beskriv en randomisert algoritme med en parameter k, som har kjøretid k f(n), som alltid gir minst like godt svar som first-fit algoritmen, som alltid har mulighet til å finne den optimale løsningen, og der større verdier for k gir en høyere forventet kvalitet. Svar: Kjør first-fit algoritmen k ganger. Randomiser rekkefølgen mellom hver kjøring. (Det er viktig å kjøre normal first-fit først, for å garantere minst like godt svar. Om man randomiserer allerede fra starten vil dette gi noe trekk.) Oppgave 4 (Kombinatorisk optimering) Basert på 5.2 i Integer Programming, av Laurence A. Wolsey Betrakt følgende problem P: Du skal planlegge produksjon av et produkt for n måneder fremover. For hver måned i = 1 n har du oppgitt følgende: p i h i d i Produksjonskostnad per enhet Lagringskostnad per enhet Etterspørsel (antall enheter) La x i være antall enheter som produseres i måned i, mens o i er antall enheter som til nå (ved slutten av måned i) er produsert, men foreløpig ikke solgt. Merk at x i, o i og d i er et ikkenegative heltall for i = 1 n, mens kostnadene er positive rasjonale tall. Målet er å finne en produksjonsplan (x 1 x n ) som tilfredsstiller all etterspørsel, men med lavest mulig totalkostnad. Lagringskostnaden (h i ) betales per enhet på lager ved slutten av måned i (altså o i ). Etter siste måned (n) skal lageret være tømt. Anta at du har en algoritme A tilgjengelig, som kan løse min-kost max-flyt problemet (mincost max-flow). a. Tegn P (for n = 3) representert som et nettverksproblem som kan løses av A. Forklar figuren. Svar: Kantene har påskrevet kapasitet (d) eller kostnad (p, h). De nederste kantene har kostnad 0; de resterende har ubegrenset kapasitet. Planen (x 1 x 3 ) er gitt av flyten i de øverste

TDT4125 2011-06-04 5/5 kantene. (Andre, ekvivalente, nettverk gir naturligvis også full uttelling, så lenge de bare er en konstant faktor større.) s p 1 p 2 p 3 1 2 3 h 1 h 2 d 1 d 2 d 3 t Betrakt nå problem Q, som er likt P, bortsett fra følgende ekstrakostnad: f i Fast kostnad (oppstartskostnad) for produksjon Denne faste kostnaden betales kun dersom det produseres minst én enhet i måned i. (Merk at dette er en engangskostnad for måned i, og er ikke en kostnad per enhet, i motsetning til p i.) Hvis f i = 0 for i = 1 n så er Q = P. b. Løs problemet Q så effektivt som mulig ved hjelp av dynamisk programmering. Du trenger kun finne kostnaden til den optimale planen (dvs., det er ikke nødvendig å finne selve planen). Merk: En løsning med kjøretid Θ(n 2 ) eller Θ(n 3 ) gir full uttelling. En kjøretid på Θ(n 4 ) gir noe trekk. Hint: Du kan anta at produksjonen i en måned (hvis den er større enn null) fullstendig dekker behovet et antall påfølgende måneder. Det vil si, hvis x i > 0, så kan du anta at x i = d i + d i+1 + + d i+k, for en eller annen k 0. Du kan også anta at x i = 0 hvis o i > 0. En optimal løsning med disse egenskapene vil alltid eksistere. Svar: Hovedpoenget er å fylle ut kostnaden C[k] for k = 1 n, der man prøver ut alle mulige siste produksjonsmåneder k. En rett frem løsning gir fire løkker (og total kjøretid Θ(n 4 )), der den innerste summerer lagringskostnader for det gjeldende intervallet. (Det er viktig å få med de varierende lagringskostnadene.) Disse kan forhåndsberegnes i kvadratisk tid, noe som gir en kubisk algoritme. Det optimale er en kvadratisk algoritme her er en måte å få til det på (svaret finnes til slutt i C[n]): for k = 1..n: C[k] = m = 0 l = 0 for j = k..1: l += m * h[j] m += d[j] c = f[j] + m*p[j] + l C[k] = min(c, C[k]) # Alle delproblemer # Foreløpig beste C[k] # Ant. enheter som må produseres i måned j # Lagringskostnad for måned j.. k # Prøv ulike j som siste produksjonsmåned # Lagre alle de resterende også ut måned j # Ekstra produksjon for å dekke behovet # Oppstart, produser alt, lagre det usolgte # Oppdater C[k] om nødvendig