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

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

ข้อย่อย 1

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

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

พิสูจน์:

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


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

ดังนั้นต้องทำการพิสูจน์ว่าสำหรับทุก ๆ edge ใน minimum spanning tree นั้น edge ดังกล่าวจะต้องเป็นเป็น edge ใน minmimum spanning tree ต้นหนึ่งของกราฟ ด้วย


พิจารณา edge ใด ๆ ที่อยู่ในต้นไม้ ถ้าเราทำการลบ 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 ใน )


พิจารณา cut ซึ่งเป็น cut เดียวกับที่นิยามข้างต้นในกราฟ จากที่เราได้ทำการพิสูจน์ไปแล้ว จะได้ว่า 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 มายกกำลังสองแล้วจะได้ว่า ระยะทางจาก ไป จะเป็น ซึ่งมี cost เป็น 4+16+49 = 69 ซึ่งน้อยกว่า cost ของedge จาก ไปยัง ที่เคยเป็นระยะทางที่สั้นที่สุดจากกราฟตั้งต้น ซึ่งตอนนี้มี cost เป็น 100