Articulo de referencia

jerarquías de contracción

En informática , el método de jerarquías de contracción es una técnica de aceleración para encontrar el camino más corto en un grafo . Las aplicaciones más intuitivas son los si...

En informática , el método de jerarquías de contracción es una técnica de aceleración para encontrar el camino más corto en un grafo . Las aplicaciones más intuitivas son los sistemas de navegación de automóviles: un usuario quiere conducir desdeA{\displaystyle A}aB{\displaystyle B}utilizando la ruta más rápida posible. La métrica optimizada aquí es el tiempo de viaje. Las intersecciones están representadas por vértices , los tramos de carretera que las conectan por aristas . Los pesos de las aristas representan el tiempo que se tarda en recorrer este segmento de la carretera. Un camino desdeA{\displaystyle A}aB{\displaystyle B}es una secuencia de aristas (tramos de carretera); el camino más corto es aquel con la suma mínima de pesos de aristas entre todos los caminos posibles. El camino más corto en un grafo se puede calcular utilizando el algoritmo de Dijkstra, pero, dado que las redes de carreteras constan de decenas de millones de vértices, esto es impracticable. [ 1 ] Las jerarquías de contracción son un método de aceleración optimizado para explotar las propiedades de los grafos que representan redes de carreteras. [ 2 ] La aceleración se logra creando atajos en una fase de preprocesamiento que luego se utilizan durante una consulta de camino más corto para omitir vértices "sin importancia". [ 2 ] Esto se basa en la observación de que las redes de carreteras son altamente jerárquicas. Algunas intersecciones, por ejemplo, los cruces de autopistas, son "más importantes" y están más arriba en la jerarquía que, por ejemplo, un cruce que lleva a un callejón sin salida. Los atajos se pueden utilizar para guardar la distancia precalculada entre dos cruces importantes de modo que el algoritmo no tenga que considerar el camino completo entre estos cruces en el momento de la consulta. Las jerarquías de contracción desconocen qué carreteras consideran "importantes" los humanos (por ejemplo, las autopistas), pero se les proporciona el grafo como entrada y son capaces de asignar importancia a los vértices mediante heurísticas.

Las jerarquías de contracción no solo se aplican para acelerar algoritmos en sistemas de navegación de automóviles , sino también en planificadores de rutas basados ​​en la web , simulación de tráfico y optimización logística. [ 3 ] [ 1 ] [ 4 ] Las implementaciones del algoritmo están disponibles públicamente como software de código abierto . [ 5 ] [ 6 ] [ 7 ]

Algoritmo

El algoritmo de jerarquías de contracción (CH) es un enfoque de dos fases para el problema de la ruta más corta que consta de una fase de preprocesamiento y una fase de consulta . Como las redes de carreteras cambian con poca frecuencia, se puede usar más tiempo (de segundos a horas) para precalcular algunos cálculos antes de que se respondan las consultas. Usando estos datos precalculados, se pueden responder muchas consultas tomando muy poco tiempo (microsegundos) cada una. [ 1 ] [ 3 ] Los CH se basan en atajos para lograr esta aceleración. Un atajo conecta dos vértices{\displaystyle u}yv{\displaystyle v}no adyacentes en el grafo original. Su peso de arista es la suma de los pesos de las aristas en la más corta{\displaystyle u}-v{\displaystyle v}camino.

Consideremos dos grandes ciudades conectadas por una autopista. Entre estas dos ciudades, existe una multitud de cruces que conducen a pequeños pueblos y suburbios. La mayoría de los conductores desean ir de una ciudad a la otra —quizás como parte de una ruta más larga— y no tomar ninguna de las salidas intermedias. En el grafo que representa este trazado vial, cada intersección se representa mediante un nodo y se crean aristas entre intersecciones vecinas. Para calcular la distancia entre estas dos ciudades, el algoritmo debe recorrer todas las aristas a lo largo del camino, sumando sus longitudes. Precalcular esta distancia una vez y almacenarla en una arista adicional creada entre las dos grandes ciudades ahorrará cálculos cada vez que se deba evaluar esta autopista en una consulta. Esta arista adicional se denomina "atajo" y no tiene equivalente en el mundo real. El algoritmo de jerarquías de contracción no tiene conocimiento de los tipos de carreteras, pero es capaz de determinar qué atajos deben crearse utilizando únicamente el grafo como entrada.

