Grafos Msc. Cintia Carvalho Oliveira Doutoranda em Computação – UFU

Slides:



Advertisements
Apresentações semelhantes
«Forte do Bom Sucesso (Lisboa) – Lápides 1, 2, 3» «nomes gravados, 21 de Agosto de 2008» «Ultramar.TerraWeb»
Advertisements

Grafos Orientados (digrafos)
Árvores 2010/1 Teoria dos Grafos (INF 5037/INF2781)
Árvores CC/EC/Mestrado Teoria dos Grafos ‏ 1.
CC/EC/PPGI/UFES 2010/1 Teoria dos Grafos (INF 5037/INF2781) Conceitos Básicos.
Grafos - Caminhos Caminhos Máximo / Mínimo:
Teoria dos Grafos – Aula 2
Fluxo em Redes Prof. Ricardo R. Santos.
Análise de Decisão Aplicada a Gerência Empresarial – UVA Grafos - V
Vamos contar D U De 70 até 99 Professor Vaz Nunes 1999 (Ovar-Portugal). Nenhuns direitos reservados, excepto para fins comerciais. Por favor, não coloque.
João Lúcio de Azevedo ESALQ/USP, UMC, UCS, CBA
CC/EC/Mestrado/UFES Teoria dos Grafos (INF 5037/INF2781) Grafos Orientados (digrafos)
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.
Conceitos Básicos CC/EC/Mestrado Teoria dos Grafos.
Algumas classes especiais de grafo
Exercício do Tangram Tangram é um quebra-cabeças chinês no qual, usando 7 peças deve-se construir formas geométricas.
Nome : Resolve estas operações começando no centro de cada espiral. Nos rectângulos põe o resultado de cada operação. Comprova se no final.
Curso de ADMINISTRAÇÃO
Ronaldo Celso Messias Correia –
Grafos Msc. Cintia Carvalho Oliveira Doutoranda em Computação – UFU
Grafos Msc. Cintia Carvalho Oliveira Doutoranda em Computação – UFU
Renda até 2 SM.
Seminários do Enade 2013.
Baseado em: The Algorithm Design Manual Steven S. Skiena
Algoritmos em Grafos.
Diagnósticos Educativos = Diagnósticos Preenchidos 100% = 1.539
Algoritmos em Grafos Conceitos principais Prof. André Renato
Grafos Árvores Geradoras.
Teoria dos Grafos Caminhos e Noção de Grafos com pesos
Teoria dos Grafos Definições e Terminologia
CATÁLOGO GÉIA PÁG. 1 GÉIA PÁG. 2 HESTIA PÁG. 3.
PROCESSOS PRINCIPAIS Alunos - Grau de Satisfação 4971 avaliações * Questões que entraram em vigor em 2011 ** N.A. = Não Aplicável Versão: 07/02/2012 INDICADORES.
LINHAS MAIS RECLAMADAS Ranking Negativo para Fiscalização Direcionada Nivel de Serviço ANO III – Nº 2.
Trabalho sobre Cor Thiago Marques Toledo.
Celso C. Ribeiro Caroline T. Rocha
FISCALIZAÇÃO DIRECIONADA CONDUTA - AUXILIAR ANO III – Nº 05.
FISCALIZAÇÃO DIRECIONADA NÍVEL DE SERVIÇO ANO I – Nº 4.
Histórico, exemplos e problemas
Operações com grafos União Exemplo
Histórico, exemplos e problemas
O problema do emparelhamento máximo
Funcionários - Grau de Satisfação 2096 avaliações
Tributação da Exportação nas Empresas optantes pelo Simples Nacional
Grafos Msc. Cintia Carvalho Oliveira Doutoranda em Computação – UFU
Projeto Medindo minha escola.
LINHAS MAIS RECLAMADAS Ranking Negativo para Fiscalização Direcionada Nivel de Serviço ANO III – Nº 03.
Teoria dos Grafos Introdução
Teoria dos Grafos Conectividade
SÉRIES ESTATÍSTICAS.
Cruz Alta Nossa Velha - Nova Parte 51 CRUZ ALTA VISTA DO ESPAÇO – Parte
LINHAS MAIS RECLAMADAS Ranking Negativo para Fiscalização Direcionada Conduta - Auxiliar ANO V – Nº 04.
Conceitos básicos em grafos
1 Aplicações do Fecho Regular. 2 A interseção de uma linguagem livre de contexto e uma linguagem regular é uma linguagem livre de contexto livre de contexto.
CONCEITOS FUNDAMENTAIS
Olhe fixamente para a Bruxa Nariguda
15)Entregar ao cliente o produto desejado no prazo combinado(no momento certo) e o produto deve ser o desejado(o produto certo) e Sem reclamação futura.
Equipe Bárbara Régis Lissa Lourenço Lucas Hakim Ricardo Spada Coordenador: Gabriel Pascutti.
AVALIAÇÕES FÍSICAS EVOLUÇÃO PILAR FÍSICO. QUADRO FERJ 85% 79%78% 82% 91% EM MAIO DE 2007 ERAM 56% DE APROVADOS 93% 92% 95%
LEILÃO nº 3/2014 Dia 12 de setembro, às 14 horas.
Teoria dos Grafos Conceitos Preliminares
Conexidade 1.
Msc. Daniele Carvalho Oliveira
Profº: Éder Jânio Francisco Gomes.  Grafos são assim chamados por poderem ser representados graficamente  Existe uma única maneira de desenhar um grafo?
Mestrado em Informática
Celso C. Ribeiro Caroline T. Rocha
Grafos Anjolina Grisi de Oliveira 2005
 Prof. Miguel Gabriel Prazeres de Carvalho 1. 2 Redes Sociais GPS Para o correio. Para Viajantes. Pesquisas Biológicas. Distribuição de Tarefas. Recomendações.
