Misalkan anda memiliki sebuah fungsi f: S → S dan nilai awal apapun x0 ∈ S
(dalam visualisasi ini, kita terbatas ke f(x) = (A*x^2 + B*x + C) % M dan x0 % M maka fungsi f memiliki domain dan range ∈ [0..M-1]).
Barisan dari nilai-nilai fungsi iterasi:
{x0, x1 = f(x0), x2 = f(x1), ..., xi = f(xi-1), ...}
harus pada akhirnya menggunakan nilai yang sama dua kali (siklus), yaitu a ≠ b dimana xa = xb.
Sejak saat itu, barisan tersebut akan berlanjut dengan mengulang nilai-nilai siklus dari xa ke xb-1.
Biarkan mu (μ) menjadi indeks terkecil dan biarkan lambda (λ) (panjang siklus) menjadi bilangan bulat positif terkecil dimana xμ = xμ+λ.
Masalah pencarian-siklus: Temukan μ dan λ, diberikan f dan x0.
Anda dapat membuat fungsi sendiri f(x) = (A*x2 + B*x + C) % M di sini.
Anda juga dapat mengeset nilai x0 anda sendiri, yang harus berada dalam ∈ [0..M-1].
Pencarian-Siklus Penyu-Kelinci oleh Floyd adalah salah satu algoritma yang dapat menyelesaikan masalah ini secara efisien baik dari segi kompleksitas waktu dan ruang.
Algoritma ini hanya membutuhkan waktu O(μ+λ) dan ruang O(1) untuk melakukan tugasnya.
Ini adalah visualisasi dari algoritma Pencarian-Siklus Penyu-Kelinci oleh Floyd.
Bentuk dari rho (ρ) dari barisan nilai-nilai fungsi iterasi yang didefinisikan oleh f(x) dan x0 secara jelas memvisualisasikan μ dan λ.
VisuAlgo menggunakan simpul-simpul hijau untuk merepresentasikan penyu (t) dan simpul-simpul oranye untuk merepresentasikan kelinci (h).
Kita mulai dari x0.
Ketika penunjuk penyu != penunjuk kelinci, kita memajukan penyu/kelinci sebesar satu langkah/dua langkah ke nilai-nilai mereka yang berikutnya dengan memanggil f(penyu)/f(f(kelinci)).