• Nenhum resultado encontrado

07.AED.Caminhos em Grafos.ppsx

N/A
N/A
Protected

Academic year: 2021

Share "07.AED.Caminhos em Grafos.ppsx"

Copied!
34
0
0

Texto

(1)

Mestrado em

Ciência da Computação

Algoritmos e Estrutura de Dados

Caminhos e Conexidade em

grafos:

Conceitos e algoritmos

Prof. Rodrigo L. S. Silva, D.Sc. Prof. Stênio Sã R. F. Soares, D.Sc.

(2)

Em muitas aplicações é essencial que se

estabeleça o se verifique a conexidade de vértices,

bem como a ocorrência de propriedades

relacionadas à conexidade.

 Existe um caminho para ir de um objeto a outro

seguindo as conexões?

 Qual é a menor distância entre um objeto e outro

objeto?

 É possível sair de um dado nó e visitar todos os demais

Motivação

(3)

Alguns exemplos de problemas :

envio de mensagens por uma rede;

melhorar a robustez de um serviço de comunicação;

descobrir qual é o roteiro mais curto para visitar um

conjunto de clientes;

melhorar a segurança e eficiência em comunicação

de dados;

. . .

Aplicações

(4)

Seja um grafo G=(V,E),

um passeio em G é uma sequência finita e não

vazia W=v

0

e

1

v

1

e

2

...e

k

v

k

, cujos termos são vértices

e arestas dispostos alternadamente e que, para

i=1 ... k, a aresta e

i

conecta o vértice v

i-1

ao vértice

v

i

.

Como trataremos apenas de grafos simples,

podemos representar um passeio apenas pelos

vértices: W=v

0

v

1

...v

k

, onde os vértices v

0

e v

k

são a

4

(5)

Caminhos e conexidade

(6)

6

(7)

7

Seja P={P

1

, P

2

, ..., P

q

} uma partição de V tal que

P

i

≠ para i = 1, ..., q, sendo que se dois nós

u e v

são conectados u e v pertencem a uma mesma

participação e vice-versa.

Nestas condições, dizemos que estas partições P

i

são componentes conexas.

Grafo com três componentes conexas

(8)
(9)

Ciclos

(10)
(11)

Ciclos

11

Existe um grafo G que:

● É Euleriano mas não é Hamiltoniano? ● É Euleriano e Hamiltoniano?

● É Hamiltoniano mas não é Euleriano?

(12)
(13)

13

Teoria de Grafos

Caminhamento em

Grafos

• Caminhar/percorrer um grafo:

visitar todos os nós e arestas

Enquanto for possível, aprofundar-se no grafo. Quando não for mais possível, recuar.

BUSCA EM PROFUNDIDADE BUSCA EM PROFUNDIDADE 8 9 1 5 4 2 6 3 7 10 1 4 6 7 8 3 2 10 5 9 10º 13

(14)

Caminhamento em

Grafos

8 9 1 5 4 2 6 3 7 10 1 4 6 7 8 3 2 10 5 9 10º 1 4 6 5 7 8 3 2 10 9 14

(15)

15

Teoria de Grafos

Caminhamento em

Grafos

• A ordem em que os nós e arestas são visitados depende: • do nó inicial

• da ordem em que os nós e as arestas aparecem na estrutura de dados

(16)

Caminhamento em

Grafos

Algoritmo recursivo para busca a partir de um nó

Procedimento PROF(nó v) visitado(v)  sim

Para cada nó w adjacente a v faça Se visitado(w) = não então

PROF(w) fim-para

Fim

(17)

17 Teoria de Grafos

Caminhamento em

Grafos

Exemplo: D A E B C F G H A B C D E F G H B C A B H F G A D E B H C H C H D E F G 1 A D E B C F G H 2 3 4 5 6 7 8 X X X X X X X X não visitado visitado 17

(18)

Caminhamento em

Grafos

Exemplo: D A E B C F G H 1 A D E B C F G H 2 3 4 5 6 7 8 A B E F D H C G Árvore de busca em profundidade Árvore de busca em profundidade 18

(19)

19 Teoria de Grafos

Caminhamento em

Grafos

Procedimento BUSCA-PROF Para i = 1,...,n faça visitado(i)  não fim-para Para i = 1,...,n faça

Se visitado(i) = não então PROF(i)

fim-para Fim

Algoritmo de busca em profundidade

(20)

Caminhamento em

Grafos

Exemplo: 1 8 2 3 1 7 5 6 4 11 9 14 12 10 13 8 1 3 2 4 3 5 4 6 5 7 6 2 7 9 8 9 14 10 11 11 1012 13 13 12 14 20

(21)

21

Teoria de Grafos

Caminhamento em

Grafos

