Floyd判圈算法

Floyd判圈算法 ( Floyd Cycle Detection Algorithm ) ， 又稱龜兔賽跑算法 ( Tortoise and Hare Algorithm ) ， 是一個可以在有限狀態機 、 迭代函數或者鏈表上判斷是否存在環 ， 求出該環的起點與長度的算法 。 該算法據高德納稱由美國科學家羅伯特 · 弗洛伊德發明 ， 但這一算法並沒有出現在羅伯特 · 弗洛伊德公開發表的著作中 。 如果有限狀態機 、 迭代函數或者鏈表上存在環 ， 那麼在某個環上以不同速度前進的2個指針必定會在某個時刻相遇 。 同時顯然地 ， 如果從同一個起點 同時開始以不同速度前進的2個指針最終相遇 ， 那麼可以判定存在一個環 ， 且可以求出2者相遇處所在的環的起點與長度 。