Para encontrar un camino desdes{\displaystyle s}at{\displaystyle t}El algoritmo puede omitir los vértices grises y usar el atajo punteado en su lugar. Esto reduce la cantidad de vértices que el algoritmo tiene que examinar. El peso de la arista del atajo desde{\displaystyle u}av{\displaystyle v}es la suma de los pesos de los bordes de los más cortos{\displaystyle u}-v{\displaystyle v}camino.

Fase de preprocesamiento

El algoritmo CH se basa en atajos creados en la fase de preprocesamiento para reducir el espacio de búsqueda, es decir, el número de vértices que CH tiene que examinar en el momento de la consulta. Para lograr esto, se realizan contracciones iterativas de vértices. Al contraer un vérticev{\displaystyle v}Se elimina temporalmente del gráfico.GRAMO{\displaystyle G}y se crea un acceso directo entre cada par.{,w}{\displaystyle \{u,w\}}de vértices vecinos si el camino más corto desde{\textstyle u}aw{\textstyle w}contienev{\displaystyle v}. [ 2 ] El proceso de determinar si el camino más corto entre{\textstyle u}yw{\textstyle w}contienev{\displaystyle v}se denomina búsqueda de testigos. Se puede realizar, por ejemplo, calculando una ruta desde{\displaystyle u}aw{\displaystyle w}utilizando una búsqueda hacia adelante utilizando solo nodos aún no contraídos. [ 3 ]

El gráfico original es la línea(a,b,do,d,mi,F){\displaystyle (a,b,c,d,e,f)}(sólido). Los bordes punteados representan atajos, las flechas grises muestran qué dos bordes se combinan para formar el atajo correspondiente. Los vértices se han dibujado para representar el orden de los nodos en el que se contraen, de abajo hacia arriba. Vértice de contraccióndo{\displaystyle c}introduce un atajo entreb{\displaystyle b}yd{\displaystyle d}condist(b,d)=dist(b,do)+dist(do,d){\displaystyle \mathrm {dist} (b,d)=\mathrm {dist} (b,c)+\mathrm {dist} (c,d)}Contracciones de los vérticesmi{\displaystyle e}yd{\displaystyle d}introducir un atajo respectivamente. Contracciones dea{\displaystyle a},b{\displaystyle b}yF{\displaystyle f}No introducen ningún atajo y, por lo tanto, no se muestran.

Orden de los nodos

Los vértices del grafo de entrada deben contraerse de manera que se minimice el número de aristas añadidas al grafo mediante contracciones. Como el ordenamiento óptimo de nodos es NP-completo , [ 8 ] se utilizan heurísticas . [ 2 ]

Existen heurísticas ascendentes y descendentes . Por un lado, las heurísticas ascendentes, computacionalmente más económicas, deciden el orden en que se contraen los vértices de forma voraz ; esto significa que el orden no se conoce de antemano, sino que el siguiente nodo se selecciona para su contracción una vez completada la anterior. Por otro lado, las heurísticas descendentes precalculan el orden de todos los nodos antes de que se contraiga el primero. Esto produce mejores resultados, pero requiere más tiempo de preprocesamiento. [ 2 ]

