Grafos Árvores Geradoras.

Slides:



Advertisements
Apresentações semelhantes
Grafos eulerianos 1.
Advertisements

Cortes (cut-sets)‏ 1.
Grafos Orientados (digrafos)
Planaridade 1.
Árvores 2010/1 Teoria dos Grafos (INF 5037/INF2781)
Árvores CC/EC/Mestrado Teoria dos Grafos ‏ 1.
2010/1 Teoria dos Grafos (INF 5037/INF2781) Grafos eulerianos.
Algoritmos em Grafos (Parte 2)
Antonio Dirceu Rabelo de Vasconcelos Filho
CAMINHAMENTO EM GRAFOS (CONTINUAÇÃO)
Teoria dos Grafos – Aula 2
Teoria dos Grafos Loana Tito Nogueira.
Celso C. Ribeiro Caroline T. Rocha
Fluxo em Redes Prof. Ricardo R. Santos.
Grafos – Parte 2 Projeto e Análise de Algoritmos Aline Vasconcelos
Exercícios PAA- Grafos
Exercícios PAA- Grafos
Cortes (cut-sets)‏ 2010/2 Teoria dos Grafos (INF 5037/INF2781)‏ 1.
Pontes Seja (G) o número de componentes conexas de G. Uma ponte é uma aresta a tal que (G - a) > (G)
Percursos em um grafo 2010/1 Teoria dos Grafos (INF 5037/INF2781)
UFES CC/EC/Mestrado Teoria dos Grafos Árvores. UFES CC/EC/Mestrado Teoria dos Grafos Árvores Grafo Acíclico: não possui ciclos.
Conectividade e Separabilidade
Algoritmo polinomial para geração de uma Árvore Geradora Mínima
Pesquisa em profundidade
Grafos Grafo G = (V, E) V — conjunto de vértices
Conexidade e Conectividade
Prof. M.Sc. Fábio Francisco da Costa Fontes Abril
Teoria dos Grafos – Aula 3 Árvores
Teoria dos Grafos Loana T. Nogueira Aula 5.
Árvores.
2002 LCG/UFRJ. All rights reserved. 1 Localização no Plano Claudio Esperança Paulo Roma.
Árvore Geradora de Peso Mínimo
Ronaldo Celso Messias Correia –
Árvore Geradora Mínima
Grafos Msc. Cintia Carvalho Oliveira Doutoranda em Computação – UFU
Buscas em Grafos Prof. André Renato 1º Semestre/2012
Grafos Msc. Cintia Carvalho Oliveira Doutoranda em Computação – UFU
Baseado em: The Algorithm Design Manual Steven S. Skiena
Algoritmos em Grafos.
Algoritmos em Grafos Conceitos principais Prof. André Renato
Teoria dos Grafos Caminhos e Noção de Grafos com pesos
Algoritmos em Grafos Árvores Geradoras Prof. André Renato
Exercícios PAA- Grafos
Operações com grafos União Exemplo
Grafos Msc. Cintia Carvalho Oliveira Doutoranda em Computação – UFU
Introdução e Busca Cega
Teoria dos Grafos Conectividade

Algoritmos Gulosos em Grafos
Conceitos básicos em grafos
ÁRVORES Def.: Um grafo é acíclico se não possui ciclos.
Disciplina Análise de Algoritmos BCC-UFU Profa. Sandra de Amo
Universidade Federal de Mato Grosso do Sul Departamento de Computação e Estatística Circuitos de Euler em Paralelo Universidade Federal de Mato Grosso.

Conexidade 1.
Disciplina Análise de Algoritmos Bacharelado em CC
Msc. Daniele Carvalho Oliveira
Katia S. Guimarães Busca em Grafos Katia S. Guimarães




Mestrado em Informática
Anjolina Grisi de Oliveira obs: muitos slides foram cedidos por Adolfo Almeida Duran (UFBA) 2007.
Celso C. Ribeiro Caroline T. Rocha
Grafos Anjolina Grisi de Oliveira 2005

Grafos Anjolina Grisi de Oliveira 2007
Árvores (introdução) Anjolina Grisi de Oliveira Obs: vários slides foram cedidos por Adolfo Almeida Duran (UFBA)
Transcrição da apresentação:

Grafos Árvores Geradoras

Subgrafo gerador O subgrafo gerador (ou de espalhamento) de um grafo G1(V1,E1) é um subgrafo G2(V2,E2) de G1 tal que V1=V2. Ou seja, G2 contém todos os vértices de G1 Quando o subgrafo gerador é uma árvore, ele recebe o nome de árvore geradora (ou de espalhamento – spanning tree). Centro de Informática - UFPE

Árvore geradora Uma árvore T é denominada árvore geradora de um grafo conexo G se T é um sub-grafo de G e contém todos os vértices de G Centro de Informática - UFPE

Subgrafo e Árvore geradora (b) e (c) são subgrafos geradores de (a) (c) é árvore geradora de (a) e (b) Centro de Informática - UFPE

Árvore geradora (outro exemplo) Centro de Informática - UFPE

Floresta geradora Se um grafo é desconexo, não podemos identificar nenhuma árvore geradora. Mas podemos identificar no mínimo uma floresta de árvores geradoras, uma para cada componente do grafo. Centro de Informática - UFPE

Exemplo de aplicação de árvore geradora A figura abaixo ilustra um conjunto de terras separadas por muros. Supondo que todas são cheias de água, como podemos esvaziar todas, furando um número mínimo de buracos nos muros? Centro de Informática - UFPE

Uma árvore geradora, é a solução Se cada terra e a área exterior formam o conjunto de vértices, e se cada muro separando duas áreas é representado por uma aresta, temos: Uma árvore geradora, é a solução Centro de Informática - UFPE

