Beruflich Dokumente
Kultur Dokumente
UFMG/ICEx/DCC
PAA
UFMG/ICEx/DCC
PAA
n0, P (n)
P(n)
n0
UFMG/ICEx/DCC PAA
Inteiros
UFMG/ICEx/DCC
PAA
Para provar o passo indutivo deve-se: supor que P (k) V, onde k um elemento especco mas escolhido arbitrariamente de tal forma que seja maior ou igual a n0. provar que P (k + 1) V.
UFMG/ICEx/DCC
PAA
P(n)
...
P (n 0) P (n 1) P (n 2) P (k ) P (k+1)
Inteiros
Numa prova por induo matemtica no assumido que P (k) verdadeiro para todos os inteiros! mostrado que se for assumido que P (k) verdadeiro, ento P (k + 1) tambm verdadeiro.
Os prximos 10 exemplos ilustram o uso do Princpio da Induo Matemtica e esto apresentados aqui para estudo e referncia.
UFMG/ICEx/DCC PAA
1. Passo base: P (n0) = P (1): Para n0 = 1, 1 = 1(1+1) = 1 e a frmula 2 verdadeira para n0 = 1. 2. Passo indutivo: se a frmula verdadeira para n = k ento deve ser verdadeira para n = k + 1, i.e., P (k) ! P (k + 1). Suponha que a frmula seja verdadeira para n = k, i.e., k(k + 1) P (k ) : 1 + 2 + . . . + k = 2 para algum inteiro k 1. [hiptese indutiva]
UFMG/ICEx/DCC PAA
UFMG/ICEx/DCC
PAA
1. Passo base: P (n0) = P (0): Para n0 = 0, 0 = 0(0+2) = 0 e a frmula 2 verdadeira para n0 = 0. 2. Passo indutivo: se a frmula verdadeira para n = k ento deve ser verdadeira para n = k + 1, i.e., P (k) ! P (k + 1). Suponha que a frmula seja verdadeira para n = k, i.e., k(k + 2) k 2 + 2k P (k ) : 0 + 1 + 2 + . . . + k = = 2 2 para algum inteiro k 0. [hiptese indutiva]
UFMG/ICEx/DCC PAA
UFMG/ICEx/DCC
PAA
10
rn+1 i r = r
1 1
i=0
2. Passo indutivo: se a frmula verdadeira para n = k ento deve ser verdadeira para n = k + 1, i.e., P (k) ! P (k + 1).
UFMG/ICEx/DCC
PAA
11
P (k ) :
k +1 X i=0
ri = =
i=0 rk+1
k X
ri + r k+1 1 1 + rk+1
UFMG/ICEx/DCC
PAA
12
Prova (por induo matemtica): 1. Passo base: P (n0) = P (1): Para n0 = 1, 221 por 3. 1 = 3 que divisvel
2. Passo indutivo: se a frmula verdadeira para n = k ento deve ser verdadeira para n = k + 1, i.e., P (k) ! P (k + 1).
UFMG/ICEx/DCC
PAA
13
= 22k 3 + (22k
UFMG/ICEx/DCC
PAA
14
2. Passo indutivo: se a frmula verdadeira para n = k ento deve ser verdadeira para n = k + 1, i.e., P (k) ! P (k + 1).
UFMG/ICEx/DCC
PAA
15
Deve-se mostrar que P (k + 1) : 20 + 21 + 22 + . . . + 2k+1 = 2k+2 20 + 21 + 22 + . . . + 2k + 2k+1 = (2k+1 = 2 2k+1 = 2k+2 1) + 2k+1 1 1
UFMG/ICEx/DCC
PAA
16
Prova (por induo matemtica): 1. Passo base: P (n0) = P (0): Para n0 = 0, temos H20 = H1 = 1 1+0 2.
2. Passo indutivo: se a frmula verdadeira para n = k ento deve ser verdadeira para n = k + 1, i.e., P (k) ! P (k + 1).
UFMG/ICEx/DCC
PAA
17
= H2k +
k 1+ 2 k 1+ 2
+ 2k 1 2
1 2k+1
1+
k+1 . 2
PAA
UFMG/ICEx/DCC
18
Prova (por induo matemtica): 1. Passo base: P (n0) = P (1): Para n0 = 1, 2 51 1 = 2 e a1 = 2. Logo, a frmula vlida para n = 1. 2. Passo indutivo: se a frmula verdadeira para n = k ento deve ser verdadeira para n = k + 1, i.e., P (k) ! P (k + 1).
UFMG/ICEx/DCC PAA
19
= 5 (2 5k 1) = 2 (5 5k 1) = 2 5k
UFMG/ICEx/DCC
PAA
20
UFMG/ICEx/DCC
PAA
21
Se puder ser mostrado que 2k + 2 < 2k+1 ento o predicado P (k + 1) verdadeiro. 2k + 2 < 2k+1 2 < 2k+1 2 < 2k (2 2 < 2k 1 < 2k Em particular, a inequao (1 < 2k
UFMG/ICEx/DCC PAA
? ? ? ?
2k 1) 2.
1)
vlida para k
3. Assim, P (k + 1) V.
22
Logo, a frmula vlida para n0 = 3. 2. Passo indutivo: se a frmula verdadeira para n = k ento deve ser verdadeira para n = k + 1, i.e., P (k) ! P (k + 1).
UFMG/ICEx/DCC
PAA
23
O primeiro termo divisvel por 3 (hiptese indutiva) e o segundo tambm. Como a soma de dois nmeros divisveis por 3 um nmero divisvel por 3, ento o predicado P (k + 1) V.
UFMG/ICEx/DCC
PAA
24
Prove que para todos os inteiros n 1, P (n): Qualquer regio quadrada de tamanho 2n 2n, com um quadrado removido, a regio restante pode ser preenchida com peas no formato L.
UFMG/ICEx/DCC
PAA
25
2. Passo indutivo: se a frmula verdadeira para n = k ento deve ser verdadeira para n = k + 1, i.e., P (k) ! P (k + 1).
UFMG/ICEx/DCC
PAA
26
UFMG/ICEx/DCC
PAA
27
UFMG/ICEx/DCC
PAA
28
UFMG/ICEx/DCC
PAA
29
b P (i )
Hipotese Indutiva
Inteiros
UFMG/ICEx/DCC
PAA
30
Prova (por induo matemtica): 1. Passo base: Para n = 1 e n = 2 a propriedade vlida j que a1 = 0 e a 2 = 2. 2. Passo indutivo: Vamos supor que ai par para todos inteiros i, 1 i < k.
[hiptese indutiva]
UFMG/ICEx/DCC
PAA
31
O termo abk/2c par pela hiptese indutiva j que k 3 e 1 bk/2c < k. Desta forma, 3 abk/2c par e 3 abk/2c + 2 tambm par, o que mostra que ak par.
UFMG/ICEx/DCC
PAA
32
UFMG/ICEx/DCC
PAA
33
1,
denida para valores de n que so potncias de 2. O objetivo encontrar um limite superior na notao O, onde o lado direito da desigualdade representa o pior caso.
UFMG/ICEx/DCC
PAA
34
UFMG/ICEx/DCC
PAA
35
Prova (por induo matemtica): 1. Passo base: T (n0 ) = T (2): Para n0 = 2, T (2) = 1 f (2) = 4, e o passo base V. 2. Passo indutivo: se a recorrncia verdadeira para n ento deve ser verdadeira para 2n, i.e., T (n) ! T (2n) (lembre-se que n uma potncia de 2; conseqentemente o nmero seguinte a n 2n). Reescrevendo o passo indutivo temos: Predicado(n) ! Predicado(2n) (T (n) f (n)) ! (T (2n) f (2n)) T (2n) 2T (n) + 2n 1 2n2 + 2n 1 + 2n 2 2n + 2n 2n2
?
36
UFMG/ICEx/DCC
PAA
37
Prova (por induo matemtica): 1. Passo base: T (n0 ) = T (2): Para n0 = 2, T (2) = 1 f (2) = 2c, e o passo base V. 2. Passo indutivo: se a recorrncia verdadeira para n ento deve ser verdadeira para 2n, i.e., T (n) ! T (2n). Reescrevendo o passo indutivo temos: Predicado(n) ! Predicado(2n) (T (n) f (n)) ! (T (2n) f (2n)) (T (n) cn)) ! (T (2n) 2cn) T (2n)
UFMG/ICEx/DCC
2T (n) + 2n 1 [Denio da recorrncia] 2cn + 2n 1 [Pela hiptese indutiva podemos substituir T (n)] 2cn + (2n 1) 2cn + 2n 1 > 2cn [A concluso (T (2n) 2cn) no vlida]
PAA
38
UFMG/ICEx/DCC
PAA
39
UFMG/ICEx/DCC
PAA
40
Prova (por induo matemtica): 1. Passo base: T (n0 ) = T (2): Para n0 = 2, T (2) = 1 f (2) = 2 log 2, e o passo base V. 2. Passo indutivo: se a recorrncia verdadeira para n ento deve ser verdadeira para 2n, i.e., T (n) ! T (2n). Reescrevendo o passo indutivo temos: Predicado(n) ! Predicado(2n) (T (n) f (n)) ! (T (2n) f (2n)) (T (n) n log n)) ! (T (2n) 2n log 2n) T (2n) 2T (n) + 2n 1 2n log n + 2n 1 2n log n + 2n 2n log n + 2n
PAA
UFMG/ICEx/DCC
UFMG/ICEx/DCC
PAA
42
UFMG/ICEx/DCC
PAA
43
Recursividade
Um procedimento que chama a si mesmo, direta ou indiretamente, dito ser recursivo. Recursividade permite descrever algoritmos de forma mais clara e concisa, especialmente problemas recursivos por natureza ou que utilizam estruturas recursivas. Por exemplo, rvore binria de pesquisa: Todos os registros com chaves menores esto na sub-rvore esquerda; Todos os registros com chaves maiores esto na sub-rvore direita.
UFMG/ICEx/DCC
PAA
44
Recursividade
Algoritmo para percorrer todos os registros em ordem de caminhamento central: 1. Caminha na sub-rvore esquerda na ordem central; 2. Visita a raiz; 3. Caminha na sub-rvore direita na ordem central. No caminhamento central, os ns so visitados em ordem lexicogrca das chaves.
C ENTRAL(p) 1 if p 6= nil 2 then C ENTRAL(p".esq ) 3 Visita n 4 C ENTRAL(p".dir )
UFMG/ICEx/DCC
PAA
45
Implementao de recursividade
Usa-se uma pilha para armazenar os dados usados em cada chamada de um procedimento que ainda no terminou. Todos os dados no globais vo para a pilha, registrando o estado corrente da computao. Quando uma ativao anterior prossegue, os dados da pilha so recuperados. No caso do caminhamento central: Para cada chamada recursiva, o valor de p e o endereo de retorno da chamada recursiva so armazenados na pilha. Quando encontra p=nil o procedimento retorna para quem chamou utilizando o endereo de retorno que est no topo da pilha.
UFMG/ICEx/DCC
PAA
46
47
necessrio mostrar que o nvel mais profundo de recurso nito, e tambm possa ser mantido pequeno, pois cada ativao recursiva usa uma parcela de memria para acomodar as variveis.
UFMG/ICEx/DCC
PAA
48
UFMG/ICEx/DCC
PAA
49
8n ) n ],
2.
1 fn = p [ n 5
onde
n F IBONACCI R EC(n
PAA
1) + F IBONACCI R EC(n
2)
50
UFMG/ICEx/DCC
PAA
51
O programa tem complexidades de tempo O(n) e de espao O(1). Deve-se evitar recursividade quando existe uma soluo iterativa. Comparao das verses recursiva e iterativa:
n Recursiva Iterativa
UFMG/ICEx/DCC
20 1s 1/3 ms
30 2 min 1/2 ms
50 21 dias 3/4 ms
PAA
UFMG/ICEx/DCC
PAA
53
UFMG/ICEx/DCC
PAA
54
sk s0 s1
= = =
sk 1 + sk 2 1 2
UFMG/ICEx/DCC
PAA
55
M (n) =
UFMG/ICEx/DCC
PAA
56
A(1, 2) = A(0, A(1, 1)) = A(0, A(0, A(1, 0))) = A(0, A(0, A(0, 1))) = A(0, A(0, 2)) = A(0, 3) = 4
UFMG/ICEx/DCC
PAA
57
UFMG/ICEx/DCC
PAA
58
Os valores da funo de Ackermann crescem muito rapidamente: A(4, 2) maior que o nmero de partculas do universo elevado a potncia 200. A(5, 2) no pode ser escrito como uma expanso decimal no universo fsico. Alm da linha 4 e coluna 1, os valores s podem ser expressos usando a prpria notao da funo.
UFMG/ICEx/DCC PAA
59
1:
se n = 1,
G(2) = 1 + G(1) = 1 + 1 = 2 G(3) = G(8) = 1 + G(4) = 1 + (1 + G(2)) = 1 + (1 + 2) = 4 G(4) = 1 + G(2) = 1 + 2 = 3 G(5) = G(14) = 1 + G(7) = 1 + G(20) = 1 + (1 + G(10)) = 1 + (1 + (1 + G(5))) = 3 + G(5)
UFMG/ICEx/DCC PAA
60
1:
se n = 1,
A funo H bem denida? No se sabe! A funo computvel para todos inteiros n, 1 n < 109.
UFMG/ICEx/DCC
PAA
61
UFMG/ICEx/DCC
PAA
62
UFMG/ICEx/DCC
PAA
63
64
UFMG/ICEx/DCC
PAA
65
UFMG/ICEx/DCC
PAA
66
2Dir e 1Cima
1Dir e 2Cima
1Esq e 2Cima
2Esq e 1Cima
5 6 7
2Esq e 1Baixo
1Esq e 2Baixo
1Dir e 2Baixo
2Dir e 1Baixo
UFMG/ICEx/DCC
PAA
67
1 2 3 4 5 6 7 8 9 10 11
Contadores Tabuleiro de n n Indica se achou uma soluo Movimentos identicados por um n Existem oito movimentos possveis Conjunto de movimentos Movimentos na horizontal Movimentos na vertical Inicializa tabuleiro
Escolhe uma casa inicial do tabuleiro Tenta o passeio usando backtracking Achou uma soluo?
UFMG/ICEx/DCC
PAA
68
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
UFMG/ICEx/DCC
PAA
69
UFMG/ICEx/DCC
PAA
70
UFMG/ICEx/DCC
PAA
71
72
Pede-se: Determine o maior e o menor elementos desse vetor usando diviso e conquista; Determine o custo (nmero de comparaes) para achar esses dois elementos supondo que A possui n elementos.
UFMG/ICEx/DCC
PAA
73
74
UFMG/ICEx/DCC
PAA
75
2 1
= = . . . = = = = =
2i 2i
+ 2i 1 + 2i
1 1
+ 2i
2 i 1 + 2i 1 + 2 i 2 + . . . + 23 2 i 1 + 2i 1 + 2 i 2 + . . . + 23 + 22 2i 1 + 2 i 1 + 2 i 2 + . . . + 2 3 + 2 2 + 2 Pi 1 k i 1 2 + k=1 2 = 2i 1 + 2i 2 n n +n 2= 3 2. 2 2
76
UFMG/ICEx/DCC
PAA
77
UFMG/ICEx/DCC
PAA
78
UFMG/ICEx/DCC
PAA
79
UFMG/ICEx/DCC
PAA
80
UFMG/ICEx/DCC
PAA
81
82
+
Bits p e g
x1 y1 t1
x2 y2 t2
xn yn tn
UFMG/ICEx/DCC
PAA
83
Expresses correspondentes: s = xy + xy A soma s s 1 quando apenas uma das entradas 1. t = xy + x y Assumindo que vem 1, a soma t s ser 1 quando as duas entradas forem idnticas. p=x+y Assumindo que veio 1, tambm ir 1 quando uma das entradas ou ambas forem 1. g = xy O bit de vai 1 s ser 1 quando as duas entradas forem 1.
UFMG/ICEx/DCC PAA
84
1-adder
g p s t
UFMG/ICEx/DCC
PAA
85
UFMG/ICEx/DCC
PAA
86
UFMG/ICEx/DCC
PAA
87
UFMG/ICEx/DCC
PAA
88
UFMG/ICEx/DCC
PAA
89
UFMG/ICEx/DCC
PAA
90
UFMG/ICEx/DCC
PAA
91
Essas expresses podem ser calculadas por circuitos de no mximo trs nveis. O exemplo abaixo para ti:
i = 1, 2, . . . , n i = 1, 2, . . . , n
UFMG/ICEx/DCC
PAA
92
1-adder
1-adder
1-adder
1-adder
g p s t
g p s t
g p s t
g p s t
FIX
g p s1 t1 s2 t2 g p
FIX
s1 t1 s2 t2
FIX
g p
UFMG/ICEx/DCC PAA
s1 t1 s2 t2
s3 t3 s4 t4
93
1-adder
1-adder
1-adder
1-adder
g p s t 0 1 1 0
g p s t 1 1 0 1
g p s t 0 1 1 0
g p s t 1 1 0 1
FIX 1 1
g p 1 1
FIX 0 0
s1 t1 s2 t2 0 0 0 1
1 1
g p 1 1
0 0 0 1
s1 t1 s2 t2 0 0
FIX 11 g p
UFMG/ICEx/DCC PAA
s1
1 s2
s3
s4
0
94
UFMG/ICEx/DCC
PAA
95
96
UFMG/ICEx/DCC
PAA
97
Balanceamento
No projeto de algoritmos, importante procurar sempre manter o balanceamento na sub-diviso de um problema em partes menores. Diviso e conquista no a nica tcnica em que balanceamento til. Considere o seguinte exemplo de ordenao:
E XEMPLO D E O RDENAO(n) 1 for i = 1. .n 1 do 2 Selecione o menor elemento de A[i. .n] e troque-o com o elemento A[i].
Inicialmente o menor elemento de A[1. .n] trocado com o elemento A[1]. O processo repetido para as seqncias n 1, n 2, . . ., 2, com os n 1, n 2, . . ., 2 elementos, respectivamente, sendo que em cada passo o menor elemento trocado com o elemento A[i].
UFMG/ICEx/DCC
PAA
98
para o nmero de comparaes entre elementos. Substituindo: T (n) = T (n 1) + n T (n 1) = T (n 2) + n . . . T (2) = T (1) + 1 e adicionando lado a lado, obtemos: T (n) = T (1) + 1 + 2 + + n Logo, o algoritmo O(n2).
UFMG/ICEx/DCC PAA
1 2
1=
n(n 2
1)
99
UFMG/ICEx/DCC
PAA
100
UFMG/ICEx/DCC
PAA
101
UFMG/ICEx/DCC
PAA
102
1 2 3 4 5
Considere n como sendo uma potncia de 2. Merge(A, i, m, j ) recebe duas seqncias ordenadas A[i..m] e A[(m + 1)..j ] e produz uma outra seqncia ordenada dos elementos de A[i..m] e A[m + 1..j ]. Como A[i..m] e A[m + 1..j ] esto ordenados, Merge requer no mximo n 1 comparaes.
Merge seleciona repetidamente o menor dentre os menores elementos restantes em A[i..m] e A[m + 1..j ]. Caso empate, retira de qualquer uma delas.
UFMG/ICEx/DCC
PAA
103
Anlise do Mergesort
Na contagem de comparaes, o comportamento do Mergesort pode ser representado por: T (n) = 2T ( n 2) + n T (1) = 0. No caso dessa equao de recorrncia sabemos que o custo (veja a resoluo desta equao na parte de induo ou usando o Teorema Mestre): T (n) = n log n Logo, o algoritmo O(n log n). n + 1. 1,
UFMG/ICEx/DCC
PAA
104
UFMG/ICEx/DCC
PAA
105
Programao dinmica
Programao no est relacionado com um programa de computador. A palavra est relacionada com um mtodo de soluo baseado em tabela. Programao dinmica (PD) Diviso-e-conquista (DeC): DeC quebra o problema em sub-problemas menores. PD resolve todos os sub-problemas menores mas somente reusa as solues timas.
UFMG/ICEx/DCC
PAA
106
Programao dinmica
Quando
X
Tamanhos dos sub-problemas = O (n)
provvel que o algoritmo recursivo tenha complexidade polinomial. Quando a diviso de um problema de tamanho n resulta em provvel que o algoritmo recursivo tenha complexidade exponencial. Nesse caso, a tcnica de programao dinmica pode levar a um algoritmo mais eciente. A programao dinmica calcula a soluo para todos os sub-problemas, partindo dos sub-problemas menores para os maiores, armazenando os resultados em uma tabela. A vantagem que uma vez que um sub-problema resolvido, a resposta armazenada em uma tabela e nunca mais recalculado.
UFMG/ICEx/DCC PAA
n Sub-problemas Tamanho n
1 cada um
107
onde Mi uma matriz com di 1 linhas e di colunas, 2 i n. Isto server para dizer apenas que a matriz Mi possui uma quantidade de linhas igual a quantidade de colunas de Mi 1 (di 1) e uma quantidade de colunas dada por di. A ordem da multiplicao pode ter um efeito enorme no nmero total de operaes de adio e multiplicao necessrias para obter M . Considere o produto de uma matriz p q por outra matriz q r cujo algoritmo requer O(pqr) operaes. Considere o produto onde as dimenses de cada matriz aparecem entre colchetes.
UFMG/ICEx/DCC PAA
108
Tentar todas as ordens possveis para minimizar o nmero de operaes f (n) exponencial em n, onde f (n) 2n 2 . Usando programao dinmica possvel obter um algoritmo O(n3 ).
UFMG/ICEx/DCC PAA
109
mik representa o custo mnimo para calcular M 0 = Mi Mi+1 Mk . mk+1,j representa o custo mnimo para calcular M 00 = Mk+1 Mk+2 Mj . di 1dk dj representa o custo de multiplicar M 0[di 1, dk ] por M 00[dk , dj ]. mij , j > i representa o custo mnimo de todos os valores possveis de k entre i e j 1, da soma dos trs termos.
UFMG/ICEx/DCC PAA
110
UFMG/ICEx/DCC
PAA
111
1 2 3 4 5 6 7 8 9 10 11
A execuo de AVALIA M ULT M ATRIZES obtm o custo mnimo para multiplicar as n matrizes, assumindo que so necessrias pqr operaes para multiplicar uma matriz p q por outra matriz q r.
UFMG/ICEx/DCC PAA
112
10
0
20
1
50
2
1
3
100
4
m44 = 0
m13 = 1.200
M 1 (M 2 M 3 )
m24 = 3.000
(M 2 M 3 ) M 4
m14 = 2.200
(M1 (M2 M3 )) M4
UFMG/ICEx/DCC
PAA
113
UFMG/ICEx/DCC
PAA
114
UFMG/ICEx/DCC
PAA
115
UFMG/ICEx/DCC
PAA
116
UFMG/ICEx/DCC
PAA
117
Algoritmos gulosos
Aplicado a problemas de otimizao. Seja o algoritmo para encontrar o caminho mais curto entre dois vrtices de um grafo: Escolhe a aresta que parece mais promissora em qualquer instante. Assim, independente do que possa acontecer mais tarde, nunca reconsidera a deciso. no necessita avaliar alternativas, ou usar procedimentos sosticados para desfazer decises tomadas previamente.
UFMG/ICEx/DCC
PAA
118
UFMG/ICEx/DCC
PAA
119
120
Inicialmente, o conjunto S de candidatos escolhidos est vazio (linha 1). A cada passo, testa se o aumento de S constitui uma soluo e ainda existem candidatos a serem avaliados (condio linha 2). O melhor candidato restante ainda no tentado considerado e removido de C (linhas 3 e 4). O critrio de escolha ditado pela funo de seleo (linha 3). Se o conjunto aumentado de candidatos se torna vivel, o candidato adicionado ao conjunto S de candidatos escolhidos. Caso contrrio ;e rejeitado (linhas 5 e 6). Ao nal do processo, testa se h uma soluo (linha 7) que retornada (linha 8) ou no (linha 9).
UFMG/ICEx/DCC
PAA
121
UFMG/ICEx/DCC
PAA
122
UFMG/ICEx/DCC
PAA
123
2 2
1 2
UFMG/ICEx/DCC
PAA
124
Grafo conexo
Um grafo conexo se, para cada par de vrtices v e w, existir um caminho de v para w. Observaes: Se G no for conexo ele no possui nenhuma rvore geradora, muito menos uma que seja mnima. Neste caso ele teria uma oresta geradora. Para simplicar a apresentao do algoritmo para rvore geradora mnima, vamos assumir que G conexo. fcil estender o algoritmo (e sua justicativa) para determinar uma oresta de rvores geradoras mnimas.
UFMG/ICEx/DCC
PAA
125
UFMG/ICEx/DCC
PAA
126
UFMG/ICEx/DCC
PAA
127
Algoritmo de DijkstraPrim
Idia bsica: Tomando como vrtice inicial A, crie uma la de prioridades classicada pelos pesos das arestas conectando A. Repita o processo at que todos os vrtices tenham sido visitados.
UFMG/ICEx/DCC
PAA
128
UFMG/ICEx/DCC
PAA
129
UFMG/ICEx/DCC
PAA
130
UFMG/ICEx/DCC
PAA
131
Sub-estrutura tima
Um problema exibe sub-estrutura tima se uma soluo tima para o problema formada por solues timas para os sub-problemas. Tcnicas de escolha gulosa e programao dinmica possuem essa caracterstica.
UFMG/ICEx/DCC
PAA
132
UFMG/ICEx/DCC
PAA
133
UFMG/ICEx/DCC
PAA
134
UFMG/ICEx/DCC
PAA
135
wj com
Problema fracionrio: Considere uma carga que pesa no mximo W com n itens. Remova um peso w do item j da carga (especco mas genrico). Carga restante deve ser a mais valiosa pesando no mximo W w com n 1 itens mais o peso wj w do item j .
UFMG/ICEx/DCC
PAA
136
137
50 30 20 10
$60 $100 $120 Mochila
Item 1 2 3
Peso 10 20 30
V/P 6 5 4
UFMG/ICEx/DCC
PAA
138
30 $120
+
Solues possveis:
20 $100
+ 10 $60 = $160
30 $120
+ 10 $60 = $180
# 1 2 3
20 $100
= $220
Soluo 2 a gulosa.
UFMG/ICEx/DCC
PAA
139
Neste caso deve-se comparar a soluo do sub-problema quando: Item includo na soluo Item excludo da soluo Passam a existir vrios sub-problemas Programao dinmica passa a ser a tcnica adequada
UFMG/ICEx/DCC
PAA
140
20 $80 30
+
Item 1 2 3 Peso 10 20 30 Valor 60 100 80 Frao 1 1 2/3
20 $100
+ 10 $60 = $240
UFMG/ICEx/DCC
PAA
141
Algoritmos aproximados
Problemas que somente possuem algoritmos exponenciais para resolv-los so considerados difceis. Problemas considerados intratveis ou difceis so muito comuns, tais como: Problema do caixeiro viajante cuja complexidade de tempo O(n!). Diante de um problema difcil comum remover a exigncia de que o algoritmo tenha sempre que obter a soluo tima. Neste caso procuramos por algoritmos ecientes que no garantem obter a soluo tima, mas uma que seja a mais prxima possvel da soluo tima.
UFMG/ICEx/DCC
PAA
142
UFMG/ICEx/DCC
PAA
143