¿Cuál es el mejor algoritmo para encontrar la ruta más corta en un gráfico orientado, donde algunos bordes están bloqueados y las teclas están en algún lugar de los nodos?

No estoy diciendo que el siguiente es el mejor algoritmo, pero es suficiente.

Sea G el gráfico orientado a la entrada, K sea el conjunto de teclas. Para cada subconjunto S de K, defina [math] G_S [/ math] como el gráfico G sin los bordes cuyas claves faltan en S. Sea J el gráfico obtenido por la unión de [math] G_S [/ math] para todas las S posibles más las siguientes aristas entre distintas [matemáticas] G_S [/ matemáticas]: para cada clave k en un nodo v, agregamos una ventaja de v en [matemáticas] G_S [/ matemáticas] a v en [matemáticas ] G_R, [/ math] para cada par [math] (S, R) [/ math] de modo que S no contiene k y R sí. Este gráfico J obtenido de esta manera es un gráfico donde se puede obtener la ruta más corta con los algoritmos tradicionales de ruta más corta. Si se desea encontrar la ruta más corta de v a w, se debe buscar la ruta más corta desde la copia de v sin ninguna clave hasta cualquier copia de w con cualquier combinación de teclas.

El problema es que el gráfico J es exponencial en el tamaño de G. Sin embargo, dudo que uno pueda escapar de este problema. No sé si el problema es NP-duro, pero no conozco ninguna solución de tiempo polinómico para este problema.

Uno podría mejorar este algoritmo al no almacenar la explicidad del gráfico J. Solo hay que deducir la adyacencia de la implicidad J, que se puede hacer fácilmente accediendo a G info. Muchos nodos de J probablemente nunca serán visitados, por lo tanto, la aceleración puede ser considerable. (El algoritmo resultante obtiene una apariencia de memorización).

More Interesting

¿Cuáles son las condiciones previas de la búsqueda binaria y qué papel desempeñan?

¿BFS es más rápido y más eficiente que DFS?

¿Cuáles son algunos de los buenos problemas de retroceso?

¿Cuál es el mejor libro de texto en línea gratuito para Algorithm an Data Structure? Me refiero a un libro de texto para un estudiante principiante en la universidad.

¿Es necesario pensar en una solución recursiva primero antes de proceder a resolver un problema de DP?

¿Cuál es el algoritmo más fácil para encontrar el camino más corto en un robot seguidor de línea para un principiante?

En un algoritmo de clasificación de ciencias de la computación, ¿puede lograr un estado ordenado intercambiando continuamente elementos desordenados totalmente al azar, o los elementos fuera de orden deben ser adyacentes en la matriz?

Tengo la cadena de entrada, también tengo la cadena encriptada. ¿Cómo averiguo qué algoritmo de cifrado se utilizó?

En file.log, cada línea comienza con una marca de fecha completa. ¿Qué comando podría usarse para devolverme las líneas N-1, N y N + 1 con una diferencia de tiempo mayor que X segundos entre N y N + 1?

Cómo enmarcar mi idea de algoritmo para que alguien que escribe algoritmos pueda entenderlo

Cómo ordenar datos multivariados

¿Cuál es el libro correcto para comprar algoritmos de Amazon y para alguien que no tiene idea sobre el algoritmo?

¿Cuál es el enfoque para resolver el problema # 168 en el Proyecto Euler (por supuesto, no la fuerza bruta)?

¿Cuál es la elección ideal de algoritmos, bibliotecas en PNL y aprendizaje automático para construir un bot de chat?

¿Cuáles son los algoritmos básicos en informática?