สมมติว่าโปรแกรมไม่โต้ตอบกับโลกภายนอกดังนั้นจึงเป็นไปได้ที่จะสรุปสถานะทั้งหมดของโปรแกรม (ซึ่งหมายความว่ามันไม่ได้ทำการป้อนข้อมูลใด ๆ อย่างน้อย) นอกจากนี้สมมติว่าโปรแกรมกำลังทำงานในสภาพแวดล้อมที่กำหนดไว้เพื่อให้แต่ละรัฐมีผู้สืบทอดที่ไม่ซ้ำกันซึ่งหมายความว่ารันไทม์ไม่ได้เป็นเธรดหรือเธรด สามารถลดลงไปเป็นลำดับ
ภายใต้สมมติฐานที่ไม่น่าจะเป็นไปได้สูง แต่ไม่มีข้อ จำกัด ในทางทฤษฎีเราสามารถทำซ้ำโปรแกรมและรันโปรแกรมในสองช่วงเวลาแยกกัน แต่ละคนจะทำการคำนวณเดียวกัน
งั้นลองทำดู เราจะเรียกใช้ครั้งเดียวในรันไทม์ของ Tortoise และในเวลาเดียวกันเราจะเรียกใช้ในรันไทม์ของ Hare อย่างไรก็ตามเราจะจัดการให้รันไทม์ของ Hare ทำงานเร็วเป็นสองเท่า ทุกครั้งที่รันไทม์ของ Tortoise สร้างเพียงหนึ่งขั้นตอนรันไทม์ของ Hare จะทำสองขั้นตอน
ตอนนี้เราสามารถเปรียบเทียบสถานะหลังจากทุกขั้นตอนของ Tortoise runtime หากโปรแกรมเข้าสู่วงวนไม่รู้จบn ขั้นตอนหลังจากคำนำหน้าบางส่วนที่ไม่ใช่ลูป พี ขั้นตอนจากนั้นรัฐกระต่ายและเต่าจะเหมือนกันในทุกขั้นตอนของเต่า k n สำหรับจำนวนเต็มใด ๆ k ที่ไหน k n ≥ p.
ค่าใช้จ่ายทั้งหมดของการทดสอบคือหนึ่งสถานะพิเศษและการเปรียบเทียบหนึ่งสถานะต่อขั้นตอนและจะสิ้นสุดในไม่เกินสามเท่าของจำนวนขั้นตอนที่โปรแกรมใช้เพื่อให้ลูปแรกเสร็จสมบูรณ์ (ครั้งหนึ่งในเต่าและสองครั้งในกระต่ายรวมเป็นสามครั้ง)
ตามเงื่อนไขที่ฉันใช้บ่งบอกว่านี่เป็นเพียงอัลกอริทึมTortoise และ Hare cycle-detection ที่มีชื่อเสียงของ Robert Floyd