Algoritmo de Dijkstra Aplicado ao Problema do Metrô de Paris

Documentos relacionados
Automação do tráfego de veículos: sistema de busca de caminho de menor custo entre dois pontos

Web site. Profa. Patrícia Dockhorn Costa.

06 Grafos: Caminhos Mínimos SCC0503 Algoritmos e Estruturas de Dados II

Estruturas de Dados Aula 1: Introdução e conceitos básicos 28/02/2011

Prova Didática Grafos: Árvores Geradoras e Caminhos Mínimos, Análise de Complexidade

Algoritmos em Grafos: Caminho Mínimo

Modelagem de um sistema informatizado de calculo de rotas logísticas com algoritmo de busca heurística Elias Vidal Bezerra Junior 1

Representações de Grafos

Estruturas de Dados. Grafos VIII: Árvores Geradoras Mínimas. Prof. Ricardo J. G. B. Campello

PLANO DE DISCIPLINA DISCIPLINA: Algoritmos e Programação

Teoria dos Grafos Aula 8

PLANO DE DISCIPLINA DISCIPLINA: Análise de Algoritmos

5COP096 TeoriadaComputação

PCC104 - Projeto e Análise de Algoritmos

Árvore Geradora Mínima

Estrutura de Dados. Ricardo José Cabeça de Souza Parte 4

Estudo e Implementação de Algoritmos de Roteamento sobre Grafos em um Sistema de Informações Geográficas

PLANO DE DISCIPLINA DISCIPLINA: Estrutura de Dados 2

Protocolos de Roteamento link-state

PLANO DE DISCIPLINA DISCIPLINA: Algoritmos e Programação

Abordagens para Problemas Intratáveis

Edsger Wybe Dijkstra

Linguagens de Programação

CIC 110 Análise e Projeto de Algoritmos I

Estudo e implementação de heurísticas para determinação do caminho de menor custo para atender a rotas pré estabelecidas. Por: Charles Pereira

Distâncias Mínimas. Pedro Ribeiro 2014/2015 DCC/FCUP. Pedro Ribeiro (DCC/FCUP) Distâncias Mínimas 2014/ / 27

GRAFOS Conceitos Básicos (Parte 1)

APLICAÇÕES DE BUSCA EM GRAFOS

ATIVIDADES PRÁTICAS SUPERVISIONADAS

Análise de Algoritmos. Prof. Sérgio Carlos Portari Júnior

UNIVERSIDADE LUSÍADA DE LISBOA. Programa da Unidade Curricular ALGORITMOS E ESTRUTURAS DE DADOS Ano Lectivo 2017/2018

Algoritmos e Estruturas de Dados II

Melhor caminho entre duas estações de metro

Caminhos mínimos de única origem

GRAFOS BUSCAS E MENOR CAMINHO. Prof. André Backes

UNIVERSIDADE LUSÍADA DE LISBOA. Programa da Unidade Curricular ALGORITMOS E ESTRUTURAS DE DADOS Ano Lectivo 2018/2019

PLANO DE DISCIPLINA DISCIPLINA: Análise de Algoritmos

Grafos Árvores Geradoras Mínimas

Caminho mais curto e o algoritmo de Dijkstra

Teoria dos Grafos 1. Teoria dos Grafos

Teoria dos Grafos Aula 7

Algoritmos em Grafos

O estudo utilizando apenas este material não é suficiente para o entendimento do conteúdo. Recomendamos a leitura das referências no final deste

RECONHECIMENTO FACIAL UTILIZANDO EIGENFACES

Teoria da Complexidade Computacional

Projeto e Análise de Algoritmos

5COP096 TeoriadaComputação

Algoritmo de Dijkstra Estudo e Implementação

Algoritmos e Estrutura de Dados. Aula 01 Apresentação da Disciplina e Introdução aos Algoritmos Prof. Tiago A. E. Ferreira

ALGORITMOS E ESTRUTURAS DE DADOS CES-11

If969 - Algoritmos e Estruturas de Dados

3. Resolução de problemas por meio de busca

Informações Importantes! INF TURMA A

Construção de bases de dados geográficos em SIG: resultados preliminares do Georreferenciamento da malha viária da cidade de Bambuí-MG

Estruturas de Dados. Pedro Ribeiro 2017/2018 DCC/FCUP. Pedro Ribeiro (DCC/FCUP) Estruturas de Dados 2017/ / 16

Algoritmos Distribuídos para Roteamento em Redes Ad Hoc

Implementação de algoritmos para consultas de segmentos em janelas