Grafos Prof. Miguel Gabriel Prazeres de Carvalho.
Transcrição da apresentação:

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

Pontes de Königsberg (1736) Em Königsber, Alemanha, um rio que passava pela Cidade tinha uma ilha e, logo depois de passar por essa ilha se bifurcava em 2 ramos. Nessa região existiam 7 pontes, como mostra a figura.

Pontes de Königsberg (1736) É possível andar por toda a cidade de tal modo que cada ponte seja atravessada exatamente uma vez?

Pontes de Königsberg (1736) Na teoria de grafos, um caminho completo com as propriedades descritas acima de não retraçar nenhum arco é chamado de CAMINHO EULERIANO

Outro Exemplo Existe um caminho euleriano para o grafo abaixo:

O que são Grafos Conjunto de pontos e linhas que conectam os pontos. Grafo é um modelo matemático que representa relações entre objetos.

O que são Grafos Grafos são estruturas de dados largamente usadas em computação. Exemplos de aplicações são: Modelagem de circuitos digitais Representação de processos em sistemas paralelos ou distribuídos, Redes Redes Sociais Recuperação de Informação

O que são Grafos Similar a árvores e listas, com menos restrições

Definição Um Grafo é um par ordenado 𝐺=(𝑉,𝐸) 𝑉 é um conjunto finito não-vazio. Os elementos de 𝑉 são denominados vértices. 𝐸 é um conjunto finito de pares ordenados de vértices. Os elementos de 𝐸 são denominados arestas. Dois vértices ligados por uma aresta são denominados adjacentes

Exemplo1: G=(V(G), E(G), G), onde V(G) ={v1, v2, v3, v4, v5} E(G)={e1, e2, e3, e4, e5, e6, e7 , e8} G : G(e1)= (v1, v2), G(e2)= (v2, v3), G(e3)= (v3, v3), G(e4)= (v3, v4), G(e5)= (v2, v4), G(e6)= (v4, v5), G(e7)= (v2, v5), G(e8)= (v2, v5)

Exemplo1: G=(V(G), E(G), G), onde V(G) ={v1, v2, v3, v4, v5} E(G)={e1, e2, e3, e4, e5, e6, e7 , e8} G : G(e1)= (v1, v2), G(e2)= (v2, v3), G(e3)= (v3, v3), G(e4)= (v3, v4), G(e5)= (v2, v4), G(e6)= (v4, v5), G(e7)= (v2, v5), G(e8)= (v2, v5)

