|
Løsningsforslag til
utvalgte oppgaver
10.1-1Se
FunksjonsMax.c eller
FunksjonsMax.java
10.2-2
Se Ryggsekk.c
eller Ryggsekk.java.
Algoritmen har kompleksitet O(2n). Fordelen er at den ikke
er avhengig av at vektene er heltall.
10.2-4
Se MatriseMult.c
eller
MatriseMult.java.
Løsningen baserer seg på følgende:
La Tij være antall multiplikasjoner vi trenger for å
multiplisere matrisene Mi, Mi+1,..., Mj.
Vi starter med at Tii=0 for alle i, og finner deretter Ti,i+1,
Ti,i+2 osv. Den endelige løsningen er T0,n-1 når
vi har n matriser.
For å finne Tij beregner vi antall multiplikasjoner som må til hvis vi
først multipliserer Mi,...Mk, deretter Mk+1,...Mj,
og til slutt multipliserer sammen de to resultatmatrisene. Så velger
vi den k mellom i og j som gir det minste antall multiplikasjoner. Vi
får dermed:
Tij=min(Tik + Tk+1,j + di*dk+1*dj+1)
der di er antall rader i matrise Mi og dj+1
er antall kolonner i Mj.
Vi trenger å lagre alle Tij'ene for j>i. Dette gjøres i
øvre høyre del av en todimensjonal tabell. Vi trenger også å lagre de
tilsvarende k-verdiene, dette lagrer vi i den nedre venstre delen av den samme
tabellen.
10.3-3
Se Huffmantest.c
eller Huffmantest.java
10-1
Se RyggsekkKont.c
eller
RyggsekkKont.java
10-2
Se Tur.c eller Tur.java
|