Upload
phungduong
View
223
Download
0
Embed Size (px)
Citation preview
Ciência da Computação
GRAFOS
Aula 08 Árvore Geradora Mínima:
Algoritmos de Kruskal e Prim-Jarnik
Max Pereira
Árvore Geradora Mínima
Ciência da Computação - GRAFOS
Árvore Geradora (spanning tree) É um subconjunto de um grafo G que possui todos os vértices cobertos por um número mínimo possível de arestas. Dessa forma, uma árvore geradora nãotem ciclos e não pode ser desconexa. Por essa definição podemos chegar a conclusão de que todos os grafos conexos e não dirigidos têm pelo menos umaárvore geradora.
Árvore Geradora Mínima
Ciência da Computação - GRAFOS
Árvore Geradora (spanning tree) Um grafo completo não dirigido pode ter no máximo nn-2 árvores geradoras, onde n é o número de vértices.
Árvore Geradora Mínima
Ciência da Computação - GRAFOS
Árvore Geradora (spanning tree)
Propriedades:
Um grafo conexo G pode ter mais de uma árvore geradora; Todas as árvores possíveis do grafo G têm o mesmo número de arestas e
vértices; A árvore geradora não possui qualquer ciclo (loops); A remoção de uma aresta em uma árvore geradora fará com que o grafo
fique desconexo (a árvore geradora é minimamente conexa); A adição de uma aresta em uma árvore geradora criará um ciclo ou loop (a
árvore geradora é maximamente acíclica).
Árvore Geradora Mínima
Ciência da Computação - GRAFOS
Árvore Geradora (spanning tree)
Propriedades matemáticas:
Uma árvore geradora tem n-1 arestas, onde n é o número de vértices;
A partir de um grafo completo, removendo-se o máximo e – n + 1 arestas, podemos construir uma árvore geradora;
Um grafo completo pode ter mo máximo nn-2 árvores geradoras.
Árvore Geradora Mínima
Ciência da Computação - GRAFOS
Árvore Geradora Mínima (minimum spanning tree) Em um grafo valorado, uma árvore geradora minima é uma árvore geradora quepossui o menor custo entre todas as árvores possíveis no mesmo grafo. O custo de uma árvore geradora é a soma dos pesos de todas as arestas naárvore.
Árvore Geradora Mínima
Ciência da Computação - GRAFOS
Árvore Geradora Mínima (minimum spanning tree)
Como encontrar a árvore geradora de custo mínimo?
Árvore Geradora Mínima
Ciência da Computação - GRAFOS
Algoritmo de KruskalAuthor: Joseph B. KruskalJournal: Proc. Amer. Math. Soc. 7 (1956), 48-50
Árvore Geradora Mínima
Ciência da Computação - GRAFOS
Algoritmo de Kruskal
Procedimento:
1. Ordenar todas as arestas em ordem crescente de valores (pesos)2. Selecionar a menor aresta. Verificar se ela forma um ciclo na árvore
geradora. Se não for formado um ciclo, incluir a aresta. Caso contrário, descartá-la.
3. Repetir o passo 2 até obter (V – 1) arestas na árvore geradora.
Árvore Geradora Mínima
Ciência da Computação - GRAFOS
Algoritmo de Kruskal
O grafo contém 9 vértices e 14 arestas. Dessa forma, a árvore geradora mínima terá (9 – 1) = 8 arestas.
Árvore Geradora Mínima
Ciência da Computação - GRAFOS
Algoritmo de Kruskal
Depois da ordenação:
Valor Org Dst
Árvore Geradora Mínima
Ciência da Computação - GRAFOS
Algoritmo de Kruskal Valor Org Dst
Selecione a aresta (7, 6): Sem ciclo, inclui.
Árvore Geradora Mínima
Ciência da Computação - GRAFOS
Algoritmo de Kruskal Valor Org Dst
Selecione a aresta (8, 2): Sem ciclo, inclui.
Árvore Geradora Mínima
Ciência da Computação - GRAFOS
Algoritmo de Kruskal Valor Org Dst
Selecione a aresta (6, 5): Sem ciclo, inclui.
Árvore Geradora Mínima
Ciência da Computação - GRAFOS
Algoritmo de Kruskal Valor Org Dst
Selecione a aresta (0, 1): Sem ciclo, inclui.
Árvore Geradora Mínima
Ciência da Computação - GRAFOS
Algoritmo de Kruskal Valor Org Dst
Selecione a aresta (2, 5): Sem ciclo, inclui.
Árvore Geradora Mínima
Ciência da Computação - GRAFOS
Algoritmo de Kruskal Valor Org Dst
Selecione a aresta (8, 6): Ciclo! Descarta.
Árvore Geradora Mínima
Ciência da Computação - GRAFOS
Algoritmo de Kruskal Valor Org Dst
Selecione a aresta (2, 3): Sem ciclo, inclui.
Árvore Geradora Mínima
Ciência da Computação - GRAFOS
Algoritmo de Kruskal Valor Org Dst
Selecione a aresta (7, 8): Ciclo! Descarta.
Árvore Geradora Mínima
Ciência da Computação - GRAFOS
Algoritmo de Kruskal Valor Org Dst
Selecione a aresta (0, 7): Sem ciclo, inclui.
Árvore Geradora Mínima
Ciência da Computação - GRAFOS
Algoritmo de Kruskal Valor Org Dst
Selecione a aresta (1, 2): Ciclo! Descarta.
Árvore Geradora Mínima
Ciência da Computação - GRAFOS
Algoritmo de Kruskal Valor Org Dst
Selecione a aresta (3, 4): Sem ciclo, inclui.
Arestas = (V – 1)Para!
Árvore Geradora Mínima
Ciência da Computação - GRAFOS
Algoritmo de Prim-Jarnik
On a certain problem of minimization
Árvore Geradora Mínima
Ciência da Computação - GRAFOS
Algoritmo de Prim-Jarnik
Procedimento:
1. Criar um conjunto arvConj para manter os vértices já incluídos na árvoregeradora mínima.
2. Atribuir valores para todos os vértices no grafo. Inicializar todos os valorescomo “infinito”. Atribuir um valor zero para o primeiro vértice.
3. Enquanto o conjunto arvConj não estiver completo (todos os vértices)a) Selecionar um vértice u que não esteja no conjunto e tenha o menor
valor.b) Incluir o vértice u no conjunto arvConjc) Alterar o valor de todos os vértices adjacentes a u. Para cada vértice
adjacente v, se o valor da aresta u-v for menor do que o valor anterior de v, alterar o valor do vértice para o valor da aresta u-v.
Árvore Geradora Mínima
Ciência da Computação - GRAFOS
Algoritmo de Prim-Jarnik
O conjunto arvConj inicialmente está vazio e os valores atribuídos aos vértices são {0, , , ,, ,, }
Árvore Geradora Mínima
Ciência da Computação - GRAFOS
Algoritmo de Prim-Jarnik
Selecione o vértice com o menor valor e inclua no conjunto arvConj. Depois de incluir o vértice altere os valores dos vértices adjacentes 1 e 7. Os valores dos vertices são alterados para 4 e 8 respectivamente.
arvConj = {0}
Árvore Geradora Mínima
Ciência da Computação - GRAFOS
Algoritmo de Prim-Jarnik
Escolha o vértice com o menor valor e que ainda não esteja no conjuntoarvConj. O vértice 1 será escolhido e adicionado ao conjunto. Altere os valoresdos vertices adjacentes ao vértice 1. O valor do vértice 2 torna-se 8.
arvConj = {0, 1}
Árvore Geradora Mínima
Ciência da Computação - GRAFOS
Algoritmo de Prim-Jarnik
Aqui podemos escolher o vértice 7 ou o vértice 2. Vamos escolher o vértice 7. Altere os valores dos vértices adjacentes ao vértice 7. Os valores dos vértices 6 e 8 tornam-se 7 e 1 respectivamente.
arvConj = {0, 1, 7}
Árvore Geradora Mínima
Ciência da Computação - GRAFOS
Algoritmo de Prim-Jarnik
O vértice 6 será escolhido (menor valor e ainda não está no conjunto arvConj). Altera-se os valores dos adjacentes ao vértice 6. Os valores dos vertices 5 e 8 serão alterados.
arvConj = {0, 1, 7, 6}
Árvore Geradora Mínima
Ciência da Computação - GRAFOS
Algoritmo de Prim-Jarnik
Continuamos repetindo os passos até que todos os vértices estejam incluídos no conjunto arvConj. Finalmente teremos o seguinte grafo.