En las heurísticas ascendentes , se utiliza una combinación de factores para seleccionar el siguiente vértice para la contracción. Dado que el número de atajos es el factor principal que determina el tiempo de ejecución del preprocesamiento y la consulta, queremos mantenerlo lo más pequeño posible. Por lo tanto, el término más importante para seleccionar el siguiente nodo para la contracción es el número neto de aristas añadidas al contraer un nodo.incógnita{\displaystyle x}Esto se define comoA(incógnita)|{(,incógnita):(,incógnita)mi}|{\displaystyle A(x)-|\{(u,x)\colon (u,x)\in E\}|}dóndeA(incógnita){\displaystyle A(x)}es el número de accesos directos que se crearían siincógnita{\displaystyle x}debían ser contratados y|{(,incógnita):(,incógnita)mi}|{\displaystyle |\{(u,x)\colon (u,x)\in E\}|}es el número de aristas incidentes aincógnita{\displaystyle x}Utilizando únicamente este criterio, una ruta lineal daría como resultado una jerarquía lineal (muchos niveles ) y no crearía atajos. Al considerar el número de vértices cercanos que ya están contraídos, se logra una contracción uniforme y una jerarquía plana (menos niveles). Esto se puede conseguir, por ejemplo, manteniendo un contador para cada nodo que se incrementa cada vez que se contrae un vértice vecino. Los nodos con contadores más bajos se prefieren entonces a los nodos con contadores más altos. [ 9 ]

Por otro lado, las heurísticas descendentes producen mejores resultados, pero requieren más tiempo de preprocesamiento. Clasifican los vértices que forman parte de muchos caminos más cortos como más importantes que aquellos que solo son necesarios para unos pocos caminos más cortos. Esto se puede aproximar utilizando disecciones anidadas . [ 2 ] Para calcular una disección anidada, se separa recursivamente un grafo en dos partes, que a su vez se separan en dos partes, y así sucesivamente. Es decir, se encuentra un subconjunto de nodos.SV{\displaystyle S\subseteq V}que cuando se elimina del gráficoGRAMO{\displaystyle G}separadoGRAMO{\displaystyle G}en dos piezas disjuntasGRAMO1,GRAMO2{\displaystyle G_{1},G_{2}}de tamaño aproximadamente igual, de tal manera queSGRAMO1GRAMO2=GRAMO{\displaystyle S\cup G_{1}\cup G_{2}=G}. Colocar todos los nodosvS{\displaystyle v\in S}último en el ordenamiento de nodos y luego calcular recursivamente la disección anidada paraGRAMO1{\displaystyle G_{1}}yGRAMO2{\displaystyle G_{2}}[ 10 ] La intuición es que todas las consultas de una mitad del grafo a la otra mitad del grafo deben pasar por el pequeño separador y, por lo tanto, los nodos en este separador son de gran importancia. Las disecciones anidadas se pueden calcular eficientemente en redes de carreteras debido a sus pequeños separadores . [ 11 ]

Fase de consulta

En la fase de consulta, se realiza una búsqueda bidireccional a partir del nodo inicial.s{\displaystyle s}y el nodo objetivot{\displaystyle t}en el grafo original aumentado por los atajos creados en la fase de preprocesamiento. [ 2 ] El vértice más importante en el camino más corto entres{\displaystyle s}yt{\displaystyle t}será os{\displaystyle s}ot{\displaystyle t}ellos mismos o más importantes que amboss{\displaystyle s}yt{\displaystyle t}. Por lo tanto, el vértice{\displaystyle u}minimizandodist(s,)+dist(,t){\displaystyle \mathrm {dist} (s,u)+\mathrm {dist} (u,t)}está en el más cortost{\displaystyle s-t}ruta en el gráfico original ydist(s,)+dist(,t)=dist(s,t){\displaystyle \mathrm {dist} (s,u)+\mathrm {dist} (u,t)=\mathrm {dist} (s,t)}se mantiene. [ 2 ] Esto, en combinación con la forma en que se crean los atajos, significa que tanto la búsqueda hacia adelante como hacia atrás solo necesitan relajar los bordes que conducen a nodos más importantes (hacia arriba) en la jerarquía, lo que mantiene pequeño el espacio de búsqueda. [ 3 ] En todos los caminos arriba-(abajo-arriba)-abajo, el interior (abajo-arriba) se puede omitir, porque se ha creado un atajo en la etapa de preprocesamiento.

Al calcular el camino más corto desdes{\displaystyle s}at{\displaystyle t}La búsqueda hacia adelante (naranja) y hacia atrás (azul) solo requiere seguir las aristas que ascienden en la jerarquía. El camino encontrado está marcado en rojo y utiliza un atajo (línea discontinua).