Exemplo1: G=(V(G), E(G), G), onde V(G) ={v1, v2, v3, v4, v5} E(G)={e1, e2, e3, e4, e5, e6, e7 , e8} G : G(e1)= (v1, v2), G(e2)= (v2, v3), G(e3)= (v3, v3), G(e4)= (v3, v4), G(e5)= (v2, v4), G(e6)= (v4, v5), G(e7)= (v2, v5), G(e8)= (v2, v5)

Exemplo1: G=(V(G), E(G), G), onde V(G) ={v1, v2, v3, v4, v5} E(G)={e1, e2, e3, e4, e5, e6, e7 , e8} G : G(e1)= (v1, v2), G(e2)= (v2, v3), G(e3)= (v3, v3), G(e4)= (v3, v4), G(e5)= (v2, v4), G(e6)= (v4, v5), G(e7)= (v2, v5), G(e8)= (v2, v5)

Exemplo1: G=(V(G), E(G), G), onde V(G) ={v1, v2, v3, v4, v5} E(G)={e1, e2, e3, e4, e5, e6, e7 , e8} G : G(e1)= (v1, v2), G(e2)= (v2, v3), G(e3)= (v3, v3), G(e4)= (v3, v4), G(e5)= (v2, v4), G(e6)= (v4, v5), G(e7)= (v2, v5), G(e8)= (v2, v5)

Exemplo1: G=(V(G), E(G), G), onde V(G) ={v1, v2, v3, v4, v5} E(G)={e1, e2, e3, e4, e5, e6, e7 , e8} G : G(e1)= (v1, v2), G(e2)= (v2, v3), G(e3)= (v3, v3), G(e4)= (v3, v4), G(e5)= (v2, v4), G(e6)= (v4, v5), G(e7)= (v2, v5), G(e8)= (v2, v5)

Exemplo1: G=(V(G), E(G), G), onde V(G) ={v1, v2, v3, v4, v5} E(G)={e1, e2, e3, e4, e5, e6, e7 , e8} G : G(e1)= (v1, v2), G(e2)= (v2, v3), G(e3)= (v3, v3), G(e4)= (v3, v4), G(e5)= (v2, v4), G(e6)= (v4, v5), G(e7)= (v2, v5), G(e8)= (v2, v5)

Exemplo1: G=(V(G), E(G), G), onde V(G) ={v1, v2, v3, v4, v5} E(G)={e1, e2, e3, e4, e5, e6, e7 , e8} G : G(e1)= (v1, v2), G(e2)= (v2, v3), G(e3)= (v3, v3), G(e4)= (v3, v4), G(e5)= (v2, v4), G(e6)= (v4, v5), G(e7)= (v2, v5), G(e8)= (v2, v5)

Exemplo1: G=(V(G), E(G), G), onde V(G) ={v1, v2, v3, v4, v5} E(G)={e1, e2, e3, e4, e5, e6, e7 , e8} G : G(e1)= (v1, v2), G(e2)= (v2, v3), G(e3)= (v3, v3), G(e4)= (v3, v4), G(e5)= (v2, v4), G(e6)= (v4, v5), G(e7)= (v2, v5), G(e8)= (v2, v5)

Exemplo1: G=(V(G), E(G), G), onde V(G) ={v1, v2, v3, v4, v5} E(G)={e1, e2, e3, e4, e5, e6, e7 , e8} G : G(e1)= (v1, v2), G(e2)= (v2, v3), G(e3)= (v3, v3), G(e4)= (v3, v4), G(e5)= (v2, v4), G(e6)= (v4, v5), G(e7)= (v2, v5), G(e8)= (v2, v5)

Exemplo1: G G=(V(G), E(G), G), onde V(G) ={v1, v2, v3, v4, v5} E(G)={e1, e2, e3, e4, e5, e6, e7 , e8} G : G(e1)= (v1, v2), G(e2)= (v2, v3), G(e3)= (v3, v3), G(e4)= (v3, v4), G(e5)= (v2, v4), G(e6)= (v4, v5), G(e7)= (v2, v5), G(e8)= (v2, v5)

