Grafos Msc. Daniele Carvalho Oliveira 1. Pontes de Königsberg (1736) 2.

61
Grafos Msc. Daniele Carvalho Oliveira 1

Transcript of Grafos Msc. Daniele Carvalho Oliveira 1. Pontes de Königsberg (1736) 2.

Page 1: Grafos Msc. Daniele Carvalho Oliveira 1. Pontes de Königsberg (1736) 2.

1

GrafosMsc. Daniele Carvalho Oliveira

Page 2: Grafos Msc. Daniele Carvalho Oliveira 1. Pontes de Königsberg (1736) 2.

2

Pontes de Königsberg (1736)

Page 3: Grafos Msc. Daniele Carvalho Oliveira 1. Pontes de Königsberg (1736) 2.

3

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.

Page 4: Grafos Msc. Daniele Carvalho Oliveira 1. Pontes de Königsberg (1736) 2.

4

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

Page 5: Grafos Msc. Daniele Carvalho Oliveira 1. Pontes de Königsberg (1736) 2.

5

O que são Grafos Similar a árvores e listas, com menos

restrições

Page 6: Grafos Msc. Daniele Carvalho Oliveira 1. Pontes de Königsberg (1736) 2.

6

Page 7: Grafos Msc. Daniele Carvalho Oliveira 1. Pontes de Königsberg (1736) 2.

7

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

Page 8: Grafos Msc. Daniele Carvalho Oliveira 1. Pontes de Königsberg (1736) 2.

8

Exemplo

1

2 0

3

4

Page 9: Grafos Msc. Daniele Carvalho Oliveira 1. Pontes de Königsberg (1736) 2.

9

Conceitos de Grafos

Page 10: Grafos Msc. Daniele Carvalho Oliveira 1. Pontes de Königsberg (1736) 2.

10

Laços, Arestas Múltiplas e Multigrafo

Page 11: Grafos Msc. Daniele Carvalho Oliveira 1. Pontes de Königsberg (1736) 2.

11

Grafo Trivial e Grafo Simples

A B C

Page 12: Grafos Msc. Daniele Carvalho Oliveira 1. Pontes de Königsberg (1736) 2.

12

Grafo Completo

Page 13: Grafos Msc. Daniele Carvalho Oliveira 1. Pontes de Königsberg (1736) 2.

13

Grafo Regular

Não é Grafo Regular Grafo Regular de grau 3

1

2 0

3

4

Page 14: Grafos Msc. Daniele Carvalho Oliveira 1. Pontes de Königsberg (1736) 2.

14

Subgrafo

1

2 0

3

43

4

1

3

4

0

Page 15: Grafos Msc. Daniele Carvalho Oliveira 1. Pontes de Königsberg (1736) 2.

15

Caminho simples, trajeto e ciclos

Um Caminho é uma sequência de vértices , tal que

Quando todos os vértices do caminho 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 , tal que e

Page 16: Grafos Msc. Daniele Carvalho Oliveira 1. Pontes de Königsberg (1736) 2.

16

Caminho simples:

Trajeto:

Ciclo:

1

2 0

3

4

Page 17: Grafos Msc. Daniele Carvalho Oliveira 1. Pontes de Königsberg (1736) 2.

17

Grafo Conexo e Desconexo

1

2 0

3

4

2

3 4

1

Page 18: Grafos Msc. Daniele Carvalho Oliveira 1. Pontes de Königsberg (1736) 2.

18

Grafo Ponderado

C

F E

B

DA

5

7

3

2

4

8

1

6

Page 19: Grafos Msc. Daniele Carvalho Oliveira 1. Pontes de Königsberg (1736) 2.

19

Dígrafo

1

2

3

5

6

4

Page 20: Grafos Msc. Daniele Carvalho Oliveira 1. Pontes de Königsberg (1736) 2.

20

Dígrafo Grafo Orientado

Deve-se respeitar a orientação das arestas

Page 21: Grafos Msc. Daniele Carvalho Oliveira 1. Pontes de Königsberg (1736) 2.

21

Dígrafo 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

Page 22: Grafos Msc. Daniele Carvalho Oliveira 1. Pontes de Königsberg (1736) 2.

22

Á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 arestas. Um grafo é uma árvore, se, e somente se, existir

um único caminho entre cada par de vértices de .

Page 23: Grafos Msc. Daniele Carvalho Oliveira 1. Pontes de Königsberg (1736) 2.

23

Page 24: Grafos Msc. Daniele Carvalho Oliveira 1. Pontes de Königsberg (1736) 2.

24

Representação de Grafos

