Grafos: componentes fortemente conexos, árvores geradoras mínimas

Documentos relacionados
Grafos: árvores geradoras mínimas. Graça Nunes

Sub-grafo. Árvore Geradora Mínima

Grafos parte 2. Percorrendo um grafo. Correção. Eficiência. Percorrendo um Grafo. Percorrendo um Grafo. Percorrendo um Grafo

Grafos. Exemplo de árvore geradora mínima. Notas. Notas. Notas. Notas. Árvores espalhadas mínimas. Como construir uma árvore geradora miníma

Grafos Parte 2. SCC-603 Algoritmos e Estruturas de Dados II. Profª. Rosane Minghim / Baseado em material de professores dos anos anteriores

Otimização em Grafos

Grafos parte 2* Algoritmos e Estruturas de Dados II SCC-203 Rosane 2010/2011. *Baseado em material de professores dos anos anteriores

Grafos Árvores Geradoras Mínimas

Árvore Geradora Mínima

Grafos: caminhos mínimos

Problema da Árvore Geradora Mínima (The Minimum Spanning Tree Problem-MST)

Prova Didática Grafos: Árvores Geradoras e Caminhos Mínimos, Análise de Complexidade

5COP096 TeoriadaComputação

GRAFOS Aula 08 Árvore Geradora Mínima: Algoritmos de Kruskal e Prim-Jarnik Max Pereira

Introdução à Teoria dos Grafos (MAC-5770) IME-USP Depto CC Profa. Yoshiko. Capítulo 3

ESTRUTURAS DE DADOS. prof. Alexandre César Muniz de Oliveira. 1. Introdução 2. Pilhas 3. Filas 4. Listas 5. Árvores 6. Ordenação 7. Busca 8.

Grafos: Busca. SCE-183 Algoritmos e Estruturas de Dados 2. Thiago A. S. Pardo Maria Cristina

Problema da Árvore Geradora Mínima

Grafos Caminhos mais Curtos

Análise de Algoritmos

Estruturas de Dados para Conjuntos Disjuntos: Union-find Letícia Rodrigues Bueno

Árvores: Conceitos Básicos e Árvore Geradora

Grafos Msc. Daniele Carvalho Oliveira. Doutoranda em Computação UFU Mestre em Computação - UFU Bacharel em Computação - UFJF 1

Algoritmos e Estruturas de Dados II Grafos conceitos gerais. Thiago A. S. Pardo Profa. M. Cristina Material de aula da Profa. Josiane M.

Estruturas de Dados. Grafos VIII: Árvores Geradoras Mínimas. Prof. Ricardo J. G. B. Campello

Estruturas de Dados Grafos

MATEMÁTICA DISCRETA PARA ENGENHARIA DE COMPUTAÇÃO

INF 1010 Estruturas de Dados Avançadas

Teoria dos Grafos Aula 5

Módulo 2 OTIMIZAÇÃO DE REDES

INF 1010 Estruturas de Dados Avançadas

Teoria dos Grafos. Árvores

Grafos: caminhos mínimos em Listas de Adjacência. Profa. Graça Nunes

Otimização em Grafos

Percursos em um grafo

Volmir Eugênio Wilhelm Departamento de Engenharia de Produção UFPR 45

Teoria dos Grafos Aula 6

Busca em Profundidade. Componentes Conexos. Grafos. Maria Adriana Vidigal de Lima. Fevereiro

Algoritmo de Dijkstra Estudo e Implementação

Algoritmo Floyd-Warshall. Problema dos caminhos mínimos entre todos os pares. Programação dinâmica

2 Definição do Problema

Projeto e Análise de Algoritmos. Método Guloso

Conceito Básicos da Teoria de Grafos

Grafos: Busca. Algoritmos e Estruturas de Dados 2. Graça Nunes

Algoritmos em Grafos

Percursos em um grafo

Cap. 2 Conceitos Básicos em Teoria dos Grafos

APOSTILA DE MÉTODO GULOSO

Teoria dos Grafos. Árvores Geradoras

Teorema 1 - Todo corte de arestas de um grafo conexo G contém pelo menos uma aresta em comum com qualquer árvore geradora de G. Exemplo 2 - Seja T:

