Algoritmos e complexidade Notas de aula - Arquivo Escolar
Algoritmos e complexidade Notas de aula - Arquivo Escolar Algoritmos e complexidade Notas de aula - Arquivo Escolar
4. Algoritmos gulosos 1 V ′ := {v} para um v ∈ V 2 ET := ∅ 3 while V ′ = V do 4 e s c o l h e e = {u, v} com custo mínimo 5 e n t r e V ′ e V \ V ′ (com u ∈ V ′ ) 6 V ′ := V ′ ∪ {v} 7 ET := ET ∪ {e} 8 end while AEM: Algoritmo de Kruskal Algoritmo 4.3 (AEM-Kruskal) Entrada Um grafo conexo não-orientado G = (V, EG) com pesos c : VG → R + Saída Uma árvore T = (V, ET ) com custo c(e) mínimo. e∈ET 1 ET := ∅ 2 while (V, ET ) não é conexo do 3 e s c o l h a e com custo mínimo que não produz c í c l o 4 ET := ET ∪ {e} 5 end while Exemplo 4.3 Resultado dos algoritmos de Prim e Kruskal para Polinésia Francesa: O mesmo! ♦ 82
Implementação do algoritmo de Prim 4.2. Algoritmos em grafos • Problema: Como manter a informação sobre a distância mínima de forma eficiente? • Mantenha uma distância do conjunto V ′ para cada nó em V \ V ′ . • Nós que não são acessíveis em um passo têm distância ∞. • Caso um novo nó seja selecionado: atualiza as distâncias. Implementação do algoritmo de Prim • Estrutura de dados adequada: – Fila de prioridade Q de pares (e, v) (chave e elemento). – Operação Q. min() remove e retorna (e, c) com c mínimo. – Operação Q.atualiza(e, c ′ ) modifica a chave de e para v ′ caso v ′ é menor que a chave atual. • Ambas operações podem ser implementadas com custo O(log n). AEM: Algoritmo de Prim Algoritmo 4.4 (AEM-Prim) Entrada Um grafo conexo não-orientado G = (V, EG) com pesos c : VG → R + Saída Uma árvore T = (V, ET ) com custo c(e) mínimo. e∈ET 1 ET := ∅ 2 Q := {((v, u), c(v, u)) | u ∈ N(v)} { nós alcancáveis } 3 Q := Q ∪ {((u, u), ∞) | u ∈ V \ N(v) \ {v}} { nós restantes } 4 while Q = ∅ do 5 ((u, v), c) := Q. min() { (u, v) é arco mínimo } 6 for w ∈ N(v) do 7 Q.atualiza((v, w), c(v, w)) 8 end for 9 ET := ET ∪ {{u, v}} 10 end while 83
- Page 34 and 35: 2. Análise de complexidade • Par
- Page 36 and 37: 2. Análise de complexidade • Uma
- Page 38 and 39: 2. Análise de complexidade 1. Atri
- Page 40 and 41: 2. Análise de complexidade Exemplo
- Page 42 and 43: 2. Análise de complexidade Compone
- Page 44 and 45: 2. Análise de complexidade • Qua
- Page 46 and 47: 2. Análise de complexidade Algorit
- Page 48 and 49: 2. Análise de complexidade Algorit
- Page 50 and 51: 2. Análise de complexidade Tratabi
- Page 52 and 53: 2. Análise de complexidade A compl
- Page 54 and 55: 2. Análise de complexidade • Fre
- Page 56 and 57: 2. Análise de complexidade Exemplo
- 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 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 108 and 109: 5. Programação dinâmica 11 sol1
- 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
4. <strong>Algoritmos</strong> gulosos<br />
1 V ′ := {v} para um v ∈ V<br />
2 ET := ∅<br />
3 while V ′ = V do<br />
4 e s c o l h e e = {u, v} com custo mínimo<br />
5 e n t r e V ′ e V \ V ′ (com u ∈ V ′ )<br />
6 V ′ := V ′ ∪ {v}<br />
7 ET := ET ∪ {e}<br />
8 end while<br />
AEM: Algoritmo <strong>de</strong> Kruskal<br />
Algoritmo 4.3 (AEM-Kruskal)<br />
Entrada Um grafo conexo não-orientado G = (V, EG) com pesos c : VG →<br />
R +<br />
Saída Uma árvore T = (V, ET ) com custo <br />
c(e) mínimo.<br />
e∈ET<br />
1 ET := ∅<br />
2 while (V, ET ) não é conexo do<br />
3 e s c o l h a e com custo mínimo que não produz c í c l o<br />
4 ET := ET ∪ {e}<br />
5 end while<br />
Exemplo 4.3<br />
Resultado dos algoritmos <strong>de</strong> Prim e Kruskal para Polinésia Francesa:<br />
O mesmo! ♦<br />
82