Szukam pomocy w zrozumieniu algorytmu wykrywania cyklu Floyda. Przeszedłem wyjaśnienie na Wikipedii ( http://en.wikipedia.org/wiki/Cycle_detection#Tortoise_and_hare )
Widzę, jak algorytm wykrywa cykl w czasie O (n). Nie jestem jednak w stanie wyobrazić sobie, że kiedy wskaźniki żółwia i zająca spotkają się po raz pierwszy, początek cyklu można ustalić, przesuwając wskaźnik żółwia z powrotem, aby rozpocząć, a następnie przesuwając zarówno żółwia, jak i zająca, o krok. Punktem, w którym spotykają się po raz pierwszy, jest początek cyklu.
Czy ktoś może pomóc, podając wyjaśnienie, które, mam nadzieję, różni się od tego na Wikipedii, ponieważ nie jestem w stanie go zrozumieć / wizualizować?
fast
zmienna lub „zając” musi poruszać się z dwukrotnie większą prędkością niż żółw, a nie tylko jeden z przodu?