61
Grafos Msc. Daniele Carvalho Oliveira 1

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

Embed Size (px)

Citation preview

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 é