Exemplo2: H=(V(H), E(H), H), onde V(H) ={u, v, w, x, y} E(H)={a, b, c, d, e, f, g, h} G : G(a)= (u, v), G(b)= (u, u), G(c)= (v, w), G(d)= (w, x), G(e)= (v, x), G(f)= (w, x), G(g)= (u, x), G(h)= (x, y)

Exemplo2: H=(V(H), E(H), H), onde V(H) ={u, v, w, x, y} E(H)={a, b, c, d, e, f, g, h} G : G(a)= (u, v), G(b)= (u, u), G(c)= (v, w), G(d)= (w, x), G(e)= (v, x), G(f)= (w, x), G(g)= (u, x), G(h)= (x, y) w

Exemplo2: H=(V(H), E(H), H), onde V(H) ={u, v, w, x, y} E(H)={a, b, c, d, e, f, g, h} G : G(a)= (u, v), G(b)= (u, u), G(c)= (v, w), G(d)= (w, x), G(e)= (v, x), G(f)= (w, x), G(g)= (u, x), G(h)= (x, y) w

Exemplo2: H=(V(H), E(H), H), onde V(H) ={u, v, w, x, y} E(H)={a, b, c, d, e, f, g, h} G : G(a)= (u, v), G(b)= (u, u), G(c)= (v, w), G(d)= (w, x), G(e)= (v, x), G(f)= (w, x), G(g)= (u, x), G(h)= (x, y) w

Exemplo2: H=(V(H), E(H), H), onde V(H) ={u, v, w, x, y} E(H)={a, b, c, d, e, f, g, h} G : G(a)= (u, v), G(b)= (u, u), G(c)= (v, w), G(d)= (w, x), G(e)= (v, x), G(f)= (w, x), G(g)= (u, x), G(h)= (x, y) w

Exemplo2: H=(V(H), E(H), H), onde V(H) ={u, v, w, x, y} E(H)={a, b, c, d, e, f, g, h} G : G(a)= (u, v), G(b)= (u, u), G(c)= (v, w), G(d)= (w, x), G(e)= (v, x), G(f)= (w, x), G(g)= (u, x), G(h)= (x, y) w

Exemplo2: H=(V(H), E(H), H), onde V(H) ={u, v, w, x, y} E(H)={a, b, c, d, e, f, g, h} G : G(a)= (u, v), G(b)= (u, u), G(c)= (v, w), G(d)= (w, x), G(e)= (v, x), G(f)= (w, x), G(g)= (u, x), G(h)= (x, y) w

Exemplo2: H=(V(H), E(H), H), onde V(H) ={u, v, w, x, y} E(H)={a, b, c, d, e, f, g, h} G : G(a)= (u, v), G(b)= (u, u), G(c)= (v, w), G(d)= (w, x), G(e)= (v, x), G(f)= (w, x), G(g)= (u, x), G(h)= (x, y) w

Exemplo2: H=(V(H), E(H), H), onde V(H) ={u, v, w, x, y} E(H)={a, b, c, d, e, f, g, h} G : G(a)= (u, v), G(b)= (u, u), G(c)= (v, w), G(d)= (w, x), G(e)= (v, x), G(f)= (w, x), G(g)= (u, x), G(h)= (x, y) w

Exemplo2: H=(V(H), E(H), H), onde V(H) ={u, v, w, x, y} E(H)={a, b, c, d, e, f, g, h} G : G(a)= (u, v), G(b)= (u, u), G(c)= (v, w), G(d)= (w, x), G(e)= (v, x), G(f)= (w, x), G(g)= (u, x), G(h)= (x, y) w

Exemplo2: H=(V(H), E(H), H), onde V(H) ={u, v, w, x, y} E(H)={a, b, c, d, e, f, g, h} G : G(a)= (u, v), G(b)= (u, u), G(c)= (v, w), G(d)= (w, x), G(e)= (v, x), G(f)= (w, x), G(g)= (u, x), G(h)= (x, y) w

Outra forma de representar: Exemplo 𝑉= 0,1,2,3,4 𝐸={ 1,2 , 1,3 , 1,4 , 3,4 } 2 1 4 3

Conceitos de Grafos