Grafos Parte 1. Aleardo Manacero Jr.

MATEMÁTICA DISCRETA. Patrícia Ribeiro 2018/2019. Departamento de Matemática, ESTSetúbal 1 / 47

Árvores de Suporte de Custo Mínimo

Fábio Protti - UFF Loana T. Nogueira - UFF Sulamita Klein UFRJ

Teoria dos Grafos. Valeriano A. de Oliveira, Socorro Rangel, Silvio A. de Araujo. Capítulo 13: Árvores. Departamento de Matemática Aplicada

Algoritmos de aproximação - Problema do caixeiro viajante

Universidade Federal de Alfenas

AULA 13 PROJETO E ANÁLISE DE ALGORITMOS. Problema do caminho mais curto de uma única origem em grafos Karina Valdivia Delgado

Grafos - Introdução. Pedro Ribeiro 2014/2015 DCC/FCUP. Pedro Ribeiro (DCC/FCUP) Grafos - Introdução 2014/ / 32

Teoria dos Grafos. Edson Prestes

TGR BCC Representação Computacional de Grafos. Prof. Ricardo José Pfitscher

SCC603 Algoritmos e Estruturas de Dados II Prof.a Rosane Minghim 1o sem. 2013

INF 1010 Estruturas de Dados Avançadas

Abordagens para Resolução de Problemas

Departamento de Engenharia de Produção UFPR 57

Projeto e Análise de Algoritmos

Algoritmos em Grafos COM11087-Tópicos Especiais em Programação I

Teoria dos Grafos AULA 3

Árvores Árvores Geradoras de Custo Mínimo 0/16

Algoritmo de Prim Wikipédia, a enciclopédia livre

Teoria dos Grafos. Coloração de Vértices

Teoria dos Grafos Aula 8

INF1010 Lista de Exercícios 2

Teoria dos Grafos Aula 26

Teoria dos Grafos Caminhos. Profª. Alessandra Martins Coelho

MÓDULO 2 - OTIMIZAÇÃO DE REDES

Projeto e Análise de Algoritmos Aula 8: Algoritmos Gulosos (5)

Teoria dos Grafos. Edson Prestes

01 Grafos: parte 1 SCC0503 Algoritmos e Estruturas de Dados II

ESTRUTURAS DISCRETAS (INF 1631) GRAFOS. 1. O que é um grafo? Defina um grafo orientado. Defina um grafo não-orientado.

Circuitos Eulerianos Ciclos Hamiltonianos O Problema do Caixeiro Viajante CAMINHAMENTOS BASEADO EM TOWNSEND (1987), CAP. 7.

Teoria dos Grafos. Valeriano A. de Oliveira, Socorro Rangel, Silvio A. de Araujo. Departamento de Matemática Aplicada

8. Árvores. Fernando Silva DCC-FCUP. Estruturas de Dados. Fernando Silva (DCC-FCUP) 8. Árvores Estruturas de Dados 1 / 38

8. Árvores. Fernando Silva. Estruturas de Dados DCC-FCUP. Fernando Silva (DCC-FCUP) 8. Árvores Estruturas de Dados 1 / 38

Teoria dos Grafos. Edson Prestes

AULA 11 PROJETO E ANÁLISE DE ALGORITMOS. Conceitos básicos e representação de grafos Karina Valdivia Delgado

Teoria dos Grafos Aula 27

Análise e Síntese de Algoritmos. Algoritmos em Grafos CLRS, Cap. 22

Doutorado em Ciência da Computação. Algoritmos e Grafos. Raimundo Macêdo LaSiD/DCC/UFBA

Busca em Profundidade e em Largura

Problemas de Fluxo em Redes

Árvores UFES. Teoria dos Grafos. CC/EC/Mestrado

GRAFOS. Prof. André Backes. Como representar um conjunto de objetos e as suas relações?

IPRJ PROJETO E ANÁLISE DE ALGORITMOS LISTA DE EXERCÍCIOS 10

Algoritmo Aproximação. Prof. Anderson Almeida Ferreira [DPV]9.2 [ZIV]9.2.2 e 9.2.3