Um grafo simples é conexo se e somente se possui uma árvore geradora Teorema Um grafo simples é conexo se e somente se possui uma árvore geradora Prova: Se G (simples) possui uma árvore geradora então G é conexo Seja T a árvore geradora de G. T contem todos os nós de G. Existe um caminho em qualquer dois nós de T. Como T é subgrafo de G e contem todos os nós de G, existe um caminho entre quaisquer dois nós de G. Logo G é conexo Centro de Informática - UFPE

Prova: 2) Se G (simples) é conexo então ele possui uma árvore geradora. Se G é conexo e não é uma árvore, ele deve conter um circuito simples. Remova uma aresta de um desses circuitos simples. O subgrafo resultante dessa operação possui uma aresta a menos, mas contem todos os nós de G e ainda é conexo. Se esse subgrafo não é uma árvore, ele possui um circuito simples. Do mesmo modo, remova uma aresta desse circuito. Repita esse processo até que não haja mais circuitos. O resultado é uma árvore geradora de G. Centro de Informática - UFPE

Algoritmo baseado na prova do teorema visto Algoritmo para achar a árvore geradora Se G não contém nenhum ciclo ele já é a sua própria árvore geradora. Suponhamos agora que ele contém um ciclo. Tirando uma aresta desse ciclo resulta em um grafo ainda conexo. Continuando assim até que não tenha nenhum ciclo, o grafo obtido é um grafo conexo que é uma árvore. Algoritmo baseado na prova do teorema visto Centro de Informática - UFPE

Algoritmo para achar a árvore geradora O algoritmo baseado na prova do teorema não é eficiente, pois ele requer que circuitos simples sejam identificados. No lugar de construir árvores geradoras retirando arestas do grafo, vamos construí-las adicionando arestas sucessivamente. Podemos fazer isso de duas maneiras Fazendo busca em profundidade Busca em largura Centro de Informática - UFPE

Busca em profundidade para achar a árvore geradora (depth-first search) Arbitrariamente escolha um nó do grafo para a raiz. Construa um caminho começando por esse nó, adicionando arestas sucessivamente, onde cada nova aresta é incidente com o último nó do caminho e com um nó ainda não pertencente ao caminho Continue adicionando arestas a esse caminho para ir o mais longe possível. Se o caminho possui todos os nós do grafo, então o caminho é a árvore geradora do grafo. Caso contrário, retorne ao nó mais próximo de maneira que um novo caminho possa ser construído a partir desse nó e que contenha nós ainda não visitados. Esse processo continua até que todos os nós sejam incluídos na árvore geradora Centro de Informática - UFPE

Busca em profundidade para achar a árvore geradora (depth-first search) - Exemplo Backtracking Centro de Informática - UFPE

Busca em largura para achar a árvore geradora (breadth-first search) Arbitrariamente escolha um nó do grafo para a raiz. Adicione todas as arestas incidentes a esse nó Os novos nós adicionados se tornam os nós do nível 1 da árvore geradora Arbitrariamente, ordene os nós do nível 1 Seguindo essa ordem, acrescente cada aresta incidente com os nós do nível, desde que ela não forme um circuito simples. Arbitrariamente, ordene os filhos de cada nó do nível 1. Isso produz os nós do nível 2 Esse processo continua até que todos os nós sejam incluídos na árvore geradora Centro de Informática - UFPE

Busca em largura para achar a árvore geradora (bread-first search) - Exemplo 3 2 1 Centro de Informática - UFPE

Busca em árvores Na busca em profundidade, nós penetramos o mais profundamente possível na árvore, antes de partir para outro vértice 11 2 8 3 7 9 12 4 5 6 1 10 Por exemplo, temos a árvore rotulada onde os rótulos correspondem à ordem em que os vértices foram visitados pela busca em profundidade. Centro de Informática - UFPE

Árvores (Algoritmos)

Algoritmo de Prim A característica principal do algoritmo de Kruskal é que ele seleciona a melhor aresta sem se preocupar com a conexão com as arestas selecionadas antes. O resultado é uma proliferação de árvores que eventualmente se juntam para formar uma única árvore. Já que sabemos que no final temos que produzir uma árvore só, por que não tentar fazer com que uma árvore cresça naturalmente até a obtenção da árvore geradora mínima? Adolfo Duran - 2004 Teoria dos Grafos 19

Algoritmo de Prim Assim, a próxima aresta selecionada seria sempre uma que se conecta à arvore que já existe. Essa é a ideia do algoritmo de Prim. No início, o conjunto B contém um vértice arbitrário. A cada passo, o algoritmo considera todas as arestas que tocam B e seleciona a de menor peso. Depois, o algoritmo acrescenta a B o vértice ligado por essa aresta que não estava em B. O processo continua até que B contenha todos os vértices de G. Adolfo Duran - 2004 Teoria dos Grafos 20

Exemplo com o Algoritmo de Prim Começando, arbitrariamente, pelo vértice a Passo Aresta considerada Componentes Início - {a} 1 (b,a) {a,b} 2 (c,b) {a,b,c} 3 (d,a) {a,b,c,d} 4 (e,d) {a,b,c,d,e} 5 (g,d) {a,b,c,d,e,f} 6 (f,g) {a,b,c,d,e,f,g} Adolfo Duran - 2004 Teoria dos Grafos 21

Algoritmo de Prim Para implementar eficientemente esse algoritmo, utiliza-se uma matriz de adjacências A[1..n, 1..n], onde cada elemento indica a distância entre dois vértices. Caso dois vértices não sejam ligados por uma aresta o valor será . a b c d e f g  1 4 2 6 5 3 8 7 Adolfo Duran - 2004 Teoria dos Grafos 22