Grafo planar 1 5 2 4 3

(a) Planar e (b) Não planar

- Incidência - Adjacência - Laço - Link - Arestas - Múltiplas - Multigrafo - Vértice Isolado

Grafo Trivial e Grafo Simples B C

Notação G: Grafo com conjunto de vértices V(G) e conjunto de arestas E(G). n: número de vértices de G m: número de arestas de G m <= 𝑛 2 m <= 𝑛(𝑛−1) 2

Exercício: 1. Mostre que se G é um grafo simples, então: m <= 𝑛 2

Grafo Completo

Grafo Regular 2 1 4 3 Não é Grafo Regular Grafo Regular de grau 3

Outros exemplos

Isomorfismo Dois grafos G e H são idênticos se V(G)=V(H); E(G)=E(H); G = H

Isomorfismo entre Grafos Um isomorfismo entre dois grafos é uma bijeção f de V(G) em V(H) tal que (u,v)  V(G) (f(u),f(v))  V(H)

Exemplo: G  H ? G H Para mostrar que dois grafos são isomorfos, v x w y H v2 v1 v3 v4 v5 Para mostrar que dois grafos são isomorfos, devemos indicar um isomorfismo entre eles.

Subgrafo 4 2 1 4 3 3 1 4 3

Passeio Passeio entre 2 e 4 (2, (2,1), (1,3), (3,4), 4) 2 1 4 3

Caminho simples, trajeto e ciclos Quando todos os vértices de um passeio são distintos, recebe o nome de caminho simples. Quando todas as arestas são distintas, o caminho recebe o nome de trajeto Um ciclo é um caminho 𝑣 1 , 𝑣 2 ,…, 𝑣 𝑘 , tal que 𝑣 1 = 𝑣 𝑘 e 𝑘≥3

2 1 4 3 Caminho simples: 2,1,3,4 Trajeto: 1,3,4,1,2 Ciclo: 1,3,4,1

Grafo Conexo e Desconexo 1 2 2 3 4 1 4 3

Grafo complementar

Grafo Ponderado 3 B c 1 5 4 a d 2 6 7 f e 8

Digrafo 2 1 3 4 5 6

Digrafo Grafo Orientado Deve-se respeitar a orientação das arestas

Digrafo Grau de entrada: número de arestas que incidem no vértice Vértice Fonte: grau de entrada = 0 Grau de saída: número de arestas que partem do vértice Vértice Sumidouro: grau de saída = 0

Classes especiais de grafos Grafo Bipartido: é aquele em que o conjunto de vértices pode ser particionado em dois subconjuntos X e Y, tal que cada aresta tem um extremo em X e um em Y. X Y (X, Y) é um bipartição do grafo

Classes especiais de grafos Grafo Bipartido Completo: é um grafo bipartido com bipartição (X, Y) em que cada vértice de X é adjacente a cada vértice de Y. Se |X|=m e |Y|=n, então denotamos tal grafo por Km,n

1. Mostre que os seguintes grafos não são isomorfos: Exercícios 1. Mostre que os seguintes grafos não são isomorfos: G H

Exemplos Vértices são adjacentes se uma dama do jogo de xadrez pode saltar de um deles para o outro em um só movimento. Ex. Grafo do cavalo

Exercício Quantos vértices e quantas arestas tem o grafo da dama 3–por–3? Defina o grafo do rei, o grafo do bispo, o grafo do cavalo e o grafo da torre 4–por-4. Quantos vértices e quantas arestas tem cada grafo? O grafo das palavras é definido assim: cada vértices é uma palavra da língua portuguesa e duas palavras são adjacentes se diferem em exatamente uma posição. Por exemplo, rato e ralo são adjacentes, enquanto ralo e rota não são. Faça uma figura da parte do grafo definida pelas palavras abaixo: caiado cavado cavalo girafa girava ralo ramo rata rato remo reta reto rota vaiado varado virada virado virava

Árvores Um Grafo 𝑇(𝑉,𝐸) Não possui ciclos Conexo Seja 𝑣∈𝑉, se 𝑣 possui grau menor ou igual a 1, então 𝑣 é uma folha Uma árvore com 𝑛 vértices possui 𝑛−1 arestas. Um grafo 𝐺 é uma árvore, se, e somente se, existir um único caminho entre cada par de vértices de 𝐺.