(P AA) 2 PACOTE DE APOIO A APRENDIZAGEM DE PROJETO E ANÁLISE DE ALGORITMOS: IMPLEMENTAÇÃO EM JAVA

AMBIENTE DIDÁTICO GRÁFICO PARA A COMPREENSÃO DE LÓGICA DE PROGRAMAÇÃO. Rodrigo Ferreira da Silva

Flávio G F Camacho Vipnet Baixada Telecomunicações e Informática LTDA

Emparelhamentos Máximos em Grafos Bipartidos

Projeto e Análise de Algoritmos. Introdução. Prof. Ademir Constantino Universidade Estadual de Maringá Departamento de Informática

Aspectos Computacionais do Desenvolvimento de uma Biblioteca para Desenho de Redes Bayesianas

Campus Capivari Análise e Desenvolvimento de Sistemas (ADS) Prof. André Luís Belini /

INF INTELIGÊNCIA ARTIFICIAL TRABALHO 1 BUSCA HEURÍSTICA

Grafos. Exemplo de árvore geradora mínima. Notas. Notas. Notas. Notas. Árvores espalhadas mínimas. Como construir uma árvore geradora miníma

CAL ( ) MIEIC/FEUP Grafos: Introdução (Março, 2011)

UNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL INSTITUTO DE INFORMÁTICA DEPARTAMENTO DE INFORMÁTICA APLICADA

Busca Heurística. Profa. Josiane M. P. Ferreira

Uma ferramenta de simulação numérica e simbólica de circuitos quânticos

Grafos Caminhos mais Curtos

Caminho Mínimo de Fonte Única em Grafos sem Pesos Negativos

04 Grafos: caminhos e coloração SCC0503 Algoritmos e Estruturas de Dados II

Teoria da Computação. Aula 9 Pesquisa em Memória Secundária 5COP096. Aula 9 Prof. Dr. Sylvio Barbon Junior. Sylvio Barbon Jr

BCC402 Algoritmos e Programação Avançada. Prof. Marco Antonio M. Carvalho Prof. Túlio Toffolo 2012/1

1 Distância em Grafos

Programação Dinâmica: Algoritmo de Bellman-Ford

Estudo sobre modelos de rede e algoritmos de busca de caminho mínimo para desenvolvimento de sistema para análise de malha viária urbana

Teoria dos Grafos Aula 9

CÁLCULO DO TAMANHO AMOSTRAL EM R SHINY. Calculation of the Sample Size in R Shiny

Ricardo José Cabeça de Souza.

Mapeamento de Rotas Turísticas Inerentes a Analise da Complexidade de Algoritmos

FURBMOBILE: UMA APLICAÇÃO PARA VISUALIZAÇÃO E ACOMPANHAMENTO DA MATRIZ CURRICULAR

TGR BCC Representação Computacional de Grafos. Prof. Ricardo José Pfitscher

03 Grafos: percurso, ponderação e caminhos SCC0503 Algoritmos e Estruturas de Dados II

Complexidade de Tempo e Espaço

Aplicação do algoritmo de Dijkstra para o problema de roteamento da frota de táxis partindo de um ponto fixo

Algoritmos e Estruturas de Dados II

Grafos - Introdução. Pedro Ribeiro 2014/2015 DCC/FCUP. Pedro Ribeiro (DCC/FCUP) Grafos - Introdução 2014/ / 32

CES-11. Algoritmos e Estruturas de Dados. Carlos Alberto Alonso Sanches Juliana de Melo Bezerra

GRAFOS Aula 04 Caminhos, Conexidade e Distância Max Pereira

Mecanismos de Interrupção e de Exceção, Barramento, Redes e Sistemas Distribuídos. Sistemas Operacionais, Sistemas

Oferta de disciplinas para o período 2013/2

BCC204 - Teoria dos Grafos

O estudo utilizando apenas este material não é suficiente para o entendimento do conteúdo. Recomendamos a leitura das referências no final deste

Ferramentas de Suporte

PLANO ANALÍTICO DA DISCIPLINA DE ESTRUTURA DE DADOS E ALGORÍTMOS

SERVIÇO PÚBLICO FEDERAL MINISTÉRIO DA EDUCAÇÃO INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE MINAS GERAIS IFMG

SERVIÇO PÚBLICO FEDERAL MINISTÉRIO DA EDUCAÇÃO INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE MINAS GERAIS IFMG

SERVIÇO PÚBLICO FEDERAL MINISTÉRIO DA EDUCAÇÃO INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE MINAS GERAIS IFMG