Recuperación de ruta

Una consulta CH, como se describió anteriormente, proporciona el tiempo o la distancia desdes{\displaystyle s}at{\displaystyle t}pero no el camino real. Para obtener la lista de aristas (caminos) en el camino más corto, es necesario desempaquetar los atajos tomados. Cada atajo es la concatenación de dos aristas: dos aristas del grafo original, dos atajos o una arista original y un atajo. Almacenar el vértice central de cada atajo durante la contracción permite desempaquetar recursivamente la ruta más corta en tiempo lineal. [ 2 ] [ 3 ]

Jerarquías de contracción personalizadas

Si los pesos de los bordes cambian con más frecuencia que la topología de la red , CH puede extenderse a un enfoque de tres fases al incluir una fase de personalización entre la fase de preprocesamiento y la de consulta. Esto puede usarse, por ejemplo, para alternar entre la distancia más corta y el tiempo más corto, o incluir información de tráfico actual, así como preferencias del usuario, como evitar ciertos tipos de carreteras (ferries, autopistas, etc.). En la fase de preprocesamiento, la mayor parte del tiempo de ejecución se dedica a calcular el orden en que se contraen los nodos. [ 3 ] Esta secuencia de operaciones de contracción en la fase de preprocesamiento puede guardarse para cuando se necesiten posteriormente en la fase de personalización. Cada vez que se personaliza la métrica, las contracciones pueden aplicarse de manera eficiente en el orden almacenado utilizando la métrica personalizada. [ 2 ] Además, dependiendo de los nuevos pesos de los bordes, puede ser necesario recalcular algunos atajos. [ 3 ] Para que esto funcione, el orden de contracción debe calcularse utilizando disecciones anidadas independientes de la métrica. [ 1 ]

Extensiones y aplicaciones

Los CH, como se describió anteriormente, buscan la ruta más corta desde un nodo de inicio a un nodo de destino. Esto se denomina ruta más corta uno a uno y se utiliza, por ejemplo, en sistemas de navegación para automóviles. Otras aplicaciones incluyen la correspondencia de trazas GPS con segmentos de carretera y la aceleración de simuladores de tráfico que deben considerar las rutas probables tomadas por todos los conductores en una red. En la predicción de rutas, se intenta estimar hacia dónde se dirige probablemente un vehículo calculando qué tan bien coinciden sus posiciones actual y pasada con la ruta más corta desde su punto de partida a cualquier destino posible. Esto se puede hacer de manera eficiente utilizando CH. [ 2 ]

En escenarios de uno a muchos , un nodo inicials{\displaystyle s}y un conjunto de nodos objetivoT{\displaystyle T}se dan y la distanciadist(s,t){\displaystyle \mathrm {dist} (s,t)}a pesar detT{\displaystyle t\in T}debe calcularse. La aplicación más destacada para las consultas de uno a muchos son las búsquedas de puntos de interés. Ejemplos típicos incluyen encontrar la gasolinera, el restaurante o la oficina de correos más cercanos utilizando el tiempo de viaje real en lugar de la distancia geográfica como métrica. [ 2 ]

En el escenario de ruta más corta de muchos a muchos , un conjunto de nodos inicialesS{\displaystyle S}y un conjunto de nodos objetivoT{\displaystyle T}se dan y la distanciadist(si,ti){\displaystyle \mathrm {dist} (s_{i},t_{i})}a pesar de(si,tj)S×T{\displaystyle (s_{i},t_{j})\in S\times T}debe calcularse. Esto se utiliza, por ejemplo, en aplicaciones logísticas. [ 2 ] Los CH se pueden extender a consultas de muchos a muchos de la siguiente manera. Primero, realice una búsqueda hacia atrás y hacia arriba desde cadatjT{\displaystyle t_{j}\in T}. Para cada vértice{\displaystyle u}escaneado durante esta búsqueda, uno de los almacenesdist(tj,){\displaystyle \mathrm {dist} (t_{j},u)}en un cuboβ(){\displaystyle \beta (u)}. Luego, se realiza una búsqueda ascendente hacia adelante desde cadasiS{\displaystyle s_{i}\in S}, comprobando para cada cubo no vacío, si la ruta sobre el vértice correspondiente mejora alguna distancia óptima. Es decir, sidist(si,)+dist(,tj)<dist(si,tj){\displaystyle \mathrm {dist} (s_{i},u)+\mathrm {dist} (u,t_{j})<\mathrm {dist} (s_{i},t_{j})}para cualquier(si,tj)S×T{\displaystyle (s_{i},t_{j})\in S\times T}. [ 2 ] [ 3 ]

