¿Por qué se garantiza que la liebre y la tortuga se encontrarán en el algoritmo de detección de ciclos de Floyd?

Suponga que el período anterior tiene una longitud [matemática] a [/ matemática] y que el período tiene una longitud [matemática] b [/ matemática].

Después de las primeras rondas [math] a [/ math] del algoritmo (es decir, [math] a [/ math] pasos de la tortuga y [math] 2a [/ math] pasos de la liebre) la tortuga acaba de llegar al ciclo y la liebre está en algún lugar del ciclo.

En este punto, observe la situación de la siguiente manera: la tortuga está frente a la liebre por varios pasos. Denotemos ese número de pasos [matemática] c [/ matemática]. La liebre ahora persigue a la tortuga. En cada ronda, la liebre ganará un paso en la tortuga, por lo tanto, después de exactamente [math] c [/ math] rondas adicionales los dos se encontrarán.

Claramente [math] c \ lt b [/ math], por lo tanto, el algoritmo siempre termina después de menos de [math] a + b [/ math] rondas.

Para mí, la forma más intuitiva de ver esto es la siguiente:

En cada paso del algoritmo, la tortuga camina 1 nodo y la liebre camina 2 nodos. En la práctica, la tortuga se aleja en 1 unidad de distancia, y luego la liebre se acerca en 2 unidades de distancia. En la práctica, es como en cada paso, la tortuga permanece estacionaria y la liebre se mueve 1 paso.

Solo por ejemplo, veamos este ejemplo:

Imagine que la liebre y la tortuga caminan solo en el sentido contrario a las agujas del reloj (1 -> 2 -> 3 -> 4 …). La liebre comienza en el nodo 4 y la tortuga en el nodo 1. Su distancia es 4-> 5-> 6-> 7-> 8-> 9-> 10-> 1, entonces, 7 pasos de distancia.

Ahora, creemos una tabla de dónde estarán la liebre y la tortuga hasta que se encuentren:

Como puede comprobar, su distancia se acorta en 1 en cada paso del algoritmo.

La respuesta de Harshit Pathak a ¿Cómo funciona el algoritmo de búsqueda de ciclos de Floyd? ¿De qué manera mover la tortuga al comienzo de la lista vinculada, mientras se mantiene a la liebre en el lugar de reunión, seguido de mover un paso a la vez, hace que se encuentren en el punto de inicio del ciclo?