| tags | vaje, or, dinamicno programiranje |
|---|---|
| hackmd | https://hackmd.io/lg1h-7IvR6Gq_qxARZVQng |
| plugins | mathjax, mermaid |
- Deli in vladaj
graph TD
A --- B
A --- C
B --- D
B --- E
C --- F
C --- G
- Dinamično programiranje
graph TD
A --- F
B --- F
B --- G
C --- G
C --- H
D --- H
D --- I
E --- I
F --- J
G --- J
G --- K
H --- K
H --- L
I --- L
J --- M
K --- M
K --- N
L --- N
N --- O
M --- O
Na avtocestni odsek dolžine
- Reši problem za parametre
$M = 20$ ,$d = 5$ ,$n = 8$ , $(x_i){i=1}^n = (1, 2, 8, 10, 12, 14, 17, 20)$ in $(v_i){i=1}^n = (8, 8, 12, 10, 7, 5, 6, 10)$. - Napiši rekurzivne enačbe za opisani problem.
- Napiši algoritem, ki poišče najbolj profitabilno postavitev oglasov za dane parametre. Kakšna je njegova časovna zahtevnost?
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | |
|---|---|---|---|---|---|---|---|---|
| 1 | 2 | 8 | 10 | 12 | 14 | 17 | 20 | |
| 8 | 8 | 12 | 10 | 7 | 5 | 6 | 10 | |
| 8 | 8 | 20 | 20 | 20 | 25 | 26 | 35 | |
| 0 | 2 | 3 | 5 | 6 |
Kam postavimo plakate:
def plakati(x, v, d):
n = len(x)
j = 0
s = []
for i, xi in enumerate(x):
while xi - x[j] >= d:
j += 1
if j == 0:
p = 0
y = None
else:
y = j - 1
p = s[y][0]
p += v[i]
if i > 0 and p < s[i-1][0]:
y = i - 1
p = s[y][0]
b = False
else:
b = True
s.append((p, y, b))
p, y, b = s[-1]
pozicije = []
if b:
pozicije.append(n - 1)
while y is not None:
z = y
_, y, b = s[y]
if b:
pozicije.append(z)
return (p, list(reversed(pozicije)))Časovna zahtevnost:
Imamo nahrbtnik nosilnosti
- Napiši rekurzivne enačbe za opisani problem.
- Z uporabo rekurzivnih enačb reši problem za parametre
$M = 8$ ,$n = 8$ , $(v_i){i=1}^n = (9, 9, 8, 11, 10, 15, 3, 12)$ in $(t_i){i=1}^n = (3, 5, 1, 4, 3, 8, 2, 7)$.
| 0 | 0 | |
| 1 | 8 | |
| 2 | 8 | |
| 3 | 11 | |
| 4 | 18 | |
| 5 | 19 | |
| 6 | 21 | |
| 7 | 27 | |
| 8 | 29 |
Časovna zahtevnost:
Dana je matrika $A = (a_{ij}){i,j=1}^{m,n}$. Poiskati želimo pot minimalne vsote, ki se začne v levem zgornjem kotu (pri $a{11}$) in konča v desnem spodnjem kotu (pri
-
Reši problem za matriko
$$ A = \begin{pmatrix} 131 & 673 & 234 & 103 & 18 \ 201 & 96 & 342 & 965 & 150 \ 630 & 803 & 746 & 422 & 111 \ 537 & 699 & 497 & 121 & 956 \ 805 & 732 & 524 & 37 & 332 \end{pmatrix} . $$
-
Napiši rekurzivne enačbe za opisani problem.
-
Na osnovi rekurzivnih enačb napiši algoritem, ki reši opisani problem. Oceni tudi njegovo časovno zahtevnost v odvisnosti od
$m$ in$n$ .
Časovna zahtevnost: