Você está na página 1de 12

1 APLICAÇÃO DE MODELOS PARA CÁLCULOS DE TEMPO DE

2 TRAJETOS EM REDES DE METRÔ E TRENS

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.

13 Palavras-chave: Algoritmo de Dijkstra. Algoritmo A*. Complexidade computacional.


14 Caminho mais curto.

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.

22 Keywords: Dijkstra's Algorithm. A* Algorithm. Computational complexity. Shortest


23 path.

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.

30 2.1 Algoritmo de Dijkstra


31 O algoritmo de Dijkstra Dijkstra (1959), concebido pelo cientista da computa-
32 ção holandês Edsger Dijkstra em 1956 e publicado em 1959, soluciona o problema
33 do caminho mais curto num grafo dirigido ou não dirigido com arestas de peso
34 não negativo, em tempo computacional O(A + V log(V )) (para maiores referên-
35 cias sobre tempo computacional e complexidade, veja Sipser (2012). Para este

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

Algoritmo 1 Algoritmo de Caminho Mais Curto


Entradas: Grafo G(N, A) conectado, vértice de origem s, conjunto de custos
(distâncias) cij e conjunto Si de vértices sucessores ao vértice i
Saídas: Caminhos mais curtos entre o vértice de origem s e todos os outros
vértices
1: S
(perm) = ∅, S (temp) = |N |

2: para cada i ∈ N faça

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

4 f (n) = g(n) + h(n) (1)

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:

Algoritmo 2 Algoritmo de Busca A*


Entradas: Um grafo com vértices e arestas, custos associados para percorrê-lo,
conjunto aberto O (la de prioridade), conjunto fechado C (vértices proces-
sados), conjunto de vértices adjacentes V (n), custo da aresta que liga n1 a n2
c(n1, n2), vértice inicial qstart , vértice nal qgoal
Saídas: Um caminho do vértice inicial ao nal
1: repita
2: Pegue nbest de O em que f (nbest ) ≤ f (n), ∀n ∈ O
3: Remova nbest de O e adicione em C
4: se nbest = qgoal então
5: SAIR
6: m se
7: Expandir nbest : para todo x ∈ V (nbest ) que não está em C
8: se x ∈/ O então
9: Adicione x em O
10: senão
11: se g(nbest ) + c(nbest , x) < g(x) então
12: Atualize o backpointer de x para apontar para nbest
13: g(x) = g(nbest ) + c(nbest , x)
14: m se
15: m se
16: até que O seja vazio

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.

Figura 1: Mapa do Transporte Metropolitano de SP.

5 A rede de metrôs e trens na região metropolitana de São Paulo, conforme obtido


6 em Governo do Estado de São Paulo (2023), possui 13 linhas e mais de 150
7 estações. Existem 19 conexões entre estas 13 linhas, que permitem uma ampla
8 gama de transferências. A Figura 1 indica as conexões existentes entre as linhas,
9 identicadas de A a S. Para exemplicar, a conexão A, identicada na Figura 2,
10 gera a possibilidade de transferência de um passageiro entre as linhas 1, 4, 7, 10
11 e 11. Por exemplo, um passageiro pode estar na linha 1 e, nesta conexão A, fazer
12 uma transferência (sem custo) para a linha 10, caminhando até a estação desta
13 linha correspondente.
14 Para desenharmos um grafo (que chamarei de grafo total), visando a aplicação
15 dos algoritmos, considerando todas as estações (vértices) somadas às conexões
16 entre cada par de linhas (arestas) em uma mesma conexão, geraremos em torno
17 de 178 vértices e 240 arestas. A complexidade computacional seria, para cada
18 algoritmo:

5
Figura 2: Intersecção A - linhas com conexões - elaborado pelo autor

1 > Dijkstra: O(240 + 178 log(178)) = O(1.162);


2 > A*: O(178 log(178)) = O(922).
3 Os algoritmos baseiam-se na identicação de vértices (V) e arestas (E). Estabe-
4 lecendo como objetivo encontrar o trajeto mais rápido entre estações e buscando
5 uma forma de reduzir a complexidade computacional, vamos denir as variáveis
6 relevantes para o caso, usando a Figura 3 como orientação (os exemplos citados
7 na gura estão em negrito na denição das variáveis):

Figura 3: Diagrama com linhas, estações e conexão - 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

Tabela 1: Linhas nas conexões e Tempos de transferência (em minutos)

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

1 Para a heurística sugerimos a utilização do tempo mínimo que ocorreria entre os


2 vértices, se eles fossem ligados em linha reta, considerando a distância entre os
3 vértices e a velocidade média de um trem. Utilizamos a fórmula de Haversine,
4 comumente usada para calcular a distância entre dois pontos em uma esfera (como
5 a Terra) usando suas coordenadas geográcas de latitude e longitude, gerando a
6 Tabela 3.

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

Tabela 4: Comparativo entre complexidades computacionais

Algoritmo Grafo total Grafo reduzido Redução


Dijkstra O(1.162) O(272) 76%
A* O(922) O(181) 80%

1 5 Conclusões e Futuras Perspectivas


2 Encontrar caminhos mais curtos em grafos é de fundamental importância quando
3 falamos em trajetos de qualquer tipo de viagem. Seja de ordem pessoal, seja para
4 empresas, os custos envolvidos são muito signicativos. Conhecer algoritmos e
5 desenvolver metodologias que buscam maximizar (ou minimizar) os resultados es-
6 perados, considerando modelos que sejam de menor complexidade computacional
7 possível, são de extrema importância. Este artigo buscou mostrar caminhos e
8 metodologias para contribuir neste sentido, demonstrando a utilização dos rele-
9 vantes algoritmos Dijkstra e A* nestes tipos de problemas, com a demonstração
10 de modelagem de um exemplo prático que reduziu a complexidade computacio-
11 nal acima de 76%. Além do desenvolvimento de programas que possam rodar e
12 comparar estes algoritmos para o exemplo citado, o modelo pode ser aperfeiçoado
13 considerando-se outras variáveis que possam afetar o tempo de trajeto bem como
14 o trajeto ideal, como por exemplo tempos diferentes entre vértices nas arestas

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

11 to Algorithms. The MIT Press.

12 Dijkstra, E. W. (1959). A note on two problems in connexion with graphs. Nu-

13 merische Mathematik, 1(1):269271.

14 Djojo, M. and Karyono, K. (2013). Computational load analysis of dijkstra, a*,


15 and oyd-warshall algorithms in mesh network. Robotics, Biomimetics, and
16 Intelligent Computational Systems, pages 104108.

17 Gonçalves, M. A. (2013). Algoritmo a-estrela de estado híbrido aplicado à nave-


18 gação autônoma de veículos. Dissertação de mestrado, UFES, Espírito Santos,
19 ES, Brasil.

20 Governo do Estado de São Paulo (2023). Mapa do Transporte Metropolitano.


21 Online. Acesso em 20/05/2023.

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.

25 Junqueira, L. (2023). Modelagem e otimização de cadeias de suprimento. Proble-


26 mas de Caminho Mais Curto.

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.

30 Sipser, M. (2012). Introduction to the Theory of Computation . Cengage Learning,


31 3rd edition.

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

Você também pode gostar