Representação de Grafos

Como representar grafos em nossos algoritmos? Estruturas de dados! Matrizes Matriz de Adjacência Matriz de Incidência Listas Listas de Adjacência

Matriz de Adjacência Dado um grafo 𝐺(𝑉,𝐸) Uma Matriz de Adjacência 𝑀 é formada por 𝑛 linhas e 𝑛 colunas 𝑛 = número de vértices do grafo 𝑀 𝑖𝑗 = 1, 𝑠𝑒 𝑖,𝑗 ∈𝐸(𝐺) 0, 𝑠𝑒 𝑖,𝑗 ∉𝐸(𝐺)

1 2 3 4 5 1 5 2 4 3 Simétrica

1 2 3 4 5 1 5 2 4 3

Matriz de Adjacência O espaço reservado para armazenar as informações da matriz é da ordem 𝑂 𝑉 2 Para buscar uma aresta: 𝑂(1)

Matriz de Incidência Dado um grafo 𝐺(𝑉,𝐸) de 𝑛 vértices e 𝑚 arestas 𝑀 𝑖𝑗 = 1, ∀ 𝑣 𝑖 , 𝑠𝑒 𝑣 𝑖 , 𝑣 𝑗 ∈𝐸 𝐺 0, 𝑠𝑒 𝑣 𝑖 , 𝑣 𝑗 ∉𝐸 𝐺 0, 𝑠𝑒 𝑣 𝑖 , 𝑣 𝑖 ∈𝐸 𝐺

e1 e2 e3 e4 e5 e6 e7 e8 1 2 3 4 5 1 e8 e7 e1 5 2 e5 e6 e2 e3 4 3 e4

Matriz de Adjacência no Digrafo 𝑀 𝑖𝑗 = 1, ∀ 𝑣 𝑖 , 𝑠𝑒 𝑣 𝑖 , 𝑣 𝑗 ∈𝐸 𝐺 −1, ∀ 𝑣 𝑗 , 𝑠𝑒 𝑣 𝑖 , 𝑣 𝑗 ∈𝐸 𝐺 0, 𝑠𝑒 𝑣 𝑖 , 𝑣 𝑗 ∉𝐸 𝐺 0, 𝑠𝑒 𝑣 𝑖 , 𝑣 𝑖 ∈𝐸 𝐺

e1 e2 e3 e4 e5 e6 e7 e8 1 2 -1 3 4 5 1 e8 e7 e1 5 2 e5 e6 e2 e3 4 3 e4

Matriz de Incidência O espaço reservado para armazenar as informações da matriz é da ordem 𝑂 |𝑉|×|𝐸| Para buscar uma aresta: 𝑂(1)

Lista de Adjacência Consiste em um vetor 𝐴𝑑𝑗 com 𝑛=|𝑉| entradas Cada entrada 𝐴𝑑𝑗[𝑣] possui uma lista encadeada de vértices adjacentes à 𝑣.

1 1 2 3 4 5 5 2 5 1 4 3 2 2 4 5 2 3 4 3 1 4

1 1 2 3 4 5 5 2 5 3 2 2 2 3 4 3 4

Matriz de Incidência O espaço reservado para armazenar as informações da matriz é da ordem 𝑂 |𝑉|+|𝐸| Para buscar uma aresta: 𝑂(𝑛) Para descobrir se existe a aresta (𝑖,𝑗) deve-se percorrer a lista do nó 𝑖 até encontrar (ou não) 𝑗

Busca em Grafos

Algoritmos de Busca Operação mais comum em Grafos Visita sistemática a seus nós (uma única vez!) Similar às buscas em árvore Para passear ou caminhar pelos vértices e arestas, utiliza-se marcar um vértice quando ele já foi visitado.

Algoritmos de Busca Dois tipos básicos de busca Busca em Profundidade Busca em Largura

Busca em Profundidade

1 1 2 3 4 5 5 2 5 1 4 3 2 2 4 5 2 3 4 3 1 4

