418531 ภาคต้น 2552/โจทย์ปัญหาอัลกอริทึมเกี่ยวกับกราฟ/เฉลยข้อ 4.5

จาก Theory Wiki
รุ่นแก้ไขเมื่อ 13:45, 16 กันยายน 2552 โดย Cardcaptor (คุย | มีส่วนร่วม)
(ต่าง) ←รุ่นแก้ไขก่อนหน้า | รุ่นแก้ไขล่าสุด (ต่าง) | รุ่นแก้ไขถัดไป→ (ต่าง)
ไปยังการนำทาง ไปยังการค้นหา

ให้่ เป็น edge ใดๆ ใน undirected graph

โจทย์ต้องการให้เราพิสูจน์ว่า edge เป็น tree edge หรือไม่ก็ back edge

นั่นคือเท่ากับพิสูจน์ว่า "ถ้า ไม่เป็น tree edge แล้วมันต้องเป็น back edge"

ดังนั้นเราสมมติว่า ไม่เป็น tree edge

สมมติเพิ่มเพื่อไม่ให้เสียนัยทั่วไปว่า ถูกเรียกก่อน (ถ้า ถูกเรียกก่อนเราก็แค่สลับ กับ )

ข้อสังเกต: เมื่อ ถูกเรียกให้ทำงาน มันจะจบการทำงานก็ต่อเมื่อ ได้เข้าไปสำรวจ vertex ทุก vertex ที่ยังไม่เคยถูกสำรวจซึ่งเราสามารถเดินไปถึงจาก ได้

เนื่องจากมี edge ดังนั้นเราสามารถเดินจาก ไปถึง ได้

แต่ ณ เวลาที่ ถูกเรียก ยังไม่ถูกเรียก เพราะฉะนั้น ณ เวลานั้น ยังไม่ถูกสำรวจ

ฉะนั้นจึงสามารถสรุปได้ว่า เป็นลูกหลานของ ใน DFS tree

edge ไม่ใช่ tree edge มันจึงต้องเป็น back edge เนื่องจากมันเชื่อมลูกหลานตัวหนึ่งของ เข้ากับตัว เอง