Transcrição:

Algoritmo de Dijkstra Aplicado ao Problema do Metrô de Paris Sérgio Aurélio Ferreira Soares, Brauliro Gonçalves Leal, Renato Gabriel Barbosa Pereira, Ivonaldo Faustino Silva Junior, Danilo Macário Bezerra Silva Colegiado de Engenharia da Computação Universidade Federal do Vale do São Francisco (UNIVASF) Juazeiro BA Brasil {eng.sergiosoares, danilomacbs}@gmail.com, brauliro.leal@univasf.edu.br,{ifaustinosj, renatogabrielbp}@hotmail.com Abstract. This paper presents an application of Dijkstra's algorithm to solve the classic problem of calculating the shortest route between subway stations in Paris and the consequences of a restrictive or erroneous choice of the variables involved in the problem. To view the results of the calculations, we developed an open-source software which calculates and displays the best route on a map. Resumo. Neste artigo é apresentada uma aplicação do algoritmo de Dijkstra na solução de um problema clássico de cálculo do trajeto mais curto entre estações do metrô de Paris e as consequências de um levantamento restritivo ou errôneo das variáveis envolvidas no problema. Para visualizar os resultados dos cálculos foi desenvolvido um software de código-aberto que executa o cálculo da rota e exibe o melhor trajeto em um mapa. 1. Introdução Algoritmos de busca são ferramentas utilizadas na resolução de problemas complexos e que necessitam, normalmente, de uma abordagem diferente da oferecida pela programação convencional. São muito comuns nas soluções de problemas pesquisados pela Inteligência Artificial (IA). Segundo Russell e Norvig (2004), os algoritmos de busca foram estabelecidos como as principais armas do arsenal dos pesquisadores de IA na década de 1960. Muitas aplicações do mundo real requerem o auxílio destes algoritmos. Neves (2007) cita vários exemplos de aplicações que utilizam estes algoritmos como, por exemplo, o roteamento de veículos em um sistema de transporte, que se integram a sistemas de GPS (Global Positioning System), computadores portáteis e celulares. Estes sistemas pertencem ao modelo dos Sistemas de informações Geográficas (SIG). Outra aplicação deste tipo de sistema e que utiliza o algoritmo de Dijkstra pode ser obtida em Derekenaris et al. (2000) onde os autores propõem um sistema de gerenciamento de ambulâncias e emergências baseado em SIG, GPS e GSM (Global System for Mobile Communication). Outros exemplos clássicos são a transmissão de pacotes em redes de computadores e projetos de circuitos integrados em que os componentes precisam ser ligados por um menor caminho possível. Em contraste com a importância e grande utilização destes algoritmos, a compreensão do seu funcionamento, em geral, não é imediata e trivial durante o processo ensino-aprendizagem. Isto ocorre devido as suas particularidades e

principalmente a mudança no método de programação utilizado. Alguns exemplos são os algoritmos que utilizam estratégias gulosas, como o de Dijkstra e buscas que se baseiam na recursividade, que são bastante diferentes dos padrões convencionais. Partindo desta motivação, este trabalho visa ilustrar a aplicação do algoritmo de Dijkstra na solução de um problema clássico de cálculo do trajeto mais curto entre estações de um metrô, bem como as consequências de uma definição errônea das variáveis envolvidas no problema. Como metodologia, foi desenvolvido um software que executa o cálculo das rotas e exibe o trajeto em um mapa. Este software é de código-aberto, está disponível gratuitamente para download. A sua utilização não fica restrita apenas a este trabalho e pode ser aplicada em outros fins como, por exemplo, o ensino de algoritmos de busca. 2. Revisão bibliográfica 2.1. Algoritmo de Dijkstra O algoritmo mais utilizado para determinar o menor caminho entre dois nós de um grafo foi desenvolvido por Edsger Wybe Dijkstra e publicado em 1959. Sua utilização se deve a não necessidade de uma busca exaustiva em todos os caminhos, característica que permite um aumento da eficiência da busca. Segundo Tenenbaum et al. (1995) e Cormem et al. (1999), implementando-se uma fila de prioridades com um heap ascendente o algoritmo pode executar utilizando O((e+n)logn) operações, onde e é o número de arestas e n é o número de vértices. Na solução desenvolvida neste trabalho, por questões de simplicidade, optou-se por implementar uma fila de prioridade baseada em matriz de adjacências, o que faz com que a complexidade do algoritmo seja O(n 2 ). Em Neves (2007) e Ahuja et al. (1990) podem ser obtidas variações mais eficientes do algoritmo. 2.2. Descrição do Algoritmo Segundo Dijkstra (1959), para encontrar o menor caminho entre dois nós P e Q, usa-se o fato de que, se R é um nó no caminho mínimo entre P e Q, conhecendo o último, consequentemente conhece-se o caminho de P a R. Os caminhos mínimos de P até outros nós são construídos de forma incremental até que se atinja Q. Dijkstra dividiu os nós em três conjuntos: A, B e C. No primeiro, estão os nós para os quais já se conhece a menor distância entre eles e o nó de origem (P). No segundo, os nós de onde será retirado o próximo nó a ser adicionado a A (nós que estão conectados a algum nó do conjunto A). No conjunto C estão os nós remanescentes (não conectados a nenhum nó do conjunto A). As arestas também foram divididas em três grupos: I, II e III. No conjunto I, estão as arestas que fazem parte do menor caminho do nó P aos nós do conjunto A. O conjunto II, possui as próximas arestas que serão selecionadas para o conjunto I, ou seja, uma e somente uma aresta deste conjunto leva a cada nó do conjunto B. O terceiro conjunto possui as arestas remanescentes (rejeitas ou ainda não consideradas). O algoritmo inicia com todos os nós e arestas nos conjuntos C e III, respectivamente e adiciona-se o nó P ao conjunto A. Considera-se então o último nó adicionado ao conjunto A e realizam-se repetidamente dois passos a partir dele.

