Teoria dos Grafos Aula 6

Documentos relacionados
Teoria dos Grafos Aula 5

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

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

BCC204 - Teoria dos Grafos

Pesquisa em Grafos. Pedro Ribeiro 2014/2015 DCC/FCUP. Pedro Ribeiro (DCC/FCUP) Pesquisa em Grafos 2014/ / 33

GRAFOS Aula 05 Algoritmos de percurso: busca em largura e profundidade Max Pereira

Teoria dos Grafos Aula 8

INF 1010 Estruturas de Dados Avançadas

Grafos: algoritmos de busca

Estruturas de Dados Grafos

CT-234. Estruturas de Dados, Análise de Algoritmos e Complexidade Estrutural. Carlos Alberto Alonso Sanches

Teoria dos Grafos Aula 2

INF 1010 Estruturas de Dados Avançadas

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

Aula 09. Percurso em grafo

Teoria dos Grafos Aula 2

Teoria dos Grafos Aula 8

GRAFOS BUSCAS E MENOR CAMINHO. Prof. André Backes

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

03 Grafos: percurso, ponderação e caminhos SCC0503 Algoritmos e Estruturas de Dados II

Busca em Largura. Adaptado de Humberto C. B. Oliveira

Pesquisa em Grafos. Pedro Ribeiro 2014/2015 DCC/FCUP. Pedro Ribeiro (DCC/FCUP) Pesquisa em Grafos 2014/ / 48

Grafos IFRN. Prof. Robinson Alves

BCC402 Algoritmos e Programação Avançada. Prof. Marco Antonio M. Carvalho Prof. Túlio Toffolo 2012/1

CES-11. Algoritmos e Estruturas de Dados. Carlos Alberto Alonso Sanches

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

Algoritmos e Estruturas de Dados

Teoria dos Grafos Aula 3

Busca em Profundidade. Busca em Grafos. Busca em Grafos. Busca em Grafos. Busca em Grafos. Os objetivos da busca são: Aplicações???

Pesquisa em Grafos. Pedro Ribeiro 2016/2017 DCC/FCUP. Pedro Ribeiro (DCC/FCUP) Pesquisa em Grafos 2016/ / 52

Departamento de Engenharia de Produção UFPR 57

Grafos representação e aplicações. Prof. Guilherme Tomaschewski Netto

Algoritmos e Estruturas de Dados II

Teoria dos Grafos Aula 8

Algoritmos em Grafos

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

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

não descobertos descobertos explorados descoberta cruzamento

MATEMÁTICA DISCRETA PARA ENGENHARIA DE COMPUTAÇÃO

Estrutura de Dados e Algoritmos e Programação e Computadores II. Aula 10: Introdução aos Grafos

Algoritmos em Grafos

PAA-DCC-UFAM. Grafos. Universidade Federal do Amazonas Departamento de Eletrônica e Computação

AED2 - Aula 22 Busca em largura, cálculo de distâncias

Busca em largura. Algoritmos em Grafos. Marco A L Barbosa

SCC-210 Algoritmos Avançados. Capítulo 9 Grafos. Adaptado por João Luís G. Rosa

Grafos e Algoritmos de Busca

Análise e Síntese de Algoritmos

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

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

Otimização em Grafos

CES-11. Algoritmos e Estruturas de Dados. Carlos Alberto Alonso Sanches Juliana de Melo Bezerra

CI065 CI755 Algoritmos e Teoria dos Grafos

Teoria dos Grafos Aula 26

Otimização em Grafos

Caminhos em Grafos. Grafos - Caminho Simples (1) (Cliente para M. de Adj.) static int visited[maxv];

ÁRVORES E ÁRVORE BINÁRIA DE BUSCA

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

Introdução a Grafos Letícia Rodrigues Bueno

UNIVERSIDADE DE SÃO PAULO INSTITUTO DE CIÊNCIAS MATEMÁTICAS E DE COMPUTAÇÃO Departamento de Ciências de Computação

Problema. Quantas cores são necessárias para pintar este mapa? Número. Cromático. Estruturas de Dados - Grafos. Problema. Problema

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

