อัลกอริทึม (Algorithm) คืออะไร?

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

แนวคิดเรื่องชุดเงื่อนไขเหล่านี้ก็คล้ายคลึงกับของอัลกอริทึมของคอมพิวเตอร์นั่นเอง  ไม่ว่าจะให้เจ้าหุ่นยนต์เลี้ยวซ้าย เลี้ยวขวา หรือเคลื่อนที่ตรงไป ก็จะมีชุดเงื่อนไขที่จะต้องใช้เพื่อให้หุ่นยนต์ทำตามคำสั่งเราได้อย่างมีประสิทธิภาพ  ความต่างข้อเดียวก็คือเงื่อนไขของคนสามารถเปลี่ยนแปลงได้ตลอดเวลา แต่หุ่นยนต์จะมีโปรแกรมที่คอยสั่งให้ทำงานต่าง ๆ ในลักษณะที่เคร่งครัดกว่า โปรแกรมเหล่านี้ช่วยให้คอมพิวเตอร์ “เรียนรู้” ที่จะปรับเปลี่ยนการทำงานให้เข้ากับเงื่อนไขต่าง ๆ ตามขั้นตอนทั่วไปของตัวคอมพิวเตอร์เอง หรือจะเรียกว่าสิ่งนี้เป็น Machine Learning หรือการพัฒนาปัญญาประดิษฐ์ (Artificial Intelligence) ก็ได้

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

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

อัลกอริทึมและ SPACE COMPLEXITY

Space Complexity คืออะไร แล้วเกี่ยวอะไรกับอัลกอริทึม? หน่วยความจำเสริม (Auxiliary Space) คือ หน่วยความจำส่วนเกินที่ที่อัลกอริทึมใช้ ซึ่งบ่อยครั้งคนจะสับสนกับ Space Complexity  อันที่จริงแล้ว Space Complexity จะรวมทั้ง Auxiliary Space และ การนำเข้าข้อมูล (Data Input) เหตุผลที่อัลกอริทึมใช้พื้นที่หน่วยความจำคือสามสิ่งต่อไปนี้

  1. Instruction Space คือหน่วยความจำที่ต้องใช้เพื่อจัดเก็บคำสั่งทั้งชุดไว้ในเครื่องจักร
  2. Environmental Stack คือกรณีที่อัลกอริทึมต้องอยู่ภายในอีกอัลกอริทึมหนึ่ง ซึ่งข้อมูลบางอย่างจะถูกใส่ไว้ในสแต็คของระบบ และเก็บเอาไว้สำหรับใช้ภายหลัง
  3. Data Space คือจำนวนหน่วยความจำที่มี Data Input อยู่

อัลกอริทึมและ TIME COMPLEXITY

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

SEARCHING ALGORITHM (อัลกอริทึมการสืบค้น)

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

SORTING ALGORITHM (อัลกอริทึมการจัดเรียงข้อมูล)

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

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

คลิปวิดีโอสาธิตการใช้ Bubble sort

การจัดเรียงแบบ Selection Sort จะแยกข้อมูลที่ถูกป้อนเข้ามาออกเป็นสองส่วนย่อย ๆ คือรายการข้อมูลที่จัดลำดับแล้ว และที่ยังไม่จัด รายการหลังจะถูกจัดเรียงตามรูปแบบของรายการแรกจนกระทั่งข้อมูลทั้งหมดเป็นไปตามลำดับที่กำหนด

คลิปวิดีโอสาธิตการใช้ Selection sort

Insertion Sort จะง่ายกว่าสองแบบแรกคือ จะมีการเลือกข้อมูลออกมาแล้วนำไปแทรกไว้ในลำดับที่เหมาะสมในส่วนข้อมูลที่จัดเรียงแล้ว

คลิปวิดีโอสาธิตการใช้ Insertion sort

ส่วน Merge Sort จะแบ่งข้อมูลที่ยังไม่จัดระเบียบออกเป็นส่วนที่เล็กที่สุด แล้วนำส่วนเล็ก ๆ นี้มาจับกลุ่มกัน จากนั้นจึงดำเนินการเรียงลำดับภายในกลุ่ม รวมกลุ่มข้อมูลที่เรียงแล้วเข้ากับอีกกลุ่ม แล้วจัดเรียงลำดับภายในกลุ่มอีกครั้ง ทำแบบนี้ต่อไปเรื่อย ๆ จนข้อมูลทั้งหมดเป็นกลุ่มเดียวกันและอยู่ในลำดับที่กำหนด

คลิปวิดีโอสาธิตการใช้ Merge sort

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

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

ทีมงาน Enabler Space ให้บริการ Digital Marketing และ SEO (Search Engine Optimization) ตั้งแต่การวางแผน การลงมือปฏิบัติจริง และการฝึกอบรม

ติดต่อสอบถามเพิ่มเติม | E: digital@enablerspace.com | T: 02 297 0289