CAMINHOS MAIS CURTOS EM GRAFOS

Slides:



Advertisements
Apresentações semelhantes
Algoritmos de Caminho Mínimo em Grafos
Advertisements

Caminhamento em Grafos
Algoritmo de Caminho Mínimo
Árvores 2010/1 Teoria dos Grafos (INF 5037/INF2781)
Árvores CC/EC/Mestrado Teoria dos Grafos ‏ 1.
Ford Fulkerson Teoria dos Grafos.
Algoritmos em Grafos (Parte 2)
Antonio Dirceu Rabelo de Vasconcelos Filho
Gustavo Sant´Anna Ferreira Rodrigo Ribeiro de Souza
Grafos - Caminhos Caminhos Máximo / Mínimo:
CAMINHAMENTO EM GRAFOS (CONTINUAÇÃO)
Teoria dos Grafos Loana Tito Nogueira.
Fluxo em Redes Prof. Ricardo R. Santos.
Grafos – Parte 2 Projeto e Análise de Algoritmos Aline Vasconcelos
Exercícios PAA- Grafos
Exercícios PAA- Grafos
Pontes Seja (G) o número de componentes conexas de G. Uma ponte é uma aresta a tal que (G - a) > (G)
UFES CC/EC/Mestrado Teoria dos Grafos Árvores. UFES CC/EC/Mestrado Teoria dos Grafos Árvores Grafo Acíclico: não possui ciclos.
CC/EC/PPGI/UFES CC/EC/MestradoTeoria dos Grafos Algoritmo de Caminho Mínimo.
Elisabete Longo Isabel Branco Árvores abrangentes.
Análise e Síntese de Algoritmos
Grafos Grafo G = (V, E) V — conjunto de vértices
Problemas de fluxo numa rede
Prof. M.Sc. Fábio Francisco da Costa Fontes Abril
Introdução à Linguagem Prolog
Teoria dos Grafos – Aula 3 Árvores
Árvores.
Árvore Geradora de Peso Mínimo
Ronaldo Celso Messias Correia –
Capítulo 3 - Russell e Norvig
Árvore Geradora Mínima
Baseado em: The Algorithm Design Manual Steven S. Skiena
Caminhos e caminhamentos em Grafos
Algoritmos em Grafos.
Caminho Hamiltoniano ... em um grafo é o caminho que visita
Grafos Árvores Geradoras.
Algoritmos em Grafos Árvores Geradoras Prof. André Renato
Alunos: Bruno Tourinho Tomas Jonathan Augusto da Silva.
Caminhamento em Grafos: Busca em Largura e Busca em Profundidade
Exercícios PAA- Grafos
Celso C. Ribeiro Caroline T. Rocha
Análise e Síntese de Algoritmos
Grafos Noções Básicas.
Algoritmos Gulosos em Grafos
Problema do menor Caminho
Disciplina Análise de Algoritmos BCC-UFU Profa. Sandra de Amo
Teoria dos Grafos Conceitos Preliminares
Algoritmo de PRIM para MST
Busca Combinatorial e Métodos de Heurística
Análise de Complexidade do Algoritmo de Dijkstra
Disciplina Análise de Algoritmos Bacharelado em CC
Complexidade em Tempo de um Algoritmo
Msc. Daniele Carvalho Oliveira
Algoritmos para Obtenção de Árvore Geradora Mínima
Como analisar um algoritmo
Resolução de Problemas de Busca
Problemas NP-completos e Programação Dinâmica

Algoritmos FPT para o Problema da k-Cobertura por Vértices
Problema MST Método Genérico Guloso usando Estratégia do Corte
Análise e Síntese de Algoritmos
Grafos Anjolina Grisi de Oliveira 2005
Análise e Síntese de Algoritmos Algoritmos GreedyCLRS, Cap. 16.
Programação Dinâmica Profa. Sandra de Amo Bacharelado em Ciência da Computação – UFU Disciplina de Análise de Algoritmos.
© Copyright 2003 Algoritmos e Estruturas de Dados - Todos os direitos reservados Busca em Grafos IF672 - Algoritmos e Estruturas de Dados CIn - UFPE ©
Algoritmo de Dijkstra.
 Prof. Miguel Gabriel Prazeres de Carvalho 1. 2 Redes Sociais GPS Para o correio. Para Viajantes. Pesquisas Biológicas. Distribuição de Tarefas. Recomendações.