Algoritmo de Dijkstra Estudo e Implementação

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

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

Busca em Profundidade e em Largura

Projeto de Algoritmos por Indução

Teoria dos Grafos Aula 22

Árvore Geradora Mínima

Grafos. Fabio Gagliardi Cozman. PMR2300 Escola Politécnica da Universidade de São Paulo

Algoritmos e Estruturas de Dados. Grafos Semestre de Inverno 13/14

Teoria dos Grafos Caminhos. Profª. Alessandra Martins Coelho

2 Definição do Problema

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

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.

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

GRAFOS E ALGORITMOS TEORIA DE GRAFOS

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

O estudo utilizando apenas este material não é suficiente para o entendimento do conteúdo. Recomendamos a leitura das referências no final deste

DFS: Depth-First Search (pesquisa em profundidade) Percursos e Conectividade em Grafos Depth-First Search. Implementação de DFS

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

Árvores: Conceitos Básicos e Árvore Geradora

Estudo e implementação de heurísticas para determinação do caminho de menor custo para atender a rotas pré estabelecidas. Por: Charles Pereira

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

INF1010 Lista de Exercícios 2

Sub-grafo. Árvore Geradora Mínima

Resolução de Problemas. Universidade Católica de Pelotas Engenharia da Computação Disciplina: Inteligência Artificial

Grafos - O que é um grafo? Algoritmos e Estruturas de Dados MEEC 2012/13. Objecto abstracto Dois tipos de entidades. Vértices representam

GRAFOS E ALGORITMOS ALGORITMOS E APLICAÇÕES

Grafos - O que é um grafo? Algoritmos e Estruturas de Dados LEE 2013/14. Objecto abstracto Dois tipos de entidades. Vértices representam

Grafos Árvores Geradoras Mínimas

Grafos - Motivação. Grafos - Motivação. Algoritmos e Estruturas de Dados II Introdução a Grafos

Definição 1.1 : Uma árvore é um grafo simples conexo e sem ciclos.

Teoria dos Grafos Aula 24

Prof. Marco Antonio M. Carvalho

Aula 08. Estruturas de dados Árvore e Grafo

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

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

Teoria dos Grafos. Aula 5 - Estruturas de Dados para Grafos. Profª. Alessandra Martins Coelho. março/2013

Transcrição:

Teoria dos Grafos Aula 6 Aula passada Busca em grafos Busca em largura (BFS Breadth First Search) Propriedades Aula de hoje BFS implementação Complexidade Busca em profundidade (DFS) Conectividade, componentes

Busca em Largura (BFS) Explorar vértices descobertos mais antigos primeiro Origem: vértice 1 1 3 2 6 4 7 Em que ordem os vértices são descobertos? 5 Assumir arestas são exploradas em ordem crescente dos vértices adjacentes (matriz ou lista de adjacência)

Implementação Como implementar a busca em largura? Algoritmo simples, sem camadas, somente para percorrer o grafo, utilizando fila 1.Desmarcar todos os vértices 2.Definir fila Q vazia 3.Marcar s e inserir s na fila Q 4.Enquanto Q não estiver vazia 5. Retirar v de Q 6. Para todo vizinho w de v faça 7. Se w não estiver marcado 8. marcar w 9. inserir w em Q s é o vértice raiz!

Complexidade Qual é a complexidade deste algoritmo? utilizando lista de adjacência? 1.Desmarcar todos os vértices 2.Definir fila Q vazia 3.Marcar s e inserir s na fila Q 4.Enquanto Q não estiver vazia 5. Retirar v de Q 6. Para todo vizinho w de v faça 7. Se w não estiver marcado 8. marcar w 9. inserir w em Q percorre os n vértices quantos vértices em Q? v V Percorre vizinhos do vértice, para cada vértice d v =2 m

O(n + m) Complexidade linear Complexidade mesma ordem de grandeza do tempo necessário para ler o grafo! Se grafo for denso, m ~ n 2 Recordação O que é O(n + m)? Por que não O(n) ou O(m) ou O(n 2 )? O(n + m) representa o máximo entre n e m! + = max

