Académique Documents
Professionnel Documents
Culture Documents
S[0] = 0
para j = 1 a n:
S[j] = max(0, a j + S[j - 1])
retorno max j S[j ]
0≤i<j
Algoritmo:
para j = 1 a n:
T(j)=(200-aj) 2
para i = 1 a j - 1:
T(j)=min{T(j),T(i)+(200-(aj-a i) } )2
retorno T(n)
(1 se i = j
T(i,j) = 2 + T(i + 1,j - 1) se eu < j e x[i] = x[j]
[ max{T (i + 1,j), T (i,j — 1) } caso contrário
1
para i = 2 a n + 1:
T[i, i - 1] = 0 para i = 1 a n:
T[i,i]=1
para d = 1 a n - 1: (duração do intervalo)
para i = 1 a n - d:
j=i+d
se x[i] = x[j]:
T[i,j]=2+T[i+1,j-1]
mais:
T[i,j] =max{T[i+1,j],T[i,j-1]} retornar T[1, n]
Tempo de duração: Existem subproblemas O(n 2) e cada um leva O(1) tempo para computar, então o tempo total de
execução é O(n ). 2
T [0] = verdadeiro
para você = 1 a v:
T [u] = falso
para i = 1 a n:
se você ≥ x i e T [u - x ]: T [u] = verdadeiro
i
Tempo de duração: A tabela tem tamanho v e cada entrada leva O(n) tempo para ser preenchida; portanto, o tempo total de
execução é O(nv).
E, claro, numpaths[s] = 1.
Algoritmo: Podemos preencher a matriz considerando os nós em ordem topológica:
Queremos T (r).
2
Formulação recursiva: Ao descobrir T (u), a questão mais imediata é se u está na cobertura de vértices. Se não, então seus
filhos devem estar na cobertura do vértice. Que C(u) seja o conjunto de seus filhos, e que G(u) seja seu neto. Então
T(u) = min
।)
T(u)=min
|C(u)|+P z∈G(u)T(z)
onde |C (u)| é o número de filhos do nó u. O primeiro caso inclui u na cobertura do vértice; o segundo caso, não.
Algoritmo:
Tempo de duração: O trabalho realizado em cada nó é proporcional ao seu número de netos, |G(u)|. Desde u |G(u)| ≤ |
V | (cada nó tem no máximo um avô), o trabalho geral feito é linear.
Para consistência, defina T (0, j) como true para todos j e T (u, 0) como false para você > 0.
Algoritmo:
para j = 0 a k:
T [0, j] = verdadeiro
para você = 1 a v:
T [u, 0] = falso
para j = 1 a k:
para você = 1 a v:
T [u, j] = falso
para i = 1 a n:
se você ≥ x i e T [u - xi, j - 1]: T [u, j] = verdadeiro
retorno T [v, k]
Tempo de duração: A tabela tem tamanho k × v e cada entrada leva O(n) tempo para preencher; portanto, o tempo total de
execução é O (nkv).