การเขียนโปรแกรมนั้นไม่ใช่แค่การแก้ปัญหาบนหน้าจอคอมพิวเตอร์เท่านั้น แต่ยังเป็นศาสตร์ที่ให้เรานักพัฒนาได้คิดเชิงวิเคราะห์ และต้องเลือกใช้กลยุทธ์การโปรแกรมที่เหมาะสมเพื่อให้ได้ผลลัพธ์ที่คุ้มค่าทั้งในเรื่องเวลาและทรัพยากร หนึ่งในกลยุทธ์เหล่านั้นคือ "กรีดี้ อัลกอริทึม" (Greedy Algorithm) ซึ่งในบทความนี้เราจะศึกษากันถึงมิติต่าง ๆ ของกรีดี้ อัลกอริทึม และพิจารณาคุณค่าของมันต่อการเขียนโปรแกรมวิชาการอย่างละเอียดยิบ
กรีดี้ อัลกอริทึมคืออะไร?
ในการเขียนโปรแกรม อัลกอริทึมที่เรียกว่า "กรีดี้" หมายถึงการเลือกที่จะดำเนินการเพื่อส่งมอบผลลัพธ์ที่ดีที่สุดในแต่ละขั้นตอนโดยไม่ต้องกลับไปพิจารณาตัวเลือกที่ผ่านๆ มา นั่นคือ มันเลือกทำสิ่งที่ดูเหมือนจะให้ผลลัพธ์ที่ดีที่สุดในขณะนั้นโดยทันที โดยไม่คำนึงถึงผลที่อาจเกิดขึ้นในระยะยาว
ใช้แก้ปัญหาอะไร?
กรีดี้ อัลกอริทึมมักถูกนำไปใช้ในปัญหาการหาคำตอบที่เหมาะสมหรืออยู่ใกล้เคียงกับคำตอบที่ดีที่สุดในเวลาที่รวดเร็ว ทำให้เหมาะสำหรับปัญหาที่ต้องการคำตอบอย่างรวดเร็วในสถานการณ์จริง เช่น การหาเส้นทางในการจราจรที่ดีที่สุด, การจัดกำหนดการ, การจัดสินค้าในกระเป๋าหรือตู้เสื้อผ้าแบบใส่ได้มากที่สุด (Knapsack Problem), หรือการกำหนดลำดับงานในกระบวนการผลิต
ตัวอย่าง Code และ Usecase:
สมมติเรามีตัวอย่างของ Knapsack Problem การจัดเก็บสินค้าลงในกระเป๋าที่มีปริมาตรจำกัดในภาษา Python เราจะใช้กรีดี้ อัลกอริทึมเพื่อเลือกสินค้าที่มีค่าเฉลี่ยสูงสุดต่อหน่วยน้ำหนักเพื่อใส่เข้าไปในกระเป๋าเป็นอันดับแรก:
หมายเหตุ: ข้อมูลในบทความนี้อาจจะผิด โปรดตรวจสอบความถูกต้องของบทความอีกครั้งหนึ่ง บทความนี้ไม่สามารถนำไปใช้อ้างอิงใด ๆ ได้ ทาง EPT ไม่ขอยืนยันความถูกต้อง และไม่ขอรับผิดชอบต่อความเสียหายใดที่เกิดจากบทความชุดนี้ทั้งทางทรัพย์สิน ร่างกาย หรือจิตใจของผู้อ่านและผู้เกี่ยวข้อง
Tag ที่น่าสนใจ: กรีดี้_อัลกอริทึม โปรแกรม python อัลกอริทึม การเขียนโปรแกรม กรีดี้ greedy_algorithm knapsack_problem คำตอบ ปัญหา การทำงาน ปริมาตร นักพัฒนา แก้ปัญหา
หากมีข้อผิดพลาด/ต้องการพูดคุยเพิ่มเติมเกี่ยวกับบทความนี้ กรุณาแจ้งที่ http://m.me/Expert.Programming.Tutor
085-350-7540 (DTAC)
084-88-00-255 (AIS)
026-111-618
หรือทาง EMAIL: NTPRINTF@GMAIL.COM