El único elemento de búsqueda de profundidad que modifica es el orden en que se investigan los niños. La versión normal procede en orden arbitrario, es decir, en el orden en que se almacenan los elementos secundarios.
La única alternativa factible (hacia los caminos más cortos) que se me ocurre es un enfoque codicioso, que es mirar a los niños en orden de distancia desde el nodo actual (de pequeño a grande). Es fácil construir un contraejemplo para esta regla:
[ fuente ]
Ahora, eso no es una prueba de que no exista una estrategia para elegir el próximo hijo a investigar, lo que hará que DFS encuentre los caminos más cortos.
Sin embargo, sin importar la regla, puede construir gráficos que tengan DFS comprometido con un desvío largo en el primer nodo, tal como lo hice para la regla codiciosa. Bordes Asignar y los pesos de tal manera que los elige de reglas para visitar primera, y asignar un mayor peso que el de . Por lo tanto, es plausible que DFS nunca pueda encontrar rutas más cortas (en gráficos generales).( s , a ) a ( a , b ) ( s , t )( s , t )( s , a )un( a , b )(s,t)
Tenga en cuenta que, dado que puede expresar cada gráfico ponderado (entero positivo) como gráfico no ponderado, simplemente reemplace los bordes con costo con una cadena con nodos , los mismos ejemplos tratan con DFS en gráficos no ponderados. Aquí, la situación es aún más sombría: sin pesas, ¿qué puede usar DFS para determinar el próximo niño a visitar?c - 1cc−1
- Mientras la regla sea determinista. Si no es así, claramente no siempre puede encontrar los caminos más cortos.