La prueba es por inducción en el número de nodos visitados.
Hipótesis invariante : para cada nodo visitado u, dist [u] es la distancia más corta desde la fuente hasta u; y para cada v no visitado, dist [v] es la distancia más corta a través de los nodos visitados solo desde la fuente a v (si existe tal ruta, de lo contrario infinito; tenga en cuenta que no asumimos que dist [v] es la distancia más corta real para no visitado nodos)
El caso base es cuando solo hay un nodo visitado, es decir, el origen del nodo inicial, y la hipótesis es trivial.
- ¿Cuál es la mejor manera de ordenar un terabyte de matriz de datos, cuando tiene RAM limitada (500k), y cada elemento de la matriz tiene un par de elementos de datos, de aproximadamente 1-10k cada uno?
- ¿Hay un libro que enseñe algoritmos del nivel 0 a los algoritmos de codificación?
- ¿Cuál es la diferencia entre la implementación de HPLC y FTIR?
- ¿Qué significa limitado como sufijo para una empresa?
- ¿Cuál es la mejor manera de procesar consultas de accesibilidad en un DAG con restricciones?
Suponga la hipótesis para n-1 visitó nodos. Ahora elegimos un borde uv donde v tiene la menor dist [v] de cualquier nodo no visitado y el borde uv es tal que dist [v] = dist [u] + longitud [u, v]. dist [v] debe ser la distancia más corta desde la fuente hasta v porque si hubiera una ruta más corta, y si w fuera el primer nodo no visitado en esa ruta, entonces por hipótesis dist [w]> dist [v] crea una contradicción. Del mismo modo, si hubiera una ruta más corta hacia v sin usar nodos no visitados, dist [v] habría sido menor que dist [u] + longitud [u, v].
Después de procesar v, seguirá siendo cierto que para cada nodo no visitado w, dist [w] es la distancia más corta desde la fuente hasta w utilizando solo los nodos visitados, ya que si hubiera una ruta más corta que no visite v la habríamos encontrado anteriormente, y si hay una ruta más corta usando v, la actualizamos al procesar v.