Busca em Profundidade Para acessar todos os vértices do grafo, a busca em profundidade varre a lista de adjacência de cada vértice do grafo Assim, o tempo gasto para a operação é 𝑂(|𝑉|+|𝐸|)

Busca em Largura

1 2 3 4 5 ∞ Distâncias 1 1 2 3 4 5 5 2 5 3 2 2 2 3 4 3 4 Fila 1

1 2 3 4 5 ∞ Distâncias 1 1 2 3 4 5 5 2 5 3 2 2 2 3 4 3 4 Fila

1 2 3 4 5 ∞ Distâncias 1 1 2 3 4 5 5 2 5 3 2 2 2 3 4 3 4 Fila 5 2

1 2 3 4 5 ∞ Distâncias 1 1 2 3 4 5 5 2 5 3 2 2 2 3 4 3 4 Fila 2

1 2 3 4 5 ∞ Distâncias 1 1 2 3 4 5 5 2 5 3 2 2 2 3 4 3 4 Fila 2

1 2 3 4 5 ∞ Distâncias 1 1 2 3 4 5 5 2 5 3 2 2 2 3 4 3 4 Fila 2 4

1 2 3 4 5 ∞ Distâncias 1 1 2 3 4 5 5 2 5 3 2 2 2 3 4 3 4 Fila 4

1 2 3 4 5 ∞ Distâncias 1 1 2 3 4 5 5 2 5 3 2 2 2 3 4 3 4 Fila 4

1 2 3 4 5 Distâncias 1 1 2 3 4 5 5 2 5 3 2 2 2 3 4 3 4 Fila 4 3

1 2 3 4 5 Distâncias 1 1 2 3 4 5 5 2 5 3 2 2 2 3 4 3 4 Fila 3

1 2 3 4 5 Distâncias 1 1 2 3 4 5 5 2 5 3 2 2 2 3 4 3 4 Fila 3

1 2 3 4 5 Distâncias 1 1 2 3 4 5 5 2 5 3 2 2 2 3 4 3 4 Fila

1 2 3 4 5 Distâncias 1 1 2 3 4 5 5 2 5 3 2 2 2 3 4 3 4 Fila

Busca em Largura Primeiro os vértices são inicializados, ou seja, marcados como não visitados. O vetor de distâncias é inicializado com ∞ em todas as posições Este processo de inicialização gasta tempo 𝑂(|𝑉|)

Busca em Largura A medida que os vértices são encontrados, são colocados em uma fila As operações de inserção e remoção da fila gastam tempo 𝑂(1) Como todos os vértices são colocados e retirados da fila, o tempo total é 𝑂(|𝑉|)

Busca em Largura Como cada vértice é colocado na fila apenas 1 vez, a lista de adjacência de cada um só é analisado 1 vez Tempo 𝑂(|𝐸|) Portanto o tempo de execução da busca em largura é 𝑂(|𝑉|+|𝐸|)

Exercícios Escreva uma versão iterativa do algoritmo de busca em profundidade. Considere o grafo do slide 104. Qual é a ordem de visita dos vértices em uma busca em profundidade, começando pelo vértice A. Considere o grafo do slide 104. Qual é a ordem de visita dos vértices em uma busca em largura, começando pelo vértice A.

A B C D E F G Dist ∞ Predecessor 7 1 B 2 3 A 6 D E 2 1 C 7 F 5 G

Problema do Caminho Mínimo De forma a reduzir seus custos, uma empresa de transporte de cargas deseja oferecer aos motoristas de sua frota um mecanismo que os auxilie a selecionar o menor caminho entre quaisquer duas cidades por ela servidas.

Algoritmo Dijkstra Calcula o caminho de custo mínimo entre dois vértices. Simples e com bom nível de performance. Não garante exatidão com arcos com valores negativos.

Algoritmo Dijkstra Atribua valor zero à estimativa do custo mínimo do vértice s (a raiz da busca) e infinito às demais estimativas; Atribua um valor qualquer aos precedentes (o precedente de um vértice t é o vértice que precede t no caminho de custo mínimo de s para t); Enquanto houver vértice aberto: seja k um vértice ainda aberto cuja estimativa seja a menor dentre todos os vértices abertos; feche o vértice k Para todo vértice j ainda aberto que seja sucessor de k faça: some a estimativa do vértice k com o custo do arco que une k a j; caso esta soma seja melhor que a estimativa anterior para o vértice j, substitua-a e anote k como precedente de j.