CONCEITOS BÁSICOS EM GRAFOS

15 - Coloração Considere cada um dos grafos abaixo:

Parte B Teoria dos Grafos

Transcrição:

Grafos: componentes fortemente conexos, árvores geradoras mínimas SCE-183 Algoritmos e Estruturas de Dados 2 Thiago A. S. Pardo Maria Cristina 1

Componentes fortemente conexos Um componente fortemente conectado de um grafo direcionado é um subconjunto máximo de vértices tal que, para todo par de vértices u e v, u e v são mutuamente alcançáveis 2

Componentes fortemente conexos Idéia básica Um grafo direcionado G e sua versão transposta T devem possuir os mesmos componentes fortemente conectados Grafo transposto Mesmos vértices Se há a aresta (u,v) em G, há (v,u) em T 3

Componentes fortemente conexos Exemplo: transpondo um grafo Os componentes fortemente conectados são os mesmos G T 4

Componentes fortemente conexos Algoritmo: uso da busca em profundidade 1. Busca em profundidade para determinar tempo de término de cada vértice no grafo original 2. Transposição do grafo 3. Busca em profundidade no grafo transposto a partir do vértice de maior tempo de término; se necessário, reinicia-se esse processo a partir do próximo vértice de maior tempo de término 4. Os vértices de cada árvore de busca em profundidade do grafo transposto formam os componentes fortemente conectados 5

Componentes fortemente conexos Busca em profundidade Busca em profundidade no grafo transposto Árvores com componentes 6

Componentes fortemente conexos Exercício: encontre os componentes fortemente conectados do grafo abaixo 2 5 1 6 3 4 7

Componentes fortemente conexos Implementação da sub-rotina para transpor um grafo 8

Componentes fortemente conexos Como alterar o algoritmo da busca em profundidade para identificar componentes fortemente conectados? Qual a complexidade de tempo desse algoritmo? 9

Sub-grafo Um sub-grafo G2(V2,E2) de um grafo G1(V1,E1) é um grafo tal que V2 está contido em V1 e E2 está contido em E1 b e c são sub-grafos de a 10

Sub-grafo induzido Se o sub-grafo G2 de G1 satisfaz: para quaisquer v, w pertencentes a V2, se (v,w) pertence a E1, então (v,w) também pertence a E2. Dessa forma, G2 é dito sub-grafo induzido pelo conjunto de vértices V2 b e c são sub-grafos de a, mas apenas c é sub-grafo induzido 11

Sub-grafo gerador Sub-grafo Gerador ou sub-grafo de espalhamento de um grafo G1(V1,E1) é um sub-grafo G2(V2,E2) de G1 tal que V1=V2. Quando o sub-grafo gerador é uma árvore, ele recebe o nome de árvore geradora (ou de espalhamento). b e c são sub-grafos geradores de a c é árvore geradora de a e b 12

Sub-grafo gerador de custo mínimo Formalmente Dado um grafo não orientado G(V,E) onde w: E + define os custos das arestas queremos encontrar um sub-grafo gerador conexo T de G tal que, para todo sub-grafo gerador conexo T de G et w( e) et w( e) 13

Árvore geradora mínima Claramente, o problema só tem solução se G é conexo A partir de agora, assumimos G conexo Também não é difícil ver que a solução para esse problema será sempre uma árvore Basta notar que T não terá ciclos pois, caso contrário, poderíamos obter um outro sub-grafo T, ainda conexo e com custo menor que o de T, removendo o ciclo! 14

Árvore geradora mínima Árvore Geradora (Spanning Tree) de um grafo G é um sub-grafo de G que contém todos os seus vértices e, ainda, é uma árvore Arvore Geradora Mínima (Minimum Spanning Tree, MST) é a árvore geradora de um grafo valorado cuja soma dos pesos associados às arestas é mínimo, i.e., é uma árvore geradora de custo mínimo 15

Árvore geradora mínima Exemplo 16

Porque é um problema interessante? Suponha que queremos construir estradas para interligar n cidades Cada estrada direta entre as cidades i e j tem um custo associado Nem todas as cidades precisam ser ligadas diretamente, desde que todas sejam acessíveis... Como determinar eficientemente quais estradas devem ser construídas de forma a minimizar o custo total de interligação das cidades? 17

