A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

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

Apresentações semelhantes


Apresentação em tema: "Grafos Msc. Cintia Carvalho Oliveira Doutoranda em Computação – UFU"— Transcrição da apresentação:

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

2 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.

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

4 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

5 Outro Exemplo Existe um caminho euleriano para o grafo abaixo:

6 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.

7 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

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

9

10 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

11 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)

12 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)

13 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)

14 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)

15 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)

16 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)

17 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)

18 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)

19 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)

20 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)

21 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)

22 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)

23 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

24 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

25 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

26 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

27 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

28 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

29 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

30 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

31 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

32 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

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

34 Conceitos de Grafos

35 Grafo planar 1 5 2 4 3

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

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

38 Grafo Trivial e Grafo Simples
B C

39 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

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

41 Grafo Completo

42

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

44 Outros exemplos

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

46 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)

47 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.

48 Subgrafo 4 2 1 4 3 3 1 4 3

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

50 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

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

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

53 Grafo complementar

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

55 Digrafo 2 1 3 4 5 6

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

57 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

58 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

59 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

60 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

61 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

62 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

63 Á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 𝐺.

64

65 Representação de Grafos

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

67 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, 𝑠𝑒 𝑖,𝑗 ∉𝐸(𝐺)

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

69 1 2 3 4 5 1 5 2 4 3

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

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

72 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

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

74 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

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

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

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

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

79 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) 𝑗

80 Busca em Grafos

81 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.

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

83 Busca em Profundidade

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

85 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 é 𝑂(|𝑉|+|𝐸|)

86 Busca em Largura

87 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

88 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

89 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

90 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

91 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

92 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

93 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

94 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

95 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

96 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

97 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

98 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

99 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

100 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 𝑂(|𝑉|)

101 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 é 𝑂(|𝑉|)

102 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 é 𝑂(|𝑉|+|𝐸|)

103 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.

104 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

105 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.

106 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.

107 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.

108 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

109 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

110 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

111 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

112 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

113 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

114 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

115 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

116 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.

117 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.

118 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.

119 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.

120 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.

121 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.

122 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...

123


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

Apresentações semelhantes


Anúncios Google