Page 25: Grafos Msc. Daniele Carvalho Oliveira 1. Pontes de Königsberg (1736) 2.

25

Como representar grafos em nossos algoritmos?

Estruturas de dados! Matrizes

Matriz de Adjacência Matriz de Incidência

Listas Listas de Adjacência

Page 26: Grafos Msc. Daniele Carvalho Oliveira 1. Pontes de Königsberg (1736) 2.

26

Matriz de Adjacência Dado um grafo Uma Matriz de Adjacência é formada por

linhas e colunas = número de vértices do grafo

Page 27: Grafos Msc. Daniele Carvalho Oliveira 1. Pontes de Königsberg (1736) 2.

27

1 2 3 4 5

1 0 1 0 0 1

2 1 0 1 1 0

3 0 1 0 1 0

4 0 1 1 0 1

5 1 0 0 1 1

1

5 2

34

Simétrica

Page 28: Grafos Msc. Daniele Carvalho Oliveira 1. Pontes de Königsberg (1736) 2.

28

1 2 3 4 5

1 0 1 0 0 1

2 0 0 1 0 0

3 0 1 0 0 0

4 0 1 1 0 0

5 0 0 0 1 1

1

5 2

34

Page 29: Grafos Msc. Daniele Carvalho Oliveira 1. Pontes de Königsberg (1736) 2.

29

Matriz de Adjacência O espaço reservado para armazenar as

informações da matriz é da ordem Para buscar uma aresta:

Page 30: Grafos Msc. Daniele Carvalho Oliveira 1. Pontes de Königsberg (1736) 2.

30

Matriz de Incidência Dado um grafo de vértices e arestas

Page 31: Grafos Msc. Daniele Carvalho Oliveira 1. Pontes de Königsberg (1736) 2.

31

e1

e2

e3

e4

e5

e6

e7

e8

1 1 0 0 0 0 0 1 0

2 1 1 1 0 1 0 0 0

3 0 1 1 1 0 0 0 0

4 0 0 0 1 1 1 0 0

5 0 0 0 0 0 1 1 0

1

5 2

34 e4

e2 e3

e1

e5e6

e7e8

Page 32: Grafos Msc. Daniele Carvalho Oliveira 1. Pontes de Königsberg (1736) 2.

32

Page 33: Grafos Msc. Daniele Carvalho Oliveira 1. Pontes de Königsberg (1736) 2.

33

e1

e2

e3

e4

e5

e6

e7

e8

1 1 0 0 0 0 0 1 0

2 -1 1 -1 0 -1 0 0 0

3 0 -1 1 -1 0 0 0 0

4 0 0 0 1 1 -1 0 0

5 0 0 0 0 0 1 -1 0e4

e2 e3

e1

e5e6

e7e8 1

5 2

34

Page 34: Grafos Msc. Daniele Carvalho Oliveira 1. Pontes de Königsberg (1736) 2.

34

Matriz de Incidência O espaço reservado para armazenar as

informações da matriz é da ordem Para buscar uma aresta:

Page 35: Grafos Msc. Daniele Carvalho Oliveira 1. Pontes de Königsberg (1736) 2.

35

Lista de Adjacência Consiste em um vetor com entradas Cada entrada possui uma lista encadeada de

vértices adjacentes à .

Page 36: Grafos Msc. Daniele Carvalho Oliveira 1. Pontes de Königsberg (1736) 2.

36

1

5 2

34

1

2

3

4

5

5 2

1

2

5

1

4

4

2

4

3

3

Page 37: Grafos Msc. Daniele Carvalho Oliveira 1. Pontes de Königsberg (1736) 2.

37

1

2

3

4

5

5 2

3

2

2

4

3

1

5 2

34

Page 38: Grafos Msc. Daniele Carvalho Oliveira 1. Pontes de Königsberg (1736) 2.

38

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)

Page 39: Grafos Msc. Daniele Carvalho Oliveira 1. Pontes de Königsberg (1736) 2.

39

Busca em Grafos

Page 40: Grafos Msc. Daniele Carvalho Oliveira 1. Pontes de Königsberg (1736) 2.

40

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.

Page 41: Grafos Msc. Daniele Carvalho Oliveira 1. Pontes de Königsberg (1736) 2.

41

Algoritmos de Busca Dois tipos básicos de busca

Busca em Profundidade Busca em Largura

Page 42: Grafos Msc. Daniele Carvalho Oliveira 1. Pontes de Königsberg (1736) 2.

42

Busca em Profundidade

Page 43: Grafos Msc. Daniele Carvalho Oliveira 1. Pontes de Königsberg (1736) 2.

43

1

5 2

34

1

