Visualiza caminar por un laberinto. Tiene un único punto de partida, pero el laberinto puede tener callejones sin salida, puede tener bucles, etc. Aquí hay un algoritmo simple para resolver cualquier laberinto (que no tiene bucles) y utiliza un paso de retroceso:
- Entrar en el laberinto
- Camina hasta que encuentres un tenedor (es necesario elegir uno de los muchos caminos)
- Tome la primera opción a la izquierda.
- Si llegas a un callejón sin salida a la última decisión, y tomas la siguiente opción a la izquierda
- ¿Eres la salida del laberinto? Si no, vaya al paso 2
- Salida.
Este es un algoritmo simple, pero demuestra que a veces es necesario volver a un estado anterior y reevaluar una decisión previa para resolver un problema. El retroceso en el software puede venir de muchas formas. Podría ser tan simple como lo anterior, o podría involucrar colas, colas anidadas, árboles de decisión ponderados o (lo que falta del algoritmo anterior) detección de ciclo.
- ¿Qué algoritmo es usado por la función Java () de la búsqueda de subcadenas?
- ¿Por qué no puede haber un algoritmo de clasificación que tenga el mejor y el peor caso de N tiempo de ejecución (por ejemplo, lineal)?
- ¿Cómo puedo encontrar la ruta más larga de un gráfico bidireccional utilizando el algoritmo BFS?
- ¿Cuál es el propósito de construir un árbol de expansión mínimo?
- ¿Cuál es la comparación en algoritmo de Sieve of Sundaram y Sieve of Eratosthenes con tiempo-complejidad?