Mire el algoritmo de animación: algoritmo de detección de anillos: el conejo y la tortuga de Freud

Introducción

La detección de anillo debería ser un problema de algoritmo muy común ¿Cómo juzgar si hay un problema de anillo?

Una forma muy sencilla es utilizar HashSet para guardar los datos que se van a recorrer, si hay una duplicación, sabrá que la lista enlazada está anillada. Pero este método necesita salvar todos los elementos atravesados, por lo que su complejidad espacial es o (n).

¿Hay alguna forma de determinar si hay un bucle sin guardar los elementos anteriores?

Eche un vistazo al algoritmo del conejo y la tortuga de Freud.

Sobre Freud

Algunos compañeros dirán, Freud (Sigmund Freud) que no conoce, el autor del análisis de los sueños, un famoso psicólogo y el fundador de la escuela psicoanalítica.

Pero el nombre completo de Freud del que estamos hablando aquí es Robert W. Floyd (Robert Freud) en lugar de Sigmund Freud.

Robert Freud es un científico informático, ganador del premio Turing, fundador del método de afirmación previa y posterior, y uno de los fundadores del algoritmo de clasificación de pilas y el algoritmo Floyd-Warshall.

Ganó el premio Turing en 1978 y es un "informático autodidacta".

Este algoritmo de conejo y tortuga es un algoritmo de detección de anillos que inventó.

Construye un anillo

en

Supongo que te gusta

Origin blog.csdn.net/superfjj/article/details/108746958
Recomendado
Clasificación