2

3

4

5

5 2

1

2

5

1

4

4

2

4

3

3

Page 44: Grafos Msc. Daniele Carvalho Oliveira 1. Pontes de Königsberg (1736) 2.

44

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 é

Page 45: Grafos Msc. Daniele Carvalho Oliveira 1. Pontes de Königsberg (1736) 2.

45

Busca em Largura

Page 46: Grafos Msc. Daniele Carvalho Oliveira 1. Pontes de Königsberg (1736) 2.

46

1

2

3

4

5

5 2

3

2

2

4

3

1

5 2

34

1Fila

1 2 3 4 5

∞ ∞ ∞ ∞ ∞Distâncias

Page 47: Grafos Msc. Daniele Carvalho Oliveira 1. Pontes de Königsberg (1736) 2.

47

1

2

3

4

5

5 2

3

2

2

4

3

1

5 2

34

Fila

1 2 3 4 5

0 ∞ ∞ ∞ ∞Distâncias

Page 48: Grafos Msc. Daniele Carvalho Oliveira 1. Pontes de Königsberg (1736) 2.

48

1

2

3

4

5

5 2

3

2

2

4

3

1

5 2

34

5 2Fila

1 2 3 4 5

0 1 ∞ ∞ 1Distâncias

Page 49: Grafos Msc. Daniele Carvalho Oliveira 1. Pontes de Königsberg (1736) 2.

49

1

2

3

4

5

5 2

3

2

2

4

3

1

5 2

34

2Fila

1 2 3 4 5

0 1 ∞ ∞ 1Distâncias

Page 50: Grafos Msc. Daniele Carvalho Oliveira 1. Pontes de Königsberg (1736) 2.

50

1

2

3

4

5

5 2

3

2

2

4

3

1

5 2

34

2Fila

1 2 3 4 5

0 1 ∞ ∞ 1Distâncias

Page 51: Grafos Msc. Daniele Carvalho Oliveira 1. Pontes de Königsberg (1736) 2.

51

1

2

3

4

5

5 2

3

2

2

4

3

1

5 2

34

2 4Fila

1 2 3 4 5

0 1 ∞ 2 1Distâncias

Page 52: Grafos Msc. Daniele Carvalho Oliveira 1. Pontes de Königsberg (1736) 2.

52

1

2

3

4

5

5 2

3

2

2

4

3

1

5 2

34

4Fila

1 2 3 4 5

0 1 ∞ 2 1Distâncias

Page 53: Grafos Msc. Daniele Carvalho Oliveira 1. Pontes de Königsberg (1736) 2.

53

1

2

3

4

5

5 2

3

2

2

4

3

1

5 2

34

4Fila

1 2 3 4 5

0 1 ∞ 2 1Distâncias

Page 54: Grafos Msc. Daniele Carvalho Oliveira 1. Pontes de Königsberg (1736) 2.

54

1

2

3

4

5

5 2

3

2

2

4

3

1

5 2

34

4 3Fila

1 2 3 4 5

0 1 2 2 1Distâncias

Page 55: Grafos Msc. Daniele Carvalho Oliveira 1. Pontes de Königsberg (1736) 2.

55

1

2

3

4

5

5 2

3

2

2

4

3

1

5 2

34

3Fila

1 2 3 4 5

0 1 2 2 1Distâncias

Page 56: Grafos Msc. Daniele Carvalho Oliveira 1. Pontes de Königsberg (1736) 2.

56

1

2

3

4

5

5 2

3

2

2

4

3

1

5 2

34

3Fila

1 2 3 4 5

0 1 2 2 1Distâncias

Page 57: Grafos Msc. Daniele Carvalho Oliveira 1. Pontes de Königsberg (1736) 2.

57

1

2

3

4

5

5 2

3

2

2

4

3

1

5 2

34

Fila

1 2 3 4 5

0 1 2 2 1Distâncias

Page 58: Grafos Msc. Daniele Carvalho Oliveira 1. Pontes de Königsberg (1736) 2.

58

1

2

3

4

5

5 2

3

2

2

4

3

1

5 2

34

Fila

1 2 3 4 5

0 1 2 2 1Distâncias

Page 59: Grafos Msc. Daniele Carvalho Oliveira 1. Pontes de Königsberg (1736) 2.

59

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

Page 60: Grafos Msc. Daniele Carvalho Oliveira 1. Pontes de Königsberg (1736) 2.

60

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 Como todos os vértices são colocados e retirados

da fila, o tempo total é

Page 61: Grafos Msc. Daniele Carvalho Oliveira 1. Pontes de Königsberg (1736) 2.

61

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 é