เราจะทำการพิสูจน์ข้อความทั้งสามโดยใช้ข้อสังเกตสองข้อต่อไปนี้
ถ้า
Wikimedia Error
Error
Too many requests (f061ab2)
ถูกเรียกให้ทำงานหลังจาก
Wikimedia Error
Error
Too many requests (f061ab2)
ทำงาน
แต่ก่อนที่
จะทำงานเสร็จ แล้วจะมี path ใน DFS tree จาก
ถึง
Wikimedia Error
Error
Too many requests (f061ab2)
พิสูจน์: เนื่องจาก
Wikimedia Error
Error
Too many requests (f061ab2)
ถูกเรียกให้ทำงานระหว่างที่
ทำงานไปแล้วแต่ยังทำให้เสร็จ
เราจะได้ว่ามีลำดับของ vertex
Wikimedia Error
Error
Too many requests (f061ab2)
โดยที่
Wikimedia Error
Error
Too many requests (f061ab2)
โดยที่
เรียก
Wikimedia Error
Error
Too many requests (f061ab2)
แล้ว
Wikimedia Error
Error
Too many requests (f061ab2)
เรียก
เช่นนี้ไปเรื่อยๆ จนกระทั้ง
Wikimedia Error
Error
Too many requests (f061ab2)
เรียก
เนื่องจาก
เรียก
แสดงว่ามี edge
Wikimedia Error
Error
Too many requests (f061ab2)
อยู่ในกราฟ
นอกจากนี้ edge
นี้ยังเป็น tree edge อีกด้วย ในทำนองเดียวกัน เราจะได้ว่า edge
,
Wikimedia Error
Error
Too many requests (f061ab2)
,
Wikimedia Error
Error
Too many requests (f061ab2)
,
Wikimedia Error
Error
Too many requests (f061ab2)
ก็เป็น tree edge เช่นเดียวกัน ดังนั้นจึงมี path ใน DFS tree จาก
ไปยัง
Wikimedia Error
Error
Too many requests (f061ab2)
กรณีที่ 1
เราจะพิสูจน์ว่าถ้า
แล้ว edge
จะต้องเป็น tree edge หรือว่า forward edge
พิสูจน์: เนื่องจาก
เรารู้ว่า
เริ่มทำงานก่อน
เนื่องจาก
เรารู้ว่า
ถูกเรียกก่อนที่
จะทำงานเสร็จ
ฉะนั้นจะต้องมี path ใน DFS tree จาก
ถึง
Wikimedia Error
Error
Too many requests (f061ab2)
กล่าวคือ
Wikimedia Error
Error
Too many requests (f061ab2)
เป็นลูกหลานของ
ดังนั้น
จึงเป็น tree edge หรือไม่ก็ forward edge
กรณีที่ 2
เราจะพิสูจน์ว่าถ้า
Wikimedia Error
Error
Too many requests (f061ab2)
แล้ว edge
จะต้องเป็น back edge
พิสูจน์: เนื่องจาก
Wikimedia Error
Error
Too many requests (f061ab2)
เรารู้ว่า
เริ่มทำงานก่อน
เนื่องจาก
Wikimedia Error
Error
Too many requests (f061ab2)
เรารู้ว่า
ถูกเรียกก่อนที่
จะทำงานเสร็จ
ฉะนั้นจะต้องมี path ใน DFS tree จาก
Wikimedia Error
Error
Too many requests (f061ab2)
ถึง
กล่าวคือ
เป็นลูกหลานของ
Wikimedia Error
Error
Too many requests (f061ab2)
ดังนั้น
จึงเป็น back edge
กรณีที่ 3
เราจะพิสูจน์ว่าถ้า
และ
Wikimedia Error
Error
Too many requests (f061ab2)
ไม่มีส่วนร่วมกันแล้ว
จะต้องเป็น cross edge
พิสูจน์: ให้ประพจน์
Wikimedia Error
Error
Too many requests (f061ab2)
แทนข้อความ "
และ
ไม่มีส่วนร่วมกันแล้ว"
ใ้ห้ประพจน์
Wikimedia Error
Error
Too many requests (f061ab2)
แทนข้อความ "
เป็น cross edge"
เราต้องการพิสูจน์ว่า
Wikimedia Error
Error
Too many requests (f061ab2)
cross edge คือ edge ที่ไม่ใช่ tree edge, back edge, หรือ forward edge ดังนั้นเราสามารถพิสูจนฺ์ว่า
เป็น cross edge
ได้โดยการพิสูจน์ข้อความ
Wikimedia Error
Error
Too many requests (f061ab2)
เมื่อ
เนื่องจาก
Wikimedia Error
Error
Too many requests (f061ab2)
เราจึงจะทำการพิสูจน์ข้อความ
Wikimedia Error
Error
Too many requests (f061ab2)
แทน
สมมติให้
Wikimedia Error
Error
Too many requests (f061ab2)
เป็นจริง กล่าวคือ
เป็น tree, back, หรือ forward edge เราจะได้ว่า
- ถ้า
เป็น tree edge แล้ว เราจะได้ว่า
ถูกเรียกหลัง
เริ่มทำงาน และ
จบการทำงานก่อน
จะจบการทำงาน ดังนั้น
กล่าวคือช่วง
และ มีส่วนร่วมกัน
- ถ้า
เป็น back edge แล้ว เราจะได้ว่า
เป็นลูกหลานของ ใน DFS tree ดังนั้น
ถูกเรียกหลัง
เริ่มทำงาน และ
จบการทำงานก่อน จะจบการทำงาน ดังนั้น
กล่าวคือช่วง
และ
มีส่วนร่วมกัน
- ถ้า เป็น forward edge แล้ว เราสามารถใช้การให้เหตุผลในข้อ 1 แสดงได้ว่า ช่วง
และ
มีส่วนร่วมกันได้
ทั้งสามกรณีให้ข้อสรุปว่า และ
มีส่วนร่วมกัน กล่าวคือประพจน์ ไม่เป็นจริง
ดังนั้นเราสามารถสรุปได้ว่าถ้า
และ
ไม่มีส่วนร่วมกันแล้ว
จะต้องเป็น cross edge