Árvore geradora mínima Como encontrar a árvore geradora mínima de um grafo G? Algoritmo genérico Algoritmo de Prim Algoritmo de Kruskal 18

Árvore geradora mínima Algoritmo Genérico procedimento genérico(g) A = enquanto A não define uma árvore encontre uma aresta (u,v) segura para A A = A {(u,v)} retorna A G conexo, não direcionado, ponderado A conjunto de arestas Abordagem gulosa -> adiciona uma aresta segura a cada rodada Aresta é segura se mantém a condição de que, antes de cada iteração, A é uma árvore geradora mínima de um sub-conjunto de vértices 19

Árvore geradora mínima Alguns conceitos Um corte (V ; V-V ) de um grafo não direcionado G=(V;A) é uma partição de V Uma aresta (u,v) cruza o corte se um vértice pertence a V e o outro a V-V 20

Árvore geradora mínima Alguns conceitos 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 em relação a todas as arestas cruzando o corte é uma aresta leve 21

Árvore geradora mínima Exemplo Se S é uma árvore geradora mínima de um sub-grafo e há um corte (V ;V-V ) que respeita S, a aresta leve (u,v) é uma aresta segura para S 22

Algoritmo de Prim procedimento Prim(G) escolha um vértice s para iniciar a árvore enquanto há vértices que não estão na árvore selecione uma aresta segura insira a aresta e seu vértice na árvore Ponto importante do algoritmo: seleção de uma aresta segura 23

Algoritmo de Prim Exemplo: iniciando o algoritmo pelo vértice 0 24

Algoritmo de Prim 25

Algoritmo de Prim Árvore geradora mínima 26

Algoritmo de Prim Há mais de uma árvore geradora mínima para um mesmo grafo ou 27

Algoritmo de Prim Maneira mais eficiente de determinar a aresta segura Manter todas as arestas que ainda não estão na árvore em fila(s) de prioridade Prioridade é dada à aresta de menor peso adjacente a um vértice na árvore e outro fora dela Complexidade de temp: O( A log( V )) 28

Algoritmo de Kruskal Relembrando: uma floresta é um conjunto de árvores G 29

Algoritmo de Kruskal Mais eficiente que Prim em grafos esparsos Não inicia em nenhum vértice em particular Verifica se as arestas podem ou não pertencer à árvore, analisando-as em ordem crescente de custo Diferencial de Prim: podem haver conjuntos disjuntos As árvores que compõem a floresta são identificadas pelos conjuntos S i, que contém os vértices que a compõem Complexidade: O( A log( V )) Se o teste S p S q = for bem implementado Evitam-se ciclos 30

Algoritmo de Kruskal Basicamente, o algoritmo consiste na construção de uma árvore geradora a partir de uma floresta Estado inicial: corresponde à floresta formada por V árvores triviais (i.e., um só vértice cada) 31

Algoritmo de Kruskal procedimento Kruskal(G) definir conjuntos S j ={v j }, 1j V inserir as arestas de G em uma fila de prioridade F segundo o peso (ordem crescente) enquanto houver arestas na fila faça (v,w)=desenfileira(f) se vs p e ws q, S p S q = então S p =S p S q eliminar S q 32

Algoritmo de Kruskal: exemplo 33

Árvore geradora mínima Exercício: encontre uma árvore geradora mínima para o grafo abaixo utilizando o algoritmo de Prim e o de Kruskal 10 4 2 5 1 1 7 2 11 20 6 3 3 4 34

Árvore geradora mínima Implementação pode usar o campo Antecessor Por exemplo, no algoritmo de Prim No início do procedimento, a árvore geradora mínima é o conjunto {v}: v=raiz Ao final, a árvore é o conjunto {v, Antecessor[v]}: vv-{raiz} 35

Árvore geradora mínima Exercício em duplas para entregar Implementação em C de sub-rotina para encontrar uma árvore geradora mínima para um grafo (algoritmo de Prim ou de Kruskal) Decida como buscar as arestas seguras Lembre-se: essa busca deve ser eficiente! 36