Sist endret: 23.09.2016  
 

Løsningsforslag - Dynamisk programmering

[Oppgave] [Levering] [Løsningsforslag]

Innleveringsfrist: 09.10.2017 15:00

Du er logget inn og får derfor se om du har svart riktig/feil på de enkelte oppgavene.
LF-svar er markert med grønt og feil svar er markert med rødt.

Hvis dere er uenige i fasit, oppfordres dere til å diskutere dette på Piazza.

Oppgave 1

[ riktig ]a) Hva innebærer overlappende delproblemer? (5 %)

At delproblemene er praktisk talt like, og derfor trygt kan ignoreres
At delproblemene blir løst i konstant tid
At samme delproblem må løses flere ganger av en rekursiv algoritme
Ingen av delene

Din kommentar:
LF-forklaring:

[ feil ]b) Hvilket av disse problemene er hensiktsmessig å løse med dynamisk programmering? (5 %)

Finne et element som forekommer mer enn én gang i en liste bestående av n heltall mellom 1 og n-1.
Sortere en liste bestående av n heltall mellom 1 og n2.
Finne det n'te Fibonacci tallet
Finne det elementet i et binært søketre som har verdi nærmest en oppgitt verdi.

Din kommentar:
LF-forklaring: Problemet med å finne det n'te Fibonacci tallet har overlappende delproblemer.

[ riktig ]c) Når er det hensiktsmessig å bruke dynamisk programmering? (5 %)

Når vi kan rekursivt løse problemet
Når problemet har optimal substruktur
Når delproblemene overlapper
Når vi kan løse problemet med "top down approach"

Din kommentar:
LF-forklaring:

Oppgave 2

I denne oppgaven skal vi ta for oss et rektangulært rutenett gitt som følger:


Vi skal nå prøve å finne ut av hvor mange veier det finnes fra punkt start (punkt [1, 1]) til punkt Mål (punkt [m, n]) under visse restriksjoner.
En lovlig vei fra Start til Mål defineres ved at et skritt fra punkt [i, j] på veien skal gå enten til punktet [i+1, j] eller til punktet [i, j+1]. To veier er forskjellige dersom de ikke er identisk like, skritt for skritt.
Funksjonen T(i, j) skal gi antall veier fra punkt [1, 1] til punkt [i, j]. Dette fører til at T(1, 2) = 1 og T(3, 2) = 3.

[ riktig ]a) Hva blir T(1, 4) ? (10 %)

1
2
3
4
5

Din kommentar:
LF-forklaring:

[ feil ]b) Hva blir T(4, 3)?(Det kan være lurt å prøve å finne et system for ? svare p? oppgaven) (15 %)

2
5
7
10
16

Din kommentar:
LF-forklaring:

[ feil ]c) Finn et uttrykk som gjør deg i stand til å regne ut T(m, n). T(m, n) = ? (35 %)

T(m-1, n-1) + 2
MAX{ T(m-1, n), T(m, n-1) } + 1
T(m-1, n) + T(m, n-1)
m2 + n2 - m * n
T(m-1, n) + T(m, n-1) + T(m-1, n-1)

Din kommentar:
LF-forklaring: Merk at du også må ha med sluttbetingelsen T(1,1) = 1 for å faktisk regne ut T(m,n). Men T(m-1,n) + T(m,n-1) er det eneste av uttrykkene som gjør deg i stand til å regne ut T(m,n), uavhengig av sluttbetingelse.

Oppgave 3

Stavkutting problemet
Gitt en stav med lengde n. En stav med lengde i kan selges for pi, for i=1,2,...,n. Finn hvordan staven skal kuttes opp slik at du maksimerer inntekten R ved å selge staven.
Hva blir R gitt:

[ feil ]a)
N=4
p1 = 4, p2 = 9, p3 = 15, p4 = 18
(5 %)

16
17
18
19
20

Din kommentar:
LF-forklaring: Hvis den deles slik at en del har lengde i = 3, og den andre lengde i = 1. Får R = 19

[ feil ]b)
N=8
p1 = 4, p2 = 9, p3 = 15, p4 = 18, p5 = 21, p6 = 28, p7 = 31, p8 = 37
(5 %)

36
37
38
39

Din kommentar:
LF-forklaring: Deles i lengder 3, 3 og 2. R = 39

[ feil ]c) Hvor mange delproblemer må man løse for å finne optimal løsning for stavkutting problemet? (5 %)

$\Theta(lgn)$
$\Theta(n)$
$\Theta(n^2)$
$\Theta(2^n)$

Din kommentar:
LF-forklaring:

Oppgave 4

Ryggsekkproblemet:
Gitt n elementer med vekt w1,...,wn og verdi v1,...,vn og en ryggsekk med kapasitet W, finn den mest verdifulle kombinasjonen av elementer du får plass til i sekken. V er da den totale verdien av denne kombinasjonen.

Hva blir V gitt:

[ feil ]a) W = 5
v1 = 12, v2 = 10, v3 = 20, v4 = 15
w1 = 2, w2 = 1, w3 = 3, w4 = 2
(5 %)

32
35
37
47

Din kommentar:
LF-forklaring:

[ feil ]b) W = 740
v1 = 18, v2 = 27,v3 = 51, v4 = 36, v5 = 24, v6 = 22, v7 = 29, v8 = 10, v9 = 24, v10 = 40
w1 = 320, w2 = 301, w3 = 371, w4 = 296, w5 = 303, w6 = 359, w7 = 148, w8 = 275, w9 = 296, w10 = 395
(5 %)

78
87
89
93

Din kommentar:
LF-forklaring: