การ preprocess
ให้ทำ (เรียก จาก root)
ขั้นตอนนี้ใช้เวลา
การตอบคำถามว่า เป็นบรรพบุรุษของ หรือไม่
กำหนด vertex และ สอง vertex ใดๆ ในต้นไม้ มาให้ เราสามารถตรวจสอบได้ว่า
เป็นบรรพบุรุษของ ได้หรือไม่ดังต่อไปนี้
- ตรวจสอบว่า หรือไม่
การตรวจสอบนี้ใช้เวลา
ที่เหลือคือเราต้องพิสูจน์ว่าการทดสอบนี้ถูกต้อง ซึ่งเท่ากับการพิูสูจน์ขอ้ความสองข้อความต่อไปนี้
- ถ้า เป็นบรรพบุรุษของ แล้ว
- ถ้า ไม่ใช่บรรพบุรุษของ แล้ว ข้อความ "" ไม่เป็นความจริง
ข้อความที่ 1
สมมติว่า เป็นบรรพบุรุษของ แล้ว path จาก ไปยัง จะต้องผ่าน
ฉะนั้นเมื่อทำ จาก เราจะได้ว่า จะถูกสำรวจก่อน
ฉะนั้น
นอกจากนี้ เนื่องจากเราสามารถเดินจาก ไปถึง เราจะได้ว่า จะต้องถูกสำรวจเสร็จก่อนที่ จะสำรวจ เสร็จ กล่าวคือ
ฉะนั้นเราสรุปได้ว่า
ข้อความที่ 2
ข้อความที่ 2 สมมูลกับข้อความที่ว่า "ถ้า "
แล้ว เป็นบรรพบุรุษของ
สมมติว่า เราได้ว่า เป็นบรรพบุรุษของ ใน DFS tree
แต่เนื่องจากกราฟตั้งต้น เป็นต้่นไม้อยู่แล้ว จึงเป็น DFS tree ด้วย ดังนั้น จึงเป็นบรรพบุรุษของ ใน