Conectividade Problema: Como saber se existe caminho entre dois vértices? ex. ir do Rio à Xapuri de carro? Usar BFS para resolver este problema! Como? Marca s como raiz Realiza BFS Ao terminar a BFS se t estiver marcado, então há caminho, caso contrário, não há

Grafo Conexo Problema: como determinar se um grafo G é conexo? Aplicações? Transporte aéreo comercial voar de qualquer cidade para qualquer cidade Idéia: utilizar BFS! Escolher vértice v qualquer de G Executar BFS à partir de v Verificar se todos vértices foram marcados

Busca em Profundidade (DFS) Explorar vértices descobertos mais recentes primeiro Oposto de BFS: explora mais antigo primeiro Interpretação procurar uma saída de um labirinto vai fundo atrás da saída (tomando decisões a cada encruzilhada) volta a última encruzilhada quando encontrar um beco sem saída (ou lugar já visitado)

Busca em Profundidade Explorar o grafo abaixo usando DFS início: vértice 4 vizinhos encontrados em ordem crescente 3 1 7 8 2 4 6 5 Ordem de descobrimento dos vértices?

Árvore de Profundidade Árvore induzida pela busca em profundidade Raiz: vértice de origem Pai de v: nó que levou à descoberta de v raiz: nó 4 Árvore de profundidade 3 1 7 3 1 7 8 2 4 6 5 8 2 4 6 5 Ordem da busca define árvore

Implementação Como implementar DFS? utilizando algoritmo recursivo 1.DFS(u) 2. Marcar u como descoberto 3. Para cada aresta (u,v) incidente a u 4. Se v não estiver marcado 5. DFS(v) // chamada recursiva 6. 7.Desmarcar todos os vértices s é o vértice raiz! 8.Escolher vértice inicial s 9.DFS(s)

Implementação Como implementar DFS? utilizando uma pilha 1.DFS(s) 2.Desmarcar todos os vértices 3.Definir pilha P com um elemento s 4. Enquanto P não estiver vazia 5. Remover u de P // no topo da pilha 6. Se u não estiver marcado 7. Marcar u como descoberto 8. Para cada aresta (u,v) incidente a u 9. Adicionar v em P // no topo

Complexidade Qual é a complexidade deste algoritmo? 1.Desmarcar todos os vértices 2.Definir pilha P com um elemento s 3. Enquanto P não estiver vazia 4. Remover u de P // no topo da pilha 5. Se u não estiver marcado 6. Marcar u como descoberto 7. Para cada aresta (u,v) incidente a u 8. Adicionar v em P // no topo Custo para desmarcar vértices? Quantos vértices adicionados em P? vértice adicionado em P mais de uma vez? Quantas vezes uma aresta é examinada?

O(n + m) Complexidade linear Complexidade mesma ordem de grandeza do tempo necessário para ler o grafo! Se grafo for denso, m ~ n 2 Mesma complexidade que BFS!

Árvore de Profundidade Como obter árvore geradora induzida pela busca? Como modificar algoritmo para gerar a árvore? Idéia Utilizar vetor pai[] para indicar o pai de um vértice v na árvore Idéia independe do tipo de busca (BFS, DFS, etc)

Componentes Conexos Maiores subgrafos conectados de um grafo mais precisamente... Subgrafos maximais de G que sejam conexos maximal: subconjunto que maximiza a propriedade, no caso subgrafo conexo 1 4 Exemplo: 2 3 6 5 8 9 7 6 7 1 8 2 Componente conexo? Componente conexo? 4 5

Componentes Conexos Problema: Determinar o número de componentes conexos de um grafo e tamanho de cada componente Algoritmo eficiente para resolver este problema?

Componentes Conexos Usar Busca em Grafos (BFS ou DFS) Desmarcar todos os vértices Escolher vértice s qualquer Realizar BFS Vértices marcados determinam uma CC Escolher vértice s não marcado qualquer Realizar BFS Vértices marcados determinam outra CC...

Componentes Conexos Complexidade? Complexidade do algoritmo anterior Maior número de CC de um grafo? Custo para detectar cada CC? Usar marcações diferentes para cada CC O(m + n)