Básicamente, debe tener una buena comprensión de cómo está diseñado y funciona el algoritmo de Floyd.
El algoritmo de Floyd mantiene un conjunto de vértices V. Comienzas por un conjunto vacío, luego cada vez que agregas un vértice, actualizas todos los caminos más cortos actuales a través de él. Sigue agregando vértices nuevos uno por uno hasta que termina con el conjunto de vértices originales completo. Digamos que nuestro conjunto de vértices original se llama V, y el que seguimos creciendo es F.
Sea V = {1,2,3,4,5}
- ¿Cuál es el algoritmo que utilizan los ferrocarriles indios para la confirmación de un boleto de espera? ¿Cuál es la mejor manera de confirmar un boleto cuando hay una gran lista de espera?
- ¿Por qué el algoritmo Chandy-Lamport necesita suponer que todos los mensajes llegan exactamente una vez?
- ¿Cómo comparamos la complejidad del espacio y el tiempo como O (n ^ 2) tiempo versus O (n) espacio y O (n) tiempo?
- ¿Cuál es un buen algoritmo para interpolar datos de series temporales faltantes?
- ¿Cuál es la lista de MOOC que uno debe mirar en su licenciatura para aprender estructuras y algoritmos de datos C, C ++?
Después del primer paso en Floyd, la cardinalidad de F sería 1. (por ejemplo, {1}).
Luego, después de 5 pasos, terminaría con el conjunto V. No importa en qué orden estaba agregando los vértices. Como estaba actualizando la ruta más corta después de cada adición, terminaría con todas las rutas más cortas del par. Puede analizar más el algoritmo si no está claro.
Ahora nos gustaría modificar lo siguiente para el problema, sin embargo, en el problema en cada consulta estamos eliminando un vértice, entonces, ¿cómo podríamos solucionar esto?
Consigamos todos los caminos más cortos entre vértices que no están involucrados en la consulta. Ejecute floyd pero no permita que se agreguen estos vértices al conjunto F.
Una vez que hayas terminado, ahora te gustaría resolver el resto, pero cada vez que eliminamos un vértice, ¿qué podemos hacer?
¡Añade los vértices en orden inverso! Digamos que nuestra consulta es 1 2 3.
Cuando permitimos 3, estamos obteniendo los caminos más cortos sin 2 y 1. Permitamos 2, estamos obteniendo los caminos más cortos sin 1.
El resto es cómo implementaría el algoritmo y bloquearía los vértices de manera eficiente.