• 1 min

ทำไมอัลกอในชีวิตจริงถึงไม่เหมือนในโจทย์

เคยไหมเวลาไปนั่งกินอาหารที่ร้าน แล้วรู้สึกว่าอาหารเรามันไม่มาสักที เผลอๆบางทีโต๊ะข้างๆที่มาหลังเราดันได้อาหารก่อนเราอีก แล้วกว่าจะได้กินโต๊ะข้างๆก็ออกกันไปละ (มันน่าโมโหเนอะ 😕)

เป็ดไอคอนของเรื่องเล่าชาวอัลกอ Practical Algorithms
Practical Algorithms: เรื่องเล่าชาวอัลกอ
เพจที่อยากให้คนไทยมีเนื้อหาอัลกอริทึมดีๆ ให้ได้อ่านกัน
เป็ดของชาวอัลกอตัวเล็กสองตัวกำลังรอลิฟต์ แต่ว่ารู้สึกรอนานเกิน เป็ดตัวเล็กบอกอีกตัวว่า "ผมกดลิฟต์แล้วนะฮะ"

หรืออีกสถานการณ์นึงอย่างเดินไปกดลิฟต์ ทั้งๆที่มีลิฟต์รออยู่ชั้น 1 ไม่รู้ทำไม มันไปรอลิฟต์ที่อยู่ชั้นอื่นที่กำลังลงมาชั้น 1 ปล่อยให้คนออกให้หมด แล้วให้เราขึ้นลิฟต์นั้นแทน แทนที่มันจะเปิดลิฟต์ที่อยู่ชั้น 1 ให้เราแต่แรก

ลองมองอีกมุมนึง

ถ้ามองดีๆ จริงๆแล้ว ทางร้านอาหาร หรือระบบจัดการลิฟต์ก็คงมี “วิธีการ” หรือ อัลกอริทึม บางอย่างที่ทำให้มันเลือกที่จะทำแบบนั้น

อย่างทางร้านเขาก็อาจจะมีระบบจัดวาง order อาหารที่รวบวิธีการทำอาหารเหมือนๆกันมาไว้ด้วยกัน แล้วทำพร้อมๆกันเพื่อที่จะจัดการอาหารที่ demand สูงได้มีประสิทธิภาพและประหยัดพลังงานกว่า ซึ่งก็อาจจะแลกมาด้วยเวลาการรอที่จะเพิ่มขึ้นถ้าไม่ได้สั่งอาหารเหมือนกับคนอื่นๆเขา

หรือระบบลิฟต์ คนวางระบบก็อาจจะออกแบบให้มันประหยัดพลังงานโดยการลดจำนวนลิฟต์ที่ต้องใช้ โดยแลกกับการที่คนอาจจะต้องรอเพิ่มนิดหน่อย

ทำไมเราถึงไม่พอใจ

แต่เราในฐานะ User ไม่ได้แคร์ตรงน้ัน สิ่งลูกค้าคิดมีแค่ “เมื่อไหร่อาหารจะมา” กับ “เมื่อไหร่ลิฟต์จะมารับสักที” และการที่อาหารยังไม่มา หรือลิฟต์ไม่เปิดสักที ก็เป็นปัจจัยหลักอันดับต้นๆที่จะทำให้ User ไม่พอใจในบริกาารนั้นๆ

แล้วเราควรจะทำยังไง

ในฐานะคนเขียนโปรแกรมก็ควรที่จะคำนึงถึงทั้งสองฝั่ง

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

ส่วนเรื่องเกณฑ์คำว่าแย่นั้นก็ควรจะมีวิธีวัดได้ในระดับนึงเพื่อที่จะเอาข้อมูลตรงนี้มาใช้ประโยชน์ในการประเมิน อัลกอริทึมต่อไป

0

บทความอื่นๆ