Algoritmos e complexidade Notas de aula - Arquivo Escolar
Algoritmos e complexidade Notas de aula - Arquivo Escolar Algoritmos e complexidade Notas de aula - Arquivo Escolar
5. Programação dinâmica 11 sol1 := mi,j−1 + 1 12 sol2 := mi−1,j + 1 13 mi,j := min(sol0, sol1, sol2) ; 14 end for 15 return mi,j Distância entre textos Valores armazenados na matriz M para o cálculo da distância entre ALTO e LOIROS -ALTO- LOIROS Distância entre textos · L O I R O S · 0 1 2 3 4 5 6 A 1 1 2 3 4 5 6 L 2 1 2 3 4 5 6 T 3 2 2 3 4 5 6 O 4 3 2 3 4 4 5 Algoritmo 5.6 (PD-distância) Entrada Dois strings s e t, e n e m, seus respectivos tamanhos medidos em número de caracteres. 106 Saída A distância mínima entre s e t e uma matriz P = (pi,j) que armazena a sequência de operações. Comentário O algoritmo usa uma matriz M = (mi,j) ∈ N (n+1)×(m+1) que armazena as distâncias mínimas mi,j entre os prefixos s[1 . . . i] e t[1 . . . j]. 1 PD− d i s t â n c i a ( s , t , n ,m):= 2 for i := 0, . . . , n do mi,0 = i; pi,0 := −1 3 for i := 1, . . . , m do m0,i = i; p0,i := −1
4 for i := 1, . . . , n do 5 for j := 1, . . . , m do 6 i f (si = tj ) then 7 sol0 = mi−1,j−1 8 else 9 sol0 = mi−1,j−1 + 1 10 end i f 11 sol1 := mi,j−1 + 1 12 sol2 := mi−1,j + 1 13 mi,j := min(sol0, sol1, sol2) ; 14 pi,j := min{i | soli = mij} 15 end for 16 return mi,j Reconstrução da Sequência de Operações 5.2. Comparação de sequências Algoritmo 5.7 (PD-operações) Entrada Uma matriz P = (pij) de tamanho n × m com marcação de operações, strings s, t, posições i e j. Saída Uma sequência a1, a2, ax de operações executadas. 1 PD−operações (P, s , t , i , j ):= 2 case 3 pi,j = −1 : 4 return 5 pi,j = 0 : 6 PD−operações (s ,t ,i − 1 ,j − 1) 7 p r i n t ( ’M’ ) 8 pi,j = 1 : 9 PD−operações (s ,t ,i ,j − 1) 10 p r i n t ( ’ I ’ ) 11 pi,j = 2 : 12 PD−operações (s ,t ,i − 1 ,j ) 13 p r i n t ( ’D’ ) 14 end case 107
- Page 58 and 59: 2. Análise de complexidade 1 i f l
- Page 60 and 61: 2. Análise de complexidade Novamen
- Page 62 and 63: 2. Análise de complexidade Logo te
- Page 64 and 65: 2. Análise de complexidade 7 for c
- Page 66 and 67: 2. Análise de complexidade Com iss
- Page 68 and 69: 2. Análise de complexidade funçã
- Page 70 and 71: 2. Análise de complexidade Algorit
- Page 72 and 73: 2. Análise de complexidade resolve
- Page 75: 3. Introdução Resolver problemas
- Page 78 and 79: 4. Algoritmos gulosos A abordagem g
- Page 80 and 81: 4. Algoritmos gulosos Do outro lado
- Page 82 and 83: 4. Algoritmos gulosos Aplicações
- Page 84 and 85: 4. Algoritmos gulosos 1 V ′ := {v
- Page 86 and 87: 4. Algoritmos gulosos Algoritmo de
- Page 88 and 89: 4. Algoritmos gulosos Implementaç
- Page 90 and 91: 4. Algoritmos gulosos Variação do
- Page 92 and 93: 4. Algoritmos gulosos • Como comp
- Page 94 and 95: 4. Algoritmos gulosos Proposição
- Page 96 and 97: 4. Algoritmos gulosos Resultados O
- Page 98 and 99: 5. Programação dinâmica É simpl
- Page 100 and 101: 5. Programação dinâmica soluçã
- Page 102 and 103: 5. Programação dinâmica Teorema:
- Page 104 and 105: 5. Programação dinâmica e calcul
- Page 106 and 107: 5. Programação dinâmica 5.2.2. S
- Page 110 and 111: 5. Programação dinâmica O algori
- Page 112 and 113: 5. Programação dinâmica Dependen
- Page 114 and 115: 5. Programação dinâmica Análise
- Page 116 and 117: 5. Programação dinâmica curto do
- Page 118 and 119: 5. Programação dinâmica Logo, po
- Page 120 and 121: 5. Programação dinâmica (começa
- Page 122 and 123: 5. Programação dinâmica Árvore
- Page 125 and 126: 6. Divisão e conquista 6.1. Introd
- Page 127 and 128: Recorrências simplificadas Formalm
- Page 129 and 130: 6.2. Resolver recorrências • Usa
- Page 131 and 132: 6.2. Resolver recorrências Para co
- Page 133 and 134: 6.2. Resolver recorrências O algor
- Page 135 and 136: • Prove por indução que T (n) =
- Page 137 and 138: Saída A potência a n . 1 i f n =
- Page 139 and 140: 3 Quicksort (l ,m − 1 ,a ) ; 4 Qu
- Page 141 and 142: 6.2. Resolver recorrências 1. Se f
- Page 143 and 144: 6.3. Algoritmos usando divisão e c
- Page 145 and 146: 6.3. Algoritmos usando divisão e c
- Page 147 and 148: 6.3. Algoritmos usando divisão e c
- Page 149 and 150: 6.3. Algoritmos usando divisão e c
- Page 151 and 152: unidade. Em total a avaliação pro
- Page 153: 3. T (n) = 3T (n/4) + n log n 4. T
- Page 156 and 157: 7. Árvores de busca, backtracking
4 for i := 1, . . . , n do<br />
5 for j := 1, . . . , m do<br />
6 i f (si = tj ) then<br />
7 sol0 = mi−1,j−1<br />
8 else<br />
9 sol0 = mi−1,j−1 + 1<br />
10 end i f<br />
11 sol1 := mi,j−1 + 1<br />
12 sol2 := mi−1,j + 1<br />
13 mi,j := min(sol0, sol1, sol2) ;<br />
14 pi,j := min{i | soli = mij}<br />
15 end for<br />
16 return mi,j<br />
Reconstrução da Sequência <strong>de</strong> Operações<br />
5.2. Comparação <strong>de</strong> sequências<br />
Algoritmo 5.7 (PD-operações)<br />
Entrada Uma matriz P = (pij) <strong>de</strong> tamanho n × m com marcação <strong>de</strong><br />
operações, strings s, t, posições i e j.<br />
Saída Uma sequência a1, a2, ax <strong>de</strong> operações executadas.<br />
1 PD−operações (P, s , t , i , j ):=<br />
2 case<br />
3 pi,j = −1 :<br />
4 return<br />
5 pi,j = 0 :<br />
6 PD−operações (s ,t ,i − 1 ,j − 1)<br />
7 p r i n t ( ’M’ )<br />
8 pi,j = 1 :<br />
9 PD−operações (s ,t ,i ,j − 1)<br />
10 p r i n t ( ’ I ’ )<br />
11 pi,j = 2 :<br />
12 PD−operações (s ,t ,i − 1 ,j )<br />
13 p r i n t ( ’D’ )<br />
14 end case<br />
107