Aplicações de busca em profundidade, grafo G=(V,E): G é acíclico?

G é conexo?

Quais são as componentes conexas de G? Quais são os pontos de articulação de G?

(22)

Caminhamento em

Grafos

Procedimento COMPONENTES-CONEXAS Para i = 1,...,n faça visitado(i)  0 fim-para componente  0 Para i = 1,...,n faça Se visitado(i) = 0 então componente  componente + 1 PROF(i, componente) fim-se fim-para

Algoritmo para encontrar as componentes conexas

(23)

23

Teoria de Grafos

Caminhamento em

Grafos

Procedimento PROF(v, marca) visitado(v)  marca

Para cada nó w adjacente a v faça Se visitado(w) = 0 então

PROF(w, marca) fim-se

fim-para Fim

Algoritmo para encontrar as componentes conexas

(24)

Caminhamento em

Grafos

Exemplo: Problema do mosaico

• Quantos e quais mosaicos intermediários existem entre dois mosaicos específicos?

• Novas configurações (mosaicos) são obtidas através do movimento de um elemento para a posição vazia.

4 5 3 8 2 7 1 61 2 3 4 5 7 6 84 5 3 8 2 7 1 624

(25)

25 Teoria de Grafos

Caminhamento em

Grafos

4 ■ 6 2 7 5 1 3 8 4 5 6 2 7 1 3 8 4 5 6 7 2 1 3 8 1 2 3 4 5 6 8 7 4 5 6 2 7 3 1 8 4 5 6 2 7 1 3 8 4 5 6 2 7 1 8 3 4 5 6 2 1 7 3 8

?

25

(26)

2 8 3 6 ■ 4 1 7 5

Caminhamento em

Grafos

■ 8 3 2 6 4 1 7 5 2 8 3 ■ 6 4 1 7 5 2 8 3 1 6 4 ■ 7 5 2 8 3 1 ■ 4 7 6 5 2 8 3 1 6 4 7 ■ 5 2 8 3 ■ 1 4 7 6 5 2 ■ 3 1 8 4 7 6 5 2 8 3 1 4 ■ 7 6 5 2 8 3 1 6 4 7 5 ■ ■ 8 3 2 1 4 7 6 5 2 8 3 7 1 4 ■ 6 5 ■ 2 3 1 8 4 7 6 5 2 3 ■ 1 8 4 7 6 5 8 ■ 3 2 6 4 1 7 5 2 ■ 3 6 8 4 1 7 5 2 8 3 6 4 ■ 1 7 5 2 8 3 6 7 4 1 ■ 5 8 ■ 3 2 1 4 7 6 5 2 8 3 7 1 4 6 ■ 5 1 2 3 ■ 8 4 7 6 5 8 3 ■ 8 6 3 ■ 2 3 2 3 ■ 2 8 ■ 2 8 3 2 8 3 2 8 3 8 3 ■ 8 1 3 2 8 3 2 8 3 1 2 3 1 2 3 NÓ INICIAL NÓ INICIAL Busca em profundidade 1 2 3 4 5 6 7 10 11 13 14 16 17 8 9 12 15 18 19 20 21 22 23 24 25 26 27 28 29 30 31 26

(27)

27

Teoria de Grafos

Caminhamento em

Grafos

Enquanto for possível, examinar todos os nós à mesma distância do nó inicial. Quando não for mais possível, aprofundar.

BUSCA EM AMPLITUDE BUSCA EM AMPLITUDE 8 9 1 5 4 2 6 3 7 10 1 4 6 7 8 3 2 10 5 9 1 4 7 10 8 6 5 9 3 2 27

(28)

Caminhamento em

Grafos

Exemplo: D A E B C F G B C A F D

Árvore de busca em profundidade (pilha)

Árvore de busca em profundidade (pilha)

D E A

C B

Árvore de busca em amplitude (fila)

Árvore de busca em amplitude (fila)

(29)

29 Teoria de Grafos

Caminhamento em

Grafos

Procedimento BUSCA-AMPL(v) visitado(v)  sim

Colocar v em uma fila

Enquanto fila não vazia faça

w  retirar o elemento da frente da fila

Para cada vértice i adjacente a w faça Se visitado(i) = não então

visitado(i)  sim

Colocar i no final da fila fim-se

fim-para fim-enquanto Fim

Algoritmo de busca em amplitude

(30)

Caminhamento em

Grafos

Exemplo: D A E B C F G H A B C D E F G H B C A B H F G A D E B H C H C H D E F G 1 A D E B C F G H 2 4 8 5 6 3 7 não visitado visitado Fila A w = B A B C B C DE D C C D E F F E D G D E F G H E F G H 30

(31)

31 Teoria de Grafos

Caminhamento em

Grafos