Algunas aplicaciones incluso requieren cálculos de uno a todos , es decir, encontrar las distancias desde un vértice de origen.s{\displaystyle s}a todos los demás vértices del grafo. Como el algoritmo de Dijkstra visita cada arista exactamente una vez y, por lo tanto, se ejecuta en tiempo lineal, es teóricamente óptimo. Sin embargo, el algoritmo de Dijkstra es difícil de paralelizar y no es óptimo en cuanto a caché debido a su mala localidad. Se pueden utilizar CH para una implementación más óptima en cuanto a caché. Para ello, una búsqueda ascendente hacia adelante desdes{\displaystyle s}A continuación, se realiza un escaneo descendente de todos los nodos en el grafo enriquecido con atajos. Esta última operación escanea la memoria de forma lineal, ya que los nodos se procesan en orden decreciente de importancia y, por lo tanto, se pueden colocar en la memoria en consecuencia. [ 12 ] Nótese que esto es posible porque el orden en que se procesan los nodos en la segunda fase es independiente del nodo de origen.s{\displaystyle s}. [ 2 ]

En producción, los sistemas de navegación para automóviles deben poder calcular las rutas de viaje más rápidas utilizando información de tráfico prevista y mostrar rutas alternativas. Ambas funciones se pueden realizar utilizando CH. [ 2 ] La primera se denomina enrutamiento con redes dependientes del tiempo, donde el tiempo de viaje de un enlace dado ya no es constante, sino que depende de la hora del día en que se ingresa al enlace. Las rutas alternativas deben parecer fluidas, ser significativamente diferentes de la ruta más corta, pero no significativamente más largas. [ 2 ]

Los CH se pueden extender para optimizar múltiples métricas al mismo tiempo; esto se denomina planificación de rutas multicriterio . Por ejemplo, se podría minimizar tanto el costo como el tiempo de viaje. Otro ejemplo son los vehículos eléctricos, para los cuales la carga disponible de la batería limita las rutas válidas, ya que la batería no puede agotarse por completo. [ 2 ]

Teoría

Se han establecido varios límites en el preprocesamiento y el rendimiento de las consultas de las jerarquías de contracción. En lo siguiente,norte{\displaystyle n}sea ​​el número de vértices en el grafo,metro{\displaystyle m}el número de aristas,h{\displaystyle h}la dimensión de la autopista ,D{\displaystyle D}el diámetro del gráfico,td{\displaystyle td}es la profundidad del árbol ytw{\displaystyle tw}es el ancho del árbol .

El primer análisis del rendimiento de la jerarquía de contracción se basa en parte en una magnitud conocida como dimensión de autopista . Si bien la definición de esta magnitud es técnica, intuitivamente un grafo tiene una dimensión de autopista pequeña si para cadar>0{\displaystyle r>0}Hay un conjunto disperso de vértices.Sr{\displaystyle S_{r}}de tal manera que cada camino más corto de longitud mayor quer{\displaystyle r}incluye un vértice deSr{\displaystyle S_{r}}Calcular el valor exacto de la dimensión de la autopista es NP-difícil [ 13 ] [ 14 ] y muy probablemente W[1]-difícil , [ 15 ] pero para las cuadrículas se sabe que la dimensión de la autopista eshΘ(norte){\displaystyle h\in \Theta ({\sqrt {n}})}. [ 16 ]

