5COP096 Teoria da Computação Teoria da Computação
Transcrição
5COP096 Teoria da Computação Teoria da Computação
Sylvio Barbon Jr – [email protected] 1 5COP096 – Teoria da Computação Aula 12 – Algoritmos em Grafos 5COP096 Teoria da Computação Aula 12 Prof. Dr. Sylvio Barbon Junior 5COP096 – Teoria da Computação Aula 12 – Algoritmos em Grafos Sumário - Árvore Geradora Mínima - Teorema pare reconhecer arestas seguras; - Algoritmo de Prim; - Algoritmo de Kruskal; - Caminhos Mais Curtos - Algoritmo de Dijkstra 5COP096 – Teoria da Computação Aula 12 – Algoritmos em Grafos Árvore Geradora Mínima - Exemplo tradicional: Rede de comunicação entre diversas cidades, sendo um grafo não direcionado. - É um arranjo de n-1 conexões, contando duas localidades cada. - Desafio é encontrar a menor quantidade de cabos. 5COP096 – Teoria da Computação Aula 12 – Algoritmos em Grafos Árvore Geradora Mínima - Modelagem: - G = (V, A): Grafo conectado, não direcionado. - V = cidades. - A = conjunto de possíveis conexões; - p(u,v): peso da aresta (u,v) ∈ A e custo total de cabo para conexão. - Solução: Encontrar um subconjunto T que conecta todos os vértices de G, cujo peso total é minimizado como: p (T ) = ∑ p(u, v) ( u ,v )∈T 5COP096 – Teoria da Computação Aula 12 – Algoritmos em Grafos Árvore Geradora Mínima - Como G’ = (V,T) é acíclico e conecta todos os vértices, T forma uma árvore geradora de G. - O “problema” para obtenção da árvore T é chamado de árvore geradora mínima (AGM) Exemplo: Árvore geradora mínima T cujo peso total é 12. T não é única, pode-se substituir a aresta (3, 5) pela aresta (2, 5) obtendo outra árvore geradora de custo 12. 5COP096 – Teoria da Computação Aula 12 – Algoritmos em Grafos Árvore Geradora Mínima - Uma estratégia GULOSA permite obter a AGM adicionando uma aresta de cada vez, vamos estudar os algoritmos guloso de Prim (1957) e Kruskal (1956). - Um algoritmo “Genérico” Guloso para obter a árvore geradora mínima, pode ser: 1 2 3 4 5 void GenericoAGM S = 0; while (S não constitui uma árvore geradora mínima) (u, v) = seleciona (A) ; if (aresta (u, v) é segura para S ) S = S + {(u, v)} return S ; - Um corte (V’, V − V’) de um grafo não direcionado G = (V,A) é uma partição de V . - Uma aresta (u, v) ∈ A cruza o corte (V’, V − V’) se um de seus vértices pertence a V’ e o outro vértice pertence a V − V’. 5COP096 – Teoria da Computação Aula 12 – Algoritmos em Grafos Árvore Geradora Mínima - Um corte respeita um conjunto S de arestas se não existirem arestas em S que o cruzem. - Uma aresta cruzando o corte que tenha custo mínimo sobre todas as arestas cruzando o corte é uma aresta leve. 5COP096 – Teoria da Computação Aula 12 – Algoritmos em Grafos Teorema para Reconhecer Arestas Seguras • Seja G = (V,A) um grafo conectado, não direcionado, com pesos p sobre as arestas V . • Seja S um subconjunto de V que está incluído em alguma AGM para G. • Seja (V 0, V − V 0) um corte qualquer que respeita S. • Seja (u, v) uma aresta leve cruzando (V’, V − V’). • Satisfeitas essas condições, a aresta (u, v) é uma aresta segura para S. 5COP096 – Teoria da Computação Aula 12 – Algoritmos em Grafos Algoritmo de Prim • O algoritmo de Prim para obter uma AGM pode ser derivado do algoritmo genérico. • O subconjunto S forma uma única árvore, e a aresta segura adicionada a S é sempre uma aresta de peso mínimo conectando a árvore a um vértice que não esteja na árvore. • A árvore começa por um vértice qualquer (no caso 0) e cresce até que “gere” todos os vértices em V . • A cada passo, uma aresta leve é adicionada à árvore S, conectando S a um vértice de GS = (V, S). • De acordo com o teorema anterior, quando o algoritmo termina, as arestas em S formam uma árvore geradora mínima.. • O tempo total para executar o algoritmo de Prim é O (|A| log |V |) 5COP096 – Teoria da Computação Aula 12 – Algoritmos em Grafos Algoritmo de Prim 5COP096 – Teoria da Computação Aula 12 – Algoritmos em Grafos Algoritmo de Kruskal • Pode ser derivado do algoritmo genérico. • S é uma floresta e a aresta segura adicionada a S é sempre uma aresta de menor peso que conecta dois componentes distintos. • Considera as arestas ordenadas pelo peso. • O tempo total para executar o algoritmo de Kruskal é O (|A| log |V |) 5COP096 – Teoria da Computação Aula 12 – Algoritmos em Grafos Algoritmo de Kruskal 5COP096 – Teoria da Computação Aula 12 – Algoritmos em Grafos Exercício Encontre a árvore geradora mínima para o seguinte grafo: 5COP096 – Teoria da Computação Aula 12 – Algoritmos em Grafos Referências Ziviani, Nivio. Projeto de algoritmos: com implementações em Java e C. Thomson Learning, 2007. Leiserson, Charles E., Ronald L. Rivest, and Clifford Stein. Introduction to algorithms. Ed. Thomas H. Cormen. The MIT press, 2001. 5COP096 – Teoria da Computação Aula 12 – Algoritmos em Grafos Solução do exercício
Documentos relacionados
Problema da Árvore Geradora Mínima
Prova Seja T uma árvore geradora mínima tal que A pertence T, e assuma que T não contém a aresta leve (u,v). A aresta (u,v) forma um ciclo com as arestas pertencentes ao caminho p de u para v em T....
Leia maisEMENTA BIBLIOGRAFIA 5. BALAKRISHNAN, V. K. Schaum`s
O aluno que faltar a uma das duas provas terá direito a uma avaliação alternativa, denominada segunda chamada, versando sobre todos os tópicos abordados no curso, e cuja data também é agendada entr...
Leia mais