A B C D E F G Dist 1 6 ∞ 7 Predecessor 7 1 B 2 3 A 6 D E 2 1 C 7 F 5 G

1 6 3 7 ∞ 7 1 B 2 3 A 6 D E 2 1 C 7 F 5 G Dist Predecessor A B C D E F 1 6 3 7 ∞ Predecessor 7 1 B 2 3 A 6 D E 2 1 C 7 F 5 G

1 4 3 6 ∞ 7 1 B 2 3 A 6 D E 2 1 C 7 F 5 G Dist Predecessor A B C D E F 1 4 3 6 ∞ Predecessor 7 1 B 2 3 A 6 D E 2 1 C 7 F 5 G

1 4 3 6 ∞ 7 1 B 2 3 A 6 D E 2 1 C 7 F 5 G Dist Predecessor A B C D E F 1 4 3 6 ∞ Predecessor 7 1 B 2 3 A 6 D E 2 1 C 7 F 5 G

1 4 3 6 8 13 7 1 B 2 3 A 6 D E 2 1 C 7 F 5 G Dist Predecessor A B C D 1 4 3 6 8 13 Predecessor 7 1 B 2 3 A 6 D E 2 1 C 7 F 5 G

1 4 3 6 8 13 7 1 B 2 3 A 6 D E 2 1 C 7 F 5 G Dist Predecessor A B C D 1 4 3 6 8 13 Predecessor 7 1 B 2 3 A 6 D E 2 1 C 7 F 5 G

1 4 3 6 8 13 7 1 B 2 3 A 6 D E 2 1 C 7 F 5 G Dist Predecessor A B C D 1 4 3 6 8 13 Predecessor 7 1 B 2 3 A 6 D E 2 1 C 7 F 5 G

Caminho para qualquer elemento: do destino até A B C D E F G Dist 1 4 3 6 8 13 Predecessor 7 1 B 2 3 A 6 D E 2 1 C 7 F 5 G Caminho para qualquer elemento: do destino até A Exemplo G: G ← E ← D ← B ← A

Exercício Considere o grafo do slide 104. Qual é a ordem de visita dos vértices em uma busca de caminho mínimo dijkstra, começando pelo vértice G. Por que Dijkstra não garante exatidão caso haja presença de arcos com valores negativos? Dê um contra-exemplo.

Métodos de Busca Heurística Fazem uso de conhecimento específico sobre o domínio do problema para guiar o processo de busca. Muitos atribuem uma nota a cada vértice da árvore de busca para representar uma estimativa (ou função heurística) do custo de transformação do Estado Atual no Estado Final.

Algoritmo A* F(Ea) = g(Ea) + h(Ea) Adota transformar Estado Inicial (Ei) até o Estado Final (Ef) passando pelo Estado Atual (Ea). F(Ea) = g(Ea) + h(Ea) A função g(Ea) expressa o custo (já conhecido) de transformação de Ei em Ea. A função h(Ea) é a estimativa do custo (desconhecido) da transformação de Ea em Ef.

Busca A* O processo de busca reorganiza a cada ciclo a Lista de Prioridades de modo que aquelas com menor f(Ea) venham para frente e sejam investigadas.

O custo para realizar o percurso entre cidades ligadas é a distância euclidiana g(d) = distância euclidiana entre c e d h(d) = estimativa de custo entre d e s. Também é a distância euclidiana mesmo sem lig. direta.

Identificação de componentes fortemente conexos Se existe um caminho de u a v e de v até u para qualquer par distinto de vértices u e v. Se um grafo não é queremos identificar os subgrafos que são.

Problema Determinar o número de componentes conexos de um grafo. Usar Busca em Grafos (profundidade ou largura) Escolher um vértice s qualquer Realizar uma busca Os vértices marcados determinam uma componente conexa Escolher um s não marcado Repetir...