Se presentó un análisis alternativo en la línea de trabajo de Jerarquía de contracción personalizable. Los tiempos de ejecución de las consultas pueden estar limitados porO(td2){\displaystyle O(td^{2})}. Dado que la profundidad del árbol puede estar limitada en términos del ancho del árbol,O((twregistronorte)2){\displaystyle O((tw\log n)^{2})}También es un límite superior válido. La fuente principal es [ 17 ] , pero las consecuencias para los tiempos de ejecución en el peor de los casos se detallan mejor en [ 18 ] .

Rendimiento del preprocesamiento

Rendimiento de las consultas

Referencias

  1. 1 2 3 4 Dibbelt, Julian; Strasser, Ben; Wagner, Dorothea (5 de abril de 2016). "Jerarquías de contracción personalizables". Journal of Experimental Algorithmics . 21 (1): 1– 49. arXiv : 1402.0402 . doi : 10.1145/2886843 . S2CID 5247950 . 
  2. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 Bast, Hannah; Delling, Daniel; Goldberg, Andrew V.; Müller-Hannemann, Matthias; Pajor, Thomas; Sanders, Peter; Wagner, Dorothea; Werneck, Renato F. (2016). "Planificación de rutas en redes de transporte". Ingeniería de algoritmos . Notas de clase en ciencias de la computación. Vol. 9220. págs. 19–80 . arXiv : 1504.05140 . doi : 10.1007/978-3-319-49487-6_2 . ISBN   978-3-319-49486-9. S2CID 14384915 . 
  3. 1 2 3 4 5 6 7 8 Geisberger, Robert; Sanders, Peter; Schultes, Dominik; Vetter, Christian (2012). "Enrutamiento exacto en grandes redes viales utilizando jerarquías de contracción" . Transportation Science . 46 (3): 388– 404. doi : 10.1287/trsc.1110.0401 .
  4. Delling, Daniel; Sanders, Peter; Schultes, Dominik; Wagner, Dorothea (2009). «Ingeniería de algoritmos de planificación de rutas». Algoritmia de redes grandes y complejas . Notas de clase en informática. Vol. 5515. págs. 117–139 . doi : 10.1007/978-3-642-02094-0_7 . ISBN   978-3-642-02093-3.
  5. "OSRM – Máquina de enrutamiento de código abierto" .
  6. "Web – GraphHopper" .
  7. "GitHub – RoutingKit" . GitHub . 24 de enero de 2022.
  8. Bauer, Reinhard; Delling, Daniel; Lijadoras, Peter; Schieferdecker, Dennis; Schultes, Dominik; Wagner, Dorotea (1 de marzo de 2010). "Combinación de técnicas de aceleración jerárquicas y dirigidas a objetivos para el algoritmo de dijkstra" . Revista de algorítmica experimental . 15 : 2.1. doi : 10.1145/1671970.1671976 . ISSN 1084-6654 . S2CID 1661292 .  
  9. ^ Geisberger, Robert; Lijadoras, Peter; Schultes, Dominik; Delling, Daniel (2008). "Jerarquías de contracción: enrutamiento jerárquico más rápido y sencillo en redes de carreteras". En McGeoch, Catherine C. (ed.). Algoritmos experimentales . Apuntes de conferencias sobre informática. vol. 5038. Springer Berlín Heidelberg. págs. 319– 333. doi : 10.1007/978-3-540-68552-4_24 . ISBN   9783540685524. S2CID 777101 . 
  10. Bauer, Reinhard; Columbus, Tobias; Rutter, Ignaz; Wagner, Dorothea (13 de septiembre de 2016). "Tamaño del espacio de búsqueda en jerarquías de contracción" . Theoretical Computer Science . 645 : 112–127 . doi : 10.1016/j.tcs.2016.07.003 . ISSN 0304-3975 . 
  11. Delling, Daniel; Goldberg, Andrew V.; Razenshteyn, Ilya; Werneck, Renato F. (mayo de 2011). "Particionamiento de grafos con cortes naturales". 2011 IEEE International Parallel & Distributed Processing Symposium . pp. 1135–1146 . CiteSeerX 10.1.1.385.1580 . doi : 10.1109 /ipdps.2011.108 . ISBN   978-1-61284-372-8. S2CID 6884123 . 
  12. Delling, Daniel; Goldberg, Andrew V.; Nowatzyk, Andreas; Werneck, Renato F. (2011). "PHAST: Hardware-Accelerated Shortest Path Trees". 2011 IEEE International Parallel & Distributed Processing Symposium . pp. 921–931 . doi : 10.1109/ipdps.2011.89 . ISBN  978-1-61284-372-8. S2CID 1419921 . 
  13. Feldmann, Andreas Emil; Fung, Wai Shing; Könemann, Jochen; Post, Ian (2018-01-01). "Una $(1+\varepsilon)$-incrustación de grafos de dimensión de autopista baja en grafos de ancho de árbol acotado" . SIAM Journal on Computing . 47 (4): 1667– 1704. arXiv : 1502.04588 . doi : 10.1137/16M1067196 . ISSN 0097-5397 . S2CID 11339698 .  
  14. Blum, Johannes (2019). "Jerarquía de parámetros de la red de transporte y resultados de dureza". En Jansen, el diputado Bart; Telle, Jan Arne (eds.). 14º Simposio Internacional sobre Computación Exacta y Parametrizada (IPEC 2019) . Actas internacionales de Leibniz en informática. vol. 148. Dagstuhl, Alemania: Schloss Dagstuhl – Leibniz-Zentrum fuer Informatik. págs. 4:1–4:15. doi : 10.4230/LIPIcs.IPEC.2019.4 . ISBN   978-3-95977-129-0. S2CID 166228480 . 
  15. Blum, Johannes; Disser, Yann; Feldmann, Andreas Emil; Gupta, Siddharth; Zych-Pawlewicz, Anna (2022). "En conjuntos de golpes dispersos: desde una cobertura de vértice justa hasta la dimensión de la carretera". En Dell, Holger; Nederlof, Jesper (eds.). 17º Simposio Internacional sobre Computación Exacta y Parametrizada (IPEC 2022) . Actas internacionales de Leibniz en informática. vol. 249. Dagstuhl, Alemania: Schloss Dagstuhl – Leibniz-Zentrum für Informatik. págs. 5:1–5:23. doi : 10.4230/LIPIcs.IPEC.2022.5 . ISBN   978-3-95977-260-0.
  16. 1 2 3 Abraham, Ittai; Fiat, Amos; Goldberg, Andrew (2010). Dimensión de la autopista, rutas más cortas y algoritmos demostrablemente eficientes (PDF) . Actas del simposio anual ACM-SIAM de 2010 sobre algoritmos discretos. doi : 10.1137/1.9781611973075.64 .
  17. 1 2 Dibbelt, Julian; Strasser, Ben; Wagner, Dorothea (2016). "Jerarquías de contracción personalizables". ACM Journal of Experimental Algorithmics . 21 : 1– 49. arXiv : 1402.0402 . doi : 10.1145/2886843 . S2CID 5247950 . 
  18. 1 2 Hamann, Michael; Strasser, Ben (2018). "Graph Bisection with Pareto Optimization". ACM Journal of Experimental Algorithmics . 23 : 1– 34. arXiv : 1504.03812 . doi : 10.1145/3173045 . S2CID 3395784 . 
  19. 1 2 Funke, Stefan; Storandt, Sabine (2015). "Eficiencia demostrable de jerarquías de contracción con preprocesamiento aleatorio". Algorithms and Computation . Lecture Notes in Computer Science. Vol. 9472. pp. 479–490 . doi : 10.1007/978-3-662-48971-0_41 . ISBN   978-3-662-48971-0.
  20. Blum, Johannes; Funke, Stefan; Storandt, Sabine (2018). Espacios de búsqueda sublineales para la planificación de rutas más cortas en redes de cuadrícula y carreteras (PDF) . AAAI.

Implementaciones de código abierto

  • https://www.graphhopper.com/
  • https://github.com/ifsttar/Tempus
  • https://github.com/RoutingKit/RoutingKit
  • http://project-osrm.org/
  • http://www.opentripplanner.org/