Escolar Documentos
Profissional Documentos
Cultura Documentos
3 Roberto C. Ferreira
4 E-mail: roberto.ferreira@usp.br
5 RESUMO. Neste artigo apresentamos uma proposta de modelagem para aplicação dos
6 algoritmos de Dijkstra e A* em problemas de determinação de caminho mais curto (ou
7 mais rápido, ou menos custoso). Utilizamos como base o Mapa de Transporte Metropo-
8 litano de São Paulo para determinar os parâmetros e modelagem, com o objetivo de en-
9 contrar trajetos mais rápidos entre estações. Através do modelo proposto é demonstrado
10 uma redução potencial signicativa na complexidade computacional superior a 70%. A
11 partir destas informações programas e modelos de otimização podem ser desenvolvidos
12 para diferentes problemas relacionados a estas áreas.
15 ABSTRACT. This paper presents a modeling proposal for the application of Dijkstra
16 and A* algorithms in shortest (or faster, or less costly) path determination problems. We
17 used the Metropolitan Transport Map of São Paulo as a base to determine the parameters
18 and modeling, with the goals of nding faster routes between stations. Through the
19 proposed model, a signicant potential reduction in computational complexity greater
20 than 70% is demonstrated. From this information, programs and optimization models
21 can be developed for dierent problems related to these areas.
24 1 Introdução
25 Quando realizamos qualquer tipo de viagem, o melhor caminho e a consequente
26 duração prevista do trajeto são fundamentais. Desde viagens relacionadas às
27 empresas de transporte, pequenos deslocamentos de automóvel, uso de transporte
1
1 público, ou mesmo deslocamentos a pé, em geral buscamos otimizar nosso tempo
2 entre um determinado ponto de origem e outro de destino. Diversos estudos
3 relacionados a estes temas demonstram esta importância, como podemos observar,
4 por exemplo, em Aarão et al. (2019), Caruso et al. (2016), Cheng et al. (2018) e
5 Liu and Huang (2020).
6 Embora sejam muitas as variáveis envolvidas neste tipo de decisão, quando pen-
7 samos em transporte público, a duração do trajeto em geral é o fator fundamental
8 de decisão, principalmente quando o custo de transporte não varia. É o caso, por
9 exemplo, da rede viária de transporte de metrôs e trens na cidade de São Paulo.
10 O usuário tem à sua disposição 13 linhas interligadas através de 19 conexões (Go-
11 verno do Estado de São Paulo (2023). Praticamente todas as opções de trajeto
12 envolvem a aplicação de um pagamento único, independentemente das conexões
13 realizadas.
14 Para encontrar os trajetos mais curtos entre diversas opções são necessários algo-
15 ritmos para a resolução de problemas complexos que, em geral, não são simples
16 de aplicar. Desta forma buscamos, através deste artigo, mostrar uma forma de
17 simplicar grafos visando a utilização de dois algoritmos bastante utilizados em
18 problemas relacionados a encontrar o caminho mais curto: o algoritmo de Dijks-
19 tra e o algoritmo A*. Utilizamos as fórmulas de complexidade computacional e
20 as informações relacionadas ao mapa de transporte metropolitano de São Paulo
21 em suas exemplicações.
22 2 Revisão Bibliográca
23 O problema do caminho mais curto Cormen et al. (2009) envolve encontrar o
24 caminho de menor custo entre dois pontos especícos, vértice (nó) de origem e de
25 destino, em um grafo com vértices (nós) e arestas (arcos) ponderados. O objetivo
26 é determinar a rota com a menor distância, tempo ou custo total, dependendo do
27 critério estabelecido.
28 Para resolver este problema, vários algoritmos foram desenvolvidos. Neste artigo
29 daremos ênfase a dois algoritmos entre os mais utilizados.
2
1 artigo, ele serve como uma dimensão comparativa entre os algoritmos, com meno-
2 res valores para os algoritmos menos complexos), onde V é o número de vértices
3 e A é o número de arestas. O algoritmo considera um conjunto S de menores
4 caminhos, iniciando com um vértice inicial I. A cada passo do algoritmo busca-se,
5 nas adjacências dos vértices pertencentes a S, aquele vértice com menor distância
6 relativa a I e adiciona-o a S e, então, repetindo os passos até que todos os vértices
7 alcançáveis por I estejam em S. Arestas que ligam vértices já pertencentes a S são
8 desconsideradas. Este seria um pseudocódigo para este algoritmo (adaptado de
9 Junqueira (2023):
3: d(i) = ∞, p(i) = −
4: m para
5: d(s) = 0, p(s) = ∗
6: enquanto |S (perm) | < |N | faça
7: escolha o vértice i ∈ S (temp) que tenha o menor d(i)
8: S (perm) = S (perm) ∪ {i}, S (temp) = S (temp) \ {i}
9: para cada j ∈ Si faça
10: se d(j) > d(i) + cij então
11: d(j) = d(i) + cij
12: p(j) = i
13: m se
14: m para
15: m enquanto
10 2.2 Algoritmo A*
11 Algoritmo A* (Lê-se: A-estrela), é um algoritmo que busca o caminho em um
12 grafo de um vértice inicial até um vértice nal. Foi descrito pela primeira vez
13 em 1968 por Peter Hart, Nils Nilsson, e Bertram Raphael Hart et al. (1968) .
14 Na publicação deles, ele foi chamado de algoritmo A; usando este algoritmo com
15 uma heurística apropriada atinge-se um comportamento ótimo, e passou a ser
16 conhecido por A*.
17 Segundo Djojo and Karyono (2013) o algoritmo A* realiza a busca de caminhos
3
1 mínimos utilizando funções heurísticas, ou seja, a seleção dos vértices é baseada na
2 distância a partir do vértice de início mais a distância aproximada até o destino.
3 Essa estimativa de aproximação pode ser representada pela função
5 onde g(n) representa a distância (ou custo) percorrida até o vértice n a partir do
6 vértice inicial, h(n) é uma heurística (função heurística) que estima a distância
7 (ou custo) do vértice n ao objetivo desejado. Portanto f(n) estima a distância total
8 (ou custo total) da solução mais barata que passa pelo vértice n. A complexidade
9 computacional é O(V log(V )) (V é o número de vértices).
10 Sua aplicação vai desde aplicativos para encontrar rotas de deslocamento entre
11 localidades a resolução de problemas, como a resolução de um quebra-cabeças.
12 Ele é muito usado em jogos.
13 Um pseudocódigo para o A*, adaptado de Gonçalves (2013) seria:
4
1 3 Métodos
2 Nesta seção descrevemos a metodologia proposta para o uso dos algoritmos e
3 uma proposta de simplicação. Utilizaremos a rede de transporte metropolitano
4 de São Paulo como base.
5
Figura 2: Intersecção A - linhas com conexões - elaborado pelo autor
8 L1 e L2 - estação inicial
1. Lil (0) - Linha l, estação inicial (estação 0) -
9 2. Lfl (u) - Linha I, estação nal (estação u) - L1-estação nal
10 3. Ll (n) - Linha l, estação n - L1 estação 2,3,5,6 e L2 estação 2
11
l (y) - Linha l, estação y, conexão A com outras linhas - L1 estação 4 e L2
4. LA
12 estação 3
13 5. OR = Lm (o) - estação de origem o na Linha m para o cálculo do trajeto ideal
6
1 6. DE = Ln (d) - estação de destino d na Linha n para o cálculo do trajeto ideal
2 7. tLl - tempo médio entre estações da Linha l
3 8. tA Lx Ly - tempo de transferência na conexão A entre as linhas x e y
4 9. tORi - tempo entre OR e conexão adjacente i (podem ser uma ou duas)
5 10. tDEi - tempo entre DE e conexão adjacente i (podem ser uma ou duas)
6 Para a denição do grafo (que neste caso chamarei de grafo reduzido), utilizamos
7 como vértices os pontos de conexão (com um vértice para cada linha existente
8 nesta conexão) e os pontos de origem (OR) e destino (DE) ligados às conexões
9 adjacentes a eles (ou seja, cada um deles terá uma ou duas arestas até a(s) co-
10 nexão(xões) adjacente (s) ou até o outro ponto, caso a origem e destino estejam
11 entre as mesmas conexões adjacentes). Com isto evitamos a utilização de diversas
12 estações (englobando vértices e arestas) em linhas que não fazem parte da origem
13 ou do destino, estações entre as conexões, bem como estações iniciais e nais antes
14 e após as conexões adjacentes a elas.
15 A Figura 4 mostra o exemplo de um grafo genérico esquemático. Neste caso
16 estão representadas 3 conexões (A, B e C) com 3 linhas em cada uma delas.
Por exemplo, na conexão B chegam as linhas 2, 4 e 5. A representação das
Figura 4: Grafo com linhas, estações, conexões, origem, destino e tempos - ela-
borado pelo autor
17
18 estações correspondentes a cada linha através de vértices em cada conexão permite
19 a denição do tempo de transferência entre cada uma (tempo de caminhada de
20 uma estação até a outra, na conexão), muitas vezes omitida em modelos que
21 vericamos em pesquisas bibliográcas (veja, por exemplo, Soares et al. (2011)).
22 Neste exemplo observamos que existem duas possibilidades de trajeto entre a
23 estação de origem (OR) e a de destino (DE). O trajeto representado por arestas
7
1 vermelhas passa pela conexão A, com uma transferência entre as linhas 1 e 3,
2 com tempo de 5 minutos. Em seguida, passa pela conexão C com transferência
3 entre as linhas 3 e 5, com tempo de 5 minutos. Finalmente, chega ao destino
4 através desta linha 5. O tempo previsto do trajeto é 8 + 5 +16 +5 +14 = 48
5 minutos. O trajeto representado por arestas pretas passa pela conexão A, com
6 uma transferência entre as linhas 1 e 2, com tempo de 12 minutos. Em seguida,
7 passa pela conexão B com transferência entre as linhas 2 e 5, com tempo de 4
8 minutos. Finalmente, chega ao destino através desta linha 5. O tempo previsto
9 do trajeto é 8 + 12 + 20 + 4 + 6 = 50 minutos. Neste caso, o trajeto escolhido
10 seria o primeiro.
11 Para a utilização dos algoritmos devem ser denidos os vértices e as arestas e, no
12 caso do algoritmo A*, a heurística. Os vértices serão as conexões e as estações
13 de origem (OR) e destino (DE), que coincidirão com a estação de uma conexão
caso elas sejam as mesmas. Conforme observamos na Tabela 1 são 45 vértices nas
14
15 conexões (por exemplo, na conexão A os vértices são referentes às linhas 1,4,7,10
16 e 11); total de 47 vértices, incluindo os dois para origem e destino. O total de
17 arestas nas conexões é de 37 (por exemplo, na conexão A a primeira aresta entre
18 linhas 1 e 4 possui um tempo previsto de 6 minutos). Na Tabela 2, onde estão
19 indicados os tempos previstos (apenas para ns didáticos - elaborado pelo Autor)
20 entre as conexões (por exemplo, o tempo previsto do trajeto entre as conexões A
21 e B é de 4 minutos), geram 52 arestas que, somadas às 37 nas conexões, e às da
22 origem e destino, totalizam 91 arestas.
8
Tabela 2: Tempos entre conexões (em minutos) - Elaborado pelo Autor
7 4 Resultados
8 A Tabela 4 mostra um comparativo entre as complexidades computacionais de
9 utilização dos algoritmos de Dijkstra e A*, para o grafo total e para o grafo
10 reduzido (conforme denimos na seção 3).
11 Como podemos observar, o modelo proposto reduz de forma signicativa a com-
12 plexidade operacional, além de ser mais fácil de ser visualizado o trajeto a ser
13 percorrido, uma vez que são envolvidas apenas as estações de origem, destino e
14 conexões.
15 Uma aplicação manual dos algoritmos descritos, para o exemplo da Figura 4,
16 mostra que o algoritmo A* reduz a complexidade comparativamente ao de Dijks-
17 tra por causa da denição da heurística, que leva a uma menor quantidade de
18 avaliações de "vizinhos"em cada interação, bem como a sequência de seleção de
19 vértices com maior probabilidade de "acerto"do caminho ideal.
9
Tabela 3: Heurística para o Algoritmo A*: Tempos entre Vértices (em minutos)
- Elaborado pelo Autor
10
1 de ida e de volta (principalmente no caso de transferências), diferenciação entre
2 tempo de caminhada e tempo de viagem no trem (por exemplo, um trajeto que
3 acrescente pouco tempo no total mas que reduza o tempo de caminhada pode ser
4 preferido em relação às outras opções), intervalo diferenciado entre trens ao longo
5 do dia ou em diferentes meses do ano. Pode-se, também, considerar os corredores
6 de ônibus já incluídos no Mapa Metropolitano, aumentando as opções de trajetos.
7 Pode-se desenvolver métodos para redução de grafos, como na modelagem deste
8 grafo reduzido. Finalmente, podem ser pesquisados outros algoritmos (como o
9 Dijkstra modicado, algoritmos com grafos reduzidos etc.).
11
1 Referências
2 Aarão, J., Lopes, F., and Toso, L. (2019). Planejamento do tempo de viagem em
3 sistemas de transporte. Revista dos Transportes Públicos, 41:3547.
4 Caruso, G., Andreini, M., and Fornara, N. (2016). Trip duration estimation for
5 dierent transport modes. In Transportation Research Procedia, volume 19,
6 pages 7887.
7 Cheng, Y., Li, Z., and Xiong, X. (2018). Personalized route recommendation
8 based on travel time prediction. International Journal of Distributed Sensor
9 Networks, 14(5):1550147718762860.
10 Cormen, T. H., Leiserson, C. E., Rivest, R. L., and Stein, C. (2009). Introduction
22 Hart, P. E., Nilsson, N. J., and Raphael, B. (1968). A formal basis for the heuristic
23 determination of minimum cost paths. IEEE Transactions on Systems Science
24 and Cybernetics, 4(2):100107.
27 Liu, H. and Huang, Y. (2020). Trip planning for multimodal public transport
28 based on estimated walking and waiting time. Journal of Advanced Transpor-
29 tation, 2020:114.
32 Soares, S. A. F., Leal, B. G., Pereira, R. G. B., Silva Junior, I. F., and Silva, D.
33 M. B. (2011). Algoritmo de dijkstra aplicado ao problema do metrô de paris.
34 2º Simpósio Interinstitucional de Computação do Vale do São Francisco.
12