No primeiro passo, consideram-se todas as arestas r que conectam o nó P com nós R dos conjuntos B ou C. Se um nó R pertence ao conjunto B, é investigado se o uso da aresta r correspondente proporciona uma menor distância de P até R do que as arestas já conhecidas do conjunto II. Em caso negativo, a aresta r é rejeitada. Caso positivo, r substitui a aresta correspondente no conjunto II. Por outro lado, se um nó R pertence ao conjunto C, ele é adicionado ao conjunto B e a aresta r ao conjunto II. No segundo passo, cada nó do conjunto B pode ser conectado ao nó P de somente uma maneira, se forem consideradas apenas as arestas dos conjuntos I e II. Assim, cada nó do conjunto B, possui uma distância ao nó P. O nó com menor distância é então transferido de B para A e a aresta correspondente é transferida de II para I. Retorna-se então ao primeiro passo e repete-se o processo até que o nó Q seja transferido para o conjunto A. Dessa forma, a solução é então obtida. 3. Materiais e Métodos O problema abordado neste trabalho consiste no cálculo do trajeto mais rápido entre estações do Metrô de Paris. No total, considerou-se 14 estações (E1 a E14) interligadas através de quatro linhas (amarela, vermelha, azul e verde) como apresentado na Figura 3.1. São dadas as distâncias entre as estações, velocidade do trem e tempo de troca de linha (baldeação). Figura 3.1 - Mapa do metrô de Paris Para verificar o funcionamento do algoritmo de Dijkstra no problema do Metrô de Paris, foi desenvolvido um software em linguagem C++ composto por uma interface que permite ao usuário configurar parâmetros para a execução. Estes parâmetros são:

estações de origem e destino, velocidade do trem e tempo de troca de linha. Na Figura 3.2, é apresentada a interface do programa. O mapa utilizado neste trabalho pode ser encontrado em: Introdução aos Agentes Inteligentes (Flávia Barros e Ricardo Prudêncio) 1. Figura 3.2 - Interface do software desenvolvido Na implementação do algoritmo de Dijkstra, considerou-se apenas a distância como variável, não levando em conta o tempo de baldeação. O software calcula o trajeto mais curto, fornece as instruções ao usuário e estima o tempo total do percurso, somando os de tempos de troca de linha quando necessário ao final do processamento. No mapa, o software destaca o caminho a ser percorrido pelo trem e mostra com cores diferentes as linhas que são atravessadas no trajeto. Uma versão compilada do software (para sistemas operacionais Windows) bem como o código fonte completo do projeto desenvolvido no ambiente integrado de desenvolvimento (IDE) C++ Builder 2009 está disponível gratuitamente em http://metroparis.sourceforge.net. 4. Resultados e Discussões Pelo fato de considerar apenas a distância como variável no algoritmo de Dijkstra, o cálculo do trajeto pode não apresentar o resultado do percurso mais rápido e sim do mais curto. Por exemplo, considere na Figura 3.1, que um passageiro deseja sair da estação E1 a E11. Visualmente é possível perceber que o caminho E1, E2, E9 e E11 é o mais curto. E essa é a resposta que o software desenvolvido neste trabalho irá fornecer. No entanto, o passageiro foi obrigado a fazer duas trocas de linha (Azul para amarela e amarela para vermelha). Já o percurso que passa pelas estações E1, E2, E3, E9 e E11 é visualmente mais longo, por outro lado, o passageiro só passa por uma troca de linha 1 http://www.cin.ufpe.br/~in1116/iai-2011/lista1-iai-2011.doc.