Exemplo: D A E B C F G H 1 A D E B C F G H 2 4 8 5 6 3 7 Árvore de busca em amplitude (fila) Árvore de busca em amplitude (fila) D A E B C F G H 31

(32)

2 8 3 6 ■ 4 1 7 5

Caminhamento em

Grafos

■ 8 3 2 6 4 1 7 5 2 8 3 ■ 6 4 1 7 5 2 8 3 1 6 4 ■ 7 5 2 8 3 1 ■ 4 7 6 5 2 8 3 1 6 4 7 ■ 5 2 8 3 ■ 1 4 7 6 5 2 ■ 3 1 8 4 7 6 5 2 8 3 1 4 ■ 7 6 5 2 8 3 1 6 4 7 5 ■ ■ 8 3 2 1 4 7 6 5 2 8 3 7 1 4 ■ 6 5 ■ 2 3 1 8 4 7 6 5 2 3 ■ 1 8 4 7 6 5 8 ■ 3 2 6 4 1 7 5 2 ■ 3 6 8 4 1 7 5 2 8 3 6 4 ■ 1 7 5 2 8 3 6 7 4 1 ■ 5 8 ■ 3 2 1 4 7 6 5 2 8 3 7 1 4 6 ■ 5 1 2 3 ■ 8 4 7 6 5 8 3 ■ 8 6 3 ■ 2 3 2 3 ■ 2 8 ■ 2 8 3 2 8 3 2 8 3 8 3 ■ 8 1 3 2 8 3 2 8 3 1 2 3 1 2 3 Busca em amplitude 1 2 8 3 1 4 ■ 7 6 5 2 3 4 1 8 ■ 7 6 5 2 8 ■ 1 4 3 7 6 5 2 8 3 1 4 5 7 6 ■ 2 ■ 8 1 4 3 7 6 5 2 8 3 1 4 5 7 ■ 6 2 8 3 1 ■ 6 7 5 4 2 8 ■ 1 6 3 7 5 4 2 8 3 ■ 1 6 7 5 4 2 ■ 3 1 8 6 7 5 4 2 8 3 1 5 6 7 ■ 4 2 ■ 8 1 6 3 7 5 4 NÓ INICIAL NÓ INICIAL 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 Exemplo do mosaico: 32

(33)

1. Seja o problema de verificar se um grafo possui ciclos. Apresente um algoritmo para este problema e mostre a sua complexidade considerando cada uma das estruturas de armazenamento vistas em sala.

2. Apresente um algoritmo para o problema de verificar se um dado nó de um grafo é um nó de articulação. Demonstre a complexidade do seu algoritmo.

3. Considere um grafo ponderado G=(V,E). Apresente um algoritmo para obter um subgrafo G´=(V,E´), que seja G´ seja conexo, sem ciclo e que a soma dos pesos das arestas de E´ seja mínima. Apresente a complexidade do seu algoritmo.

Exercícios

(34)

4. Dado um grafo G=(V,E), apresente um algoritmo para verificar se G é euleriano. Caso a resposta seja sim, seu algoritmo deve apresentar o circuito euleriano.

5. Considere o problema em que uma instituição de ensino deseja utilizar o menor número de dias para aplicar as provas de k disciplinas para um grupo de n alunos. Neste problema, como existem alunos que cursam disciplina em comum, as provas destas disciplinas não podem ocorrer em um mesmo dia. Modele este problema como

Exercícios

Referências

Documentos relacionados

The strict partition problem is relaxed into a bi-objective set covering problem with k-cliques which allows over-covered and uncovered nodes.. The information extracted

Muitos aspectos destacam-se, por exemplo: a diversificação e a heterogeneidade das ações profissionais; a juventude das(os) psicólogas(os) que atuam na área, indicando que ela

O valor da reputação dos pseudônimos é igual a 0,8 devido aos fal- sos positivos do mecanismo auxiliar, que acabam por fazer com que a reputação mesmo dos usuários que enviam

servidores, software, equipamento de rede, etc, clientes da IaaS essencialmente alugam estes recursos como um serviço terceirizado completo...

Nessa situação temos claramente a relação de tecnovívio apresentado por Dubatti (2012) operando, visto que nessa experiência ambos os atores tra- çam um diálogo que não se dá

Este artigo está dividido em três partes: na primeira parte descrevo de forma sumária sobre a importância do museu como instrumento para construção do conhecimento, destaco

A Psicologia, por sua vez, seguiu sua trajetória também modificando sua visão de homem e fugindo do paradigma da ciência clássica. Ampliou sua atuação para além da

Por último, temos o vídeo que está sendo exibido dentro do celular, que é segurado e comentado por alguém, e compartilhado e comentado no perfil de BolsoWoman no Twitter. No