418531 ภาคต้น 2552/โจทย์ปัญหาอัลกอริทึมแบบตะกละ II/เฉลยข้อ 2

จาก Theory Wiki
ไปยังการนำทาง ไปยังการค้นหา

ข้อย่อย 1

เราจะทำการพิสูจน์โดยใช้ข้อสังเกตต่อไปนี้

สำหรับ edge และ edge ในกราฟ ถ้า

Error

Too many requests (f061ab2)

แล้ว ด้วย

พิสูจน์:

จาก ให้เป็นสมการที่ 1
คูณสมการที่ 1 ทั้งสองข้างด้วย จะได้ ให้เป็นสมการที่ 2 (เนื่องจาก cost ของทุก edge เป็นบวก)
คูณสมการที่ 1 ทั้งสองข้างด้วย จะได้ ให้เป็นสมการที่ 3 (เนื่องจาก cost ของทุก edge เป็นบวก)
จากสมการที่ 2 และ 3 จะได้ จริง


จะพิสูจน์ว่า minimum spanning tree

Error

Too many requests (f061ab2)

จากกราฟ ที่ได้เป็น minimum spanning tree ของกราฟใหม่จริง

ดังนั้นต้องทำการพิสูจน์ว่าสำหรับทุก ๆ edge

Error

Too many requests (f061ab2)

ใน minimum spanning tree นั้น edge ดังกล่าวจะต้องเป็นเป็น edge ใน minmimum spanning tree ต้นหนึ่งของกราฟ ด้วย


พิจารณา edge

Error

Too many requests (f061ab2)

ใด ๆ ที่อยู่ในต้นไม้ ถ้าเราทำการลบ edge นี้ออกจากต้นไม้ เราจะได้ว่าเกิดการแบ่ง vertex ของกราฟ ออกเป็นสองส่วน ให้เป็น กับ โดยที่ คือเซตของ vertex ที่ไปถึงจาก ได้ ในกราฟ ที่ลบ edge ออกแล้ว ส่วน คือเซตของ vertex ที่ไปถึงจาก ได้ ในกราฟ ที่ลบ edge ออกแล้ว สังเกตว่า และ ไม่เป็นเซตว่าง เนื่องจาก ทั้งสองเซตจะมีสมาชิกอยู่อย่างน้อยหนึ่งตัวคือ และ ตามลำดับ นอกจากนี้ยังได้ว่า ดังนั้น เป็น cut ใน


พิจารณา cut set ของ cut เราจะได้ว่า edge เป็น edge ที่มี cost น้อยที่สุดในบรรดา edge ที่ข้าม cut เนื่องจาก edge มีปลายด้านหนึ่งอยู่ใน และปลายอีกด้านหนึ่งอยู่ใน (ถ้าไม่เช่นนั้น เราสามารถเลือก edge ที่มี cost น้อยกว่า edge นี้มาใส่ใน tree แทน เราก็จะได้ tree อีกต้นที่มี cost น้อยกว่า cost ของ จึงขัดแย้งกับที่บอกว่า เป็น minimum spanning tree ใน

Error

Too many requests (f061ab2)

)


พิจารณา cut ซึ่งเป็น cut เดียวกับที่นิยามข้างต้นในกราฟ

Error

Too many requests (f061ab2)

จากที่เราได้ทำการพิสูจน์ไปแล้ว จะได้ว่า cost ของ edge ในกราฟ ซึ่งมีค่าเป็น นี้จะต้องน้อยที่สุดในบรรดา edge ที่ข้าม cut ในกราฟ ด้วย นั่นคือ สำหรับ edge ใด ๆ ที่เป็น edge ข้าม cut และ แล้ว และเนื่องจากโจทย์กำหนดให้ cost ของแต่ละ edge ในกราฟไม่ซ้ำกัน จาก cut property เราจะได้ว่า edge นี้จะต้องเป็น edge ใน minimum spanning tree ต้นหนึ่งของกราฟ

ข้อย่อย 2

ข้อความข้างต้นไม่จริง แสดงตัวอย่างขัดแย้งได้ดังต่อไปนี้

2 2.JPG

จากตัวอย่างข้างต้น กราฟทางซ้ายเป็นกราฟที่ให้มา จากกราฟจะได้ระยะทางที่สั้นที่สุดจาก ไป คือ edge ที่พุ่งจาก ไปยัง เลย ซึ่งมี cost เป็น 10 แต่เมื่อเอาค่า cost ของแต่ละ edge มายกกำลังสองแล้วจะได้ว่า ระยะทางจาก ไป จะเป็น

Error

Too many requests (f061ab2)

ซึ่งมี cost เป็น 4+16+49 = 69 ซึ่งน้อยกว่า cost ของedge จาก ไปยัง ที่เคยเป็นระยะทางที่สั้นที่สุดจากกราฟตั้งต้น ซึ่งตอนนี้มี cost เป็น 100

รายการเลือกการนำทาง