(Azul para vermelha). Assim, o trajeto mais rápido vai depender também do tempo de baldeação, podendo ou não coincidir com o mais curto. Assim, percebe-se que o levantamento das variáveis relevantes ao sistema foi realizado de forma muito restritiva. Como conseqüência, os resultados nem sempre oferecem a melhor alternativa ao passageiro. Na seção 5 são apresentadas melhorias que serão implementadas futuramente e permitirão um resultado mais conciso. Do ponto de vista pedagógico, a ferramenta de software desenvolvida mostra-se muito útil, pois, permite ao usuário a visualização do funcionamento prático do algoritmo de Dijkstra, onde o usuário pode selecionar parâmetros ou modificar a codificação de forma a experimentar novos comportamentos no cálculo dos trajetos. A união entre os conceitos teóricos e práticos apresenta-se como uma alternativa essencial na evolução do processo ensino-aprendizagem. 5. Trabalhos Futuros Em trabalhos futuros pretende-se adicionar ao software a opção de utilizar um algoritmo de busca informada, como o A *. Também será modificada a implementação do algoritmo de Dijkstra de forma que o tempo de troca de linha seja considerado na tomada de decisão. Isto é, dado um tempo de baldeação variável, calcular o trajeto mais rápido ao invés do mais curto. Esta abordagem implica na adição de mais uma variável ao sistema: a quantidade de trocas de linha. O algoritmo A * deverá ser implementado utilizando como heurística apenas a distância em linha reta de cada estação do percurso até a estação de destino, já que o tempo de troca de linha é variável, o que dificulta a criação de uma heurística mais robusta. Sendo assim, pretende-se obter como resultados diferenças nos cálculos dos trajetos, já que o A * não levará em conta o tempo de baldeação e o Dijkstra levará. Estas diferenças sinalizarão que as implementações usuais (utilizando o A * ) para este problema podem falhar em determinadas situações e retratarão claramente o escopo de utilização de cada algoritmo. 6. Conclusão O problema de encontrar caminhos mínimos em grafos se revela presente e de extrema importante em diversas áreas de conhecimento. Em contrapartida, estudar o seu funcionamento e características através da teoria pode, em muitos casos, não ser uma tarefa trivial. Unir teoria e prática, em geral, proporciona uma evolução mais rápida e menos onerosa do processo ensino-aprendizagem. Dessa forma, este trabalho proporcionou uma aplicação prática do algoritmo de Dijkstra, bem como, uma análise da importância do levantamento adequado das variáveis relevantes ao problema em questão. Como legado, é deixado um software código-aberto, que permite ao usuário a manipulação do algoritmo de Dijkstra e pode ser utilizado para fins didáticos como, por exemplo, o ensino de algoritmos de busca.

7. Referências Derekenaris, G.; Garofalakis J.;Makris C.;Prentzas J.;Sioutas S.;Tsakalidis A. (2001). Integrating GIS, GPS and GSM technologies for the effective management of ambulances. Computers, Environment and Urban Systems 25 (2001) 267-278. Edsger W. Dijkstra. (1959) A note on two problems in connexion with graphs. Numerische Mathematik, 1:269-271. Neves, Patricia Takaki. (2007) Variações e Aplicações do Algoritmo de Dijkstra. Campinas, [S.P. : s.n]. Dissertação de mestrado. Ravindra K. Ahuja, Kurt Mehlhorn, James Orlin, and Robert E. Tarjan. (1990). Faster algorithms for the shortest path problem. J. ACM, 37(2):213-223. Russel, Stuart Jonathan.; Norvig, Peter. (2004) Inteligência artificial. 2. ed.; Rio de Janeiro: Elsevier. Tenenbaum, Aaron M.; Langsam, Yedidyah; Augenstein, Moshe J. (1995) Estruturas de dados usando C. São Paulo: Pearson Makron Books. Thomas H. Cormen, Charles E. Leiserson, and Ronald L. Rivest. (1999) Introduction to Algorithms. MIT Press Publ, Cambridge Mass, 22 edition.