Floyd's cycle detection ਇੱਕ ਕ੍ਰਮ (ਜਿਵੇਂ linked list) ਵਿੱਚ ਇੱਕ loop ਨੂੰ ਦੋ pointers ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਲੱਭਦਾ ਹੈ ਜੋ ਵੱਖ-ਵੱਖ ਗਤੀ ਨਾਲ ਚਲਦੇ ਹਨ। ਜੇ ਇੱਕ cycle ਮੌਜੂਦ ਹੈ, ਤਾਂ ਤੇਜ਼ pointer ਆਖਰਕਾਰ slow ਨੂੰ lap ਕਰਦਾ ਹੈ ਅਤੇ ਇਸ ਨੂੰ ਮਿਲਦਾ ਹੈ। ਇਹ O(1) ਵਾਧੂ ਥਾਂ ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ।
ਧਾਰਨਾ
ਇੱਕ slow pointer ਨੂੰ ਇੱਕ ਕਦਮ ਅਤੇ ਇੱਕ fast pointer ਨੂੰ ਦੋ ਕਦਮ ਚਲਾਓ। ਇੱਕ cycle ਵਿੱਚ, ਵਿੱਚਕਾਰ ਦੀ ਦੂਰੀ ਹਰ ਕਦਮ ਨਾਲ ਇੱਕ ਘੱਟ ਹੋ ਜਾਂਦੀ ਹੈ, ਇਸ ਲਈ ਉਹ ਲਾਜ਼ਮੀ ਤੌਰ 'ਤੇ ਟਕਰਾਉਂਦੇ ਹਨ; cycle ਤੋਂ ਬਿਨਾ, fast ਅੰਤ ਤੱਕ ਪਹੁੰਚ ਜਾਂਦਾ ਹੈ।
