Algorithmic thinking


Background photo was designed by rawpixel.com / Freepik

PROBLEM # 1

มีปัญหาว่า เปิดโคมไฟ แล้วไฟไม่ติด
สาเหตุคืออะไรได้บ้าง?
และจากหาสาเหตุที่แท้จริงอย่างไรดี?

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

คราวหน้า ถ้าเจอปัญหาแบบเดียวกันนี้ เราอาจเริ่มจากการตรวจสอบปลั๊กก่อน ถ้าเสียบปลั๊กแล้วไม่ติดจึงลองเปลี่ยนหลอด ถ้าเปลี่ยนแล้วก็ยังไม่ติด จึงค่อยเอาโคมไฟไปซ่อม

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

PROBLEM # 2

มีปัญหาว่า ร้อยด้ายเข้ารูเข็มไม่ได้สักที  ...

เมื่อคิดวิเคราะห์ ตรวจสอบแล้วพบว่า สาเหตุคือ แสงไม่พอ เป็นเหตุให้มองเห็นไม่ชัด ประกอบกับด้ายขนาดใหญ่ รูเข็มเป็นสนิม จึงร้อยด้ายไม่ได้

เราจึงกำหนดเป้าหมายว่า จะทำปลายด้ายให้เล็ก ขัดรูเข็มให้ใหญ่และไม่มีสนิม แล้วเพิ่มแสงไฟให้สว่างไม่ต่ำกว่า 500 ลักซ์

เราจะเขียนคู่มือการปฏิบัติเพื่อแก้ปัญหานี้ ให้กับผู้ปฏิบัติงานจำนวนมากที่ประสบปัญหาแบบเดียวกันนี้ อย่างไร

หลังจากระดมสมอง หาวิธีต่างๆ ที่จะทำให้ได้ตามเป้าที่กำหนดแล้วทดลองทำอยู่หลายครั้ง เราอาจได้ข้อสรุปว่า วิธีที่ได้ผลดี มีขั้นตอนดังนี้
1.  
2.  เอากรรไกรตัดปลายด้าย เอียงทำมุมแหลมประมาณ 30 องศา
3. ลองเอาด้ายที่ตัดแล้วใส่รูเข็ม  ถ้าใส่ได้แล้วก็เป็นอันจบ  แต่ถ้าไม่ได้ ให้ทำขั้นที่ 4 ต่อไป
4. เอารูเข็มจุ่มลงในน้ำส้มสายชู 10 วินาที แล้วนำมาขัดด้วยกระดาษทราย
5. ลองทำขั้นที่ 3 อีกที  ถ้าได้ก็เป็นอันจบ  แต่ถ้ายังไม่ได้ ให้ทำขั้นที่ 4 อีกครั้ง

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

Algorithmic Thinking คือการคิดสร้างกระบวนการแก้ปัญหา อย่างมีเหตุมีผล เป็นขั้นเป็นตอนที่ชัดเจน ว่าเมื่อนำเข้าอะไร (input) แล้วจะต้องได้ผลลัพธ์เช่นไร (output) 

 Algorithm ไม่ใช่คำตอบ  แต่เป็นชุดการกระทำที่ทำให้ได้คำตอบ ซึ่งอาจประกอบด้วย วิธีการเป็นขั้นๆ และมีส่วนที่ต้องทำแบบวนซ้ำ (iterate) หรือ เวียนเกิด (recursive) โดยใช้ตรรกะ (logic) และ/หรือ ในการเปรียบเทียบ (comparison) ในขั้นตอนต่างๆ จนกระทั่งเสร็จสิ้นการทำงาน  

 วิธีการในการอธิบาย Algorithm มีหลายวิธี เช่น Natural Language (อธิบายแบบใช้ภาษาที่เราสื่อสารกันทั่วไป), Pseudocode (อธิบายด้วยรหัสจำลองหรือรหัสเทียม), Flowchart (อธิบายด้วยแผนผัง)

ยกตัวอย่างเช่น ปัญหาคือ มีวิธีการเดินทางไปมหาวิทยาลัยได้อย่างไรบ้าง และควรจะเลือกวิธีใด ผู้ตอบปัญหาก็จะคิดกระบวนการในการแก้ปัญหาในเบื้องต้นว่า มีวิธีเดินทางได้ 3 วิธี แต่ละวิธีมีขั้นตอน ดังนี้

วิธีที่ 1 : เรียก grab taxi > นั่งรถแท็กซี่ > ถึงมหาวิทยาลัย

วิธีที่ 2 : เดินไปปากซอย > รอรถเมล์ > นั่งรถเมล์ > ถึงมหาวิทยาลัย

วิธีที่ 3 : เดินไปปากซอย > เดินไปท่าเรือ > รอเรือด่วน > ลงเรือด่วน > ถึงมหาวิทยาลัย


วิธีที่ 4 : เดินไปปากซอย > เดินไปท่าเรือ > นั่งรถตุ๊กๆ > ถึงมหาวิทยาลัย

ในแต่ละปัญหา มีวิธีแก้ไขหลายวิธี และการตัดสินเลือกวิธีการเดินทาง ก็จะมีขั้นตอนการคิดอย่างมีเหตุมีผล (Algorithm) เช่น

- ถ้าฝนตกจะใช้วิธีที่ 1
- ถ้าฝนไม่ตกจะใช้วิธีที่ 2
- แต่ถ้ารอรถเมล์นานเกิน 15 นาที จะเปลี่ยนไปใช้วิธีที่ 3
- และถ้ารอเรือนานเกิน 15 นาที ก็จะต้องเปลี่ยนไปใช้วิธีที่ 4 

Mobirise

ทดลอง
ใช้ชุดคำสั่งต่อไปนี้ อธิบายหุ่นยนต์ให้เข้าใจ ว่า...
เปิดเครื่องแล้วเลือกประเภทกาแฟ
ถ้าเลือก Mocha ให้ใส่ช็อคโกแลต, นม, กาแฟ
ถ้าเลือก Latteให้ใส่นม, กาแฟ
ถ้าเลือก Espresso ให้ใส่เฉพาะกาแฟ
จากนั้นถ้ากดปุ่ม power ให้ปิดเครื่อง
แต่ถ้าไม่กดปุ่ม power ก็ให้เลือกกาแฟแก้วต่อไป

Mobirise

Made with Mobirise website creator