Grafos Prof. Miguel Gabriel Prazeres de Carvalho.
© Copyright 2003 Algoritmos e Estruturas de Dados - Todos os direitos reservados Busca Gulosa em Grafos IF672 - Algoritmos e Estruturas de Dados CIn -
Transcrição da apresentação:

CAMINHOS MAIS CURTOS EM GRAFOS

Caminho entre dois vértices usando busca em profundidade: cada ordem dos vértices produz um caminho distinto. A B C D E F Encontrar o caminho produzido pelo algoritmo de busca em profundidade, ligando os vértices A a E, usando a seguinte ordenação entre os vértices: A < B < C < D < E < F

[1,12] A Arestas Forward: B D C F C E A  E Arestas Back: F  A Não há arestas Cross B [2,11] C [3,10] [4,9] A D B [5,8] F C D E [6,7] E F Árvore de Busca em Profundidade Caminho: A, B, C, D, F, E Tamanho = 5

Encontrar o caminho produzido pelo algoritmo de busca em profundidade, ligando os vértices A a E, usando a seguinte ordenação entre os vértices: A < B < C < E < D < F [1,12] A [2,11] B A [3,10] C B [6,9] E D [4,5] C D [7,8] F E F Árvore de Busca em Profundidade Caminho: A, B, C, E Tamanho = 3

EXISTE ORDENAÇÃO DE VÉRTICES QUE PRODUZ CAMINHO MAIS CURTO ENTRE A e E ? SIM !! A < E < B < D < C < F CAMINHO [A,E] TAMANHO = 1 [1,12] A [4,11] [2,3] B A E [9,10] C D B [5,8] C D [6,7] F E F CROSS = C  F, C D, F  E, C E BACK = F A

BUSCA EM LARGURA Nivel 0 A A B E Nivel 1 B C D Nivel 2 C D F Nivel 3 E Busca em largura sempre produz Caminho mais curto entre dois vértices, Independente da ordenação escolhida dos vértices.

Algoritmo Busca em Largura Input: Grafo G (dirigido ou não), vértice S Output: para cada vértice v, dist(v) de S a v, distância do menor caminho entre S e v. Para todo vértice u O(|V|) dist(u) = infinito dist(S) = 0 Q = [S] (Q é uma fila) While Q ≠ O(|V|) u = eject(Q) Para cada aresta uv O(|E|) Cada aresta é testada 2 vezes se dist(v) = infinito inject(Q,v); dist(v) = dist(v) + 1 Complexidade = O(|V| + |E|)

Caminho mais curto em grafos com distâncias entre vértices Nivel 0 A 8 A 2 8 B E Nivel 1 30 1 B 11 1 2 C D Nivel 2 C D 30 30 4 2 F Nivel 3 E F Busca em Largura a partir de A produz caminho com menor número de arestas : A BC F O custo deste caminho se contabilizarmos as distâncias entre as arestas é = 39

Caminho mais curto em grafos com distâncias entre vértices 2 A 8 2 2 8 1 B 11 B 11 1 2 C D 2 C D 30 4 1 30 4 2 E F E F Caminho mais curto: A  B  C  D  F Tem 4 arestas Custo = 20

Algoritmo para determinar caminho mais curto com distâncias Algoritmo de Dijkstra

Filas com prioridade

Idéia do algoritmo Dijkstra B 4 C 2 B 3 A 0 B inf C inf 4 A B 2 1 Fila com prioridade C

Idéia do algoritmo Dijkstra B 4 C 2 B 3 A 0 B inf C inf 4 A B 2 1 Fila com prioridade C

Algoritmo de Dijkstra Input: Grafo G (dirigido ou não), vértice S, cada aresta e tem uma dist(e) associada. Output: para cada vértice v, dist(v) de S a v, distância do menor caminho entre S e v. Para todo vértice u dist(u) = infinito prev(u) = nil dist(S) = 0 Constrói H = fila com prioridade contendo os vértices de G (prioridade é a menor distância a seus filhos) While H ≠ u = deletemin(H) Para cada aresta uv (arestas são ordenadas em ordem descrescente das distâncias) se dist(v) > dist(u) + dist(u,v) dist(v) = dist(u) + dist(u,v) prev(v) = u Ajusta_valor(H,v) (v é recolocado com sua prioridadade ajustada)