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

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

Algoritmo de Johnson Estrutura de Dados II

Apresentações semelhantes


Apresentação em tema: "Algoritmo de Johnson Estrutura de Dados II"— Transcrição da apresentação:

1 Algoritmo de Johnson Estrutura de Dados II
Lucas Ferreira Lucas Carvalho Nelson Plínio

2 Algoritmo de Johnson Foi criado em 1977 por Donald B. Johnson.
O seu objetivo é encontrar o caminho mínimo para todos os vértices do grafo. Aplicado em grafos que são esparsos, direcionados e valorados. Permite que arestas tenham pesos negativos porém não pode existir um ciclo cujo a soma dos pesos seja negativo.

3 Procedimento: Adiciona um vértice e V arestas ao grafo, onde V = número de arestas Aplica o algoritmo de Bellman-Ford para cada vértice do grafo, utilizando o novo vértice como origem. Retira os vértices e arestas adicionados anteriormente e atualiza os pesos das arestas do grafo Aplica o algoritmo de Dijkstra em cada vértice do novo grafo.

4 Exemplo: -2 A B 4 -1 C 2 -3 D F 1 -4 E

5 1º Passo Verificar se existe algum ciclo negativo no grafo. -2 A B 4 + (-1) + (-2) = 1 4 -1 C 2 -3 D F 1 -4 E

6 2º Passo Adicionar um novo vértice ao grafo e uma aresta para cada vértice do grafo. Estas arestas têm peso 0 devem sua origem deve ser o novo vértice. -2 A B 4 -1 C X 2 -3 D F 1 -4 E

7 3º Passo Aplicar o algoritmo de Bellman-Ford para cada um do vértices do grafo utilizando o novo vértice como fonte. -2 A B 4 -1 X → A C X 0 + (-1) + 4 = 3 2 -3 D F 1 -4 E

8 3º Passo Aplicar o algoritmo de Bellman-Ford para cada um do vértices do grafo utilizando o novo vértice como fonte -2 -2 A B 4 -1 X → B C X 2 -3 0 + (-2) = -2 D F 1 -4 E

9 3º Passo Aplicar o algoritmo de Bellman-Ford para cada um do vértices do grafo utilizando o novo vértice como fonte -2 -2 A B 4 -1 -3 C X 2 -3 -6 -1 D F 1 -4 E

10 4º Passo Retirar as arestas e vértices adicionados anteriormente.
Retirar as arestas e vértices adicionados anteriormente. Atualizar o peso de cada aresta do grafo utilizando a fórmula: -2 X -2 A B 4 -1 NP = PA + O - D -3 C NP = novo peso PA = peso atual O = origem D = destino 2 -3 -6 -1 D F 1 -4 E

11 4º Passo Retirar as arestas e vértices adicionados anteriormente.
Retirar as arestas e vértices adicionados anteriormente. Atualizar o peso de cada aresta do grafo utilizando a fórmula: A → B: (-2) + 0 – (-2) = 0 -2 -2 A B B → C: (-1) + (-2) – (-3) = 0 1 4 C → A: 4 + (-3) – 0 = 1 -1 NP = PA + O - D -3 C C → F: (-3) + (-3) – (-6) = 0 NP = novo peso PA = peso atual O = origem D = destino 2 -3 C → D: 2 + (-3) – (-1) = 0 -6 -1 D F E → D: – (-1) = 2 E → F: (-4) + 0 – (-6) = 2 1 -4 2 2 E

12 5º Passo Aplicar o algoritmo de Dijkstra para cada um dos vértices do novo grafo. -2 A B 1 -3 C -6 -1 D F 2 2 E

13 Floyd Warshall VS Johnson
Performance: O(v³) O(V*E) – Bellman-Ford O(E + V * log V) – Dijkstra

14 Obrigado !


Carregar ppt "Algoritmo de Johnson Estrutura de Dados II"

Apresentações semelhantes


Anúncios Google