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

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

เราให้หมายเลขรถโดยให้รถคันแรกที่ออกจากกรุงเทพฯ เป็นรถหมายเลข 1 รถคันที่สองที่ออกจากกรุงเทพฯ เป็นรถหมายเลข 2 เช่นนี้ไปเรื่อยๆ

ให้ S เป็นวิธีการจัดของลงรถสักวิธีหนึ่ง สำหรับของชิ้นที่ เราให้ แทนหมายเลขของรถคันที่ของชิ้นที่ ถูกบรรจุ สังเกตว่า คือจำนวนรถที่ใช้ในการขนส่งของ ชิ้นแรก

ตัวอย่าง สมมติว่ารถแต่ละคันสามารถบรรทุกน้ำหนักได้ 10 หน่วย และให้ ของชื้นที่ 1 มีน้ำหนัก 5 หน่วย ของชิ้นที่สองมีน้ำหนัก 2 หน่วย ของชิ้นที่ 3 มีน้ำหนัก 1 หน่วย และของชิ้นที่ 4 มีน้ำหนัก 9 หน่วย

วิธีการบรรจุของลงรถของมีได้หลายวิธี เช่น สมมติให้ เป็นวิธีการบรรจุของลงรถให้แต่ละคันมีของเพียงแค่ชิ้นเดียว เราจะได้ว่าของชิ้นที่ 1 ลงรถหมายเลข 1 ของชิ้นที่สองลงรถหมายเลข 2 เช่นนี้ไปเรื่อยๆ ดังนั้นเราจะได้ว่า , , , และ เป็นค้น ถ้า เป็นวิธีการส่งของลงรถโดยที่รถหมายเลข 1 มีของชิ้นที่ 1 และ 2 ส่วนรถหมายเลข 2 มีของชิ้นที่ 3 และ 4 เราจะได้ว่า และ

ให้ เป็นวิธีการจัดของลงรถแบบ greedy ในโจทย์ และให้ เป็นวิธีการจัดของลงรถที่ใช้รถจำนวนน้อยคันที่สุดเท่าที่จะเป็นไปได้ ดังนั้นเราทราบว่า

ตัวอย่าง ในกรณีตัวอย่างข้างบน เราจะได้ว่า greedy algorithm จะบรรจุของชิ้นที่ 1, 2, และ 3 ลงในรถหมายเลข 1 และของชิ้นที่ 4 ลงในรถหมายเลข 2 ดังนั้น และ สำหรับตัวอย่างนี้ เราเห็นได้อย่างชัดเจนว่าต้องใช้รถอย่างน้อยสองคัน ดังนั้น greedy algorithm จึงใช้รถเป็นจำนวนน้อยที่สุดในกรณีนี้ แต่วิธีการจัดของลงรถบรรทุกให้ใช้รถเพียงแค่สองคันมีอยู่ได้หลายวิธี และ จะเป็นวิธีไหนในวิธีการจัดแบบนั้นก็ได้ เช่น เราจะบอกว่า คือ การจัดของทีใส่ของชิ้นที่ 1 และชิ้นที่ 2 ลงไปในรถคันที่ 1 และของชิ้นที่ 3 และ 4 ลงในรถคันที่ 2 ก็ได้ ดังนั้น และ



lemma 1: สำหรับ ทุกค่าที่

พิสูจน์: การพิสูจน์ทำโดย strong induction บนตัวแปร i

(Base Case) ในกรณีนี้ เราได้ว่า (เนื่องจาก greedy algorithm จะจัดของชิ้นแรกใส่รถหมายเลข 1 เลย) ดังนั้น base case เป็นความจริง

(Induction Case) สมมติว่ามีจำนวนเต็ม ที่ทำให้ สำหรับค่า ทุกค่าที่

พิจารณาการบรรจุของชิ้นที่ ลงรถบรรทุก กรณีนี้มีความเป็นไปได้สองกรณี

กรณีที่ 1: ถ้า ซึ่งหมายความว่า greedy algorithm ใข้รถน้อยกว่า ในการส่งของ ชิ้นแรก แล้วเราจะได้ว่าในการส่งของชิ้นที่ greedy algorithm จะใช้รถไม่เกิน คัน (เนื่องจาก greedy algorithm อาจจะเอาของชิ้นที่ ไปใส่ในรถคันใหม่) และ จะต้องนำของชิ้นที่ ไปใส่ในรถหมายเลข หรือไม่ก็ ฉะนั้นเราจะได้ว่า ตามต้องการ

กรณีที่ 2: ถ้า แล้วเราจะได้ว่าทั้ง greedy algorithm และ ใส่ของชิ้นที่ ลงไปในรถหมายเลข เหมือนกัน เราจะพิสูจน์ว่าวิธีการจัดของของ greedy algorithm จะทำให้รถหมายเลข มีที่ว่างเหลือมากกว่า

พิจารณาของที่ถูกจัดให้อยู่ในรถหมายเลข ในกรณีของ greedy algorithm เราจะได้ว่ามันคือของชิ้นที่ ทุกชิ้นซึ่ง และในกรณีของ มันคือของชิ้นที่ ทุกชิ้นที่

จากสมมติฐานของ induction เราทราบว่า สำหรับค่า ทุกค่าที่ ดังนั้นถ้า และเราจะได้ว่า จะต้องมีค่าเท่ากับ ด้วยเสมอ เนื่องจาก

เราจึงสามารถสรุปได้ว่า สำหรับของทุกชิ้นที่ greedy algorithm ใส่ลงในรถหมายเลข เราจะได้ว่า ก็จะใส่มันลงในรถหมายเลข ด้วย เพราะฉะนั้น greedy algorithm จะทำให้รถคันที่ มีที่ว่างเหลือไม่น้อยกว่าที่ว่างที่เกิดจากวิธีการจัดของของ เสมอ

ด้วยเหตุนี้ในการจัดของชิ้นที่ ลงรถ จึงไม่มีทางเป็นไปได้ที่ greedy algorithm จะใช้จำนวนรถมากกว่า เพราะ greedy algorithm จะจัดของชิ้นที่ ลวรถหมายเลข ทันทีถ้ามีที่ว่างพอ กล่าวคือ

ดังนั้นเราสามารถสรุปได้ว่า สำหรับ ทุกค่าที่ (จบการพิสูจน์ lemma 1)



จาก lemma 1 เราจะได้ว่า ซึ่งหมายความว่า greedy algorithm ใช้รถน้อยค้นที่สุดเท่าที่จะเป็นไปได้แล้ว