Skip to main content

แนะนำ Algorithm

c++-basic-algorithm สามารถดู video ของหัวข้อนี้ก่อนได้ ดู video

Algorithm คืออะไร

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

  1. Finiteness algorithm ต้องมีจำนวนขั้นตอนที่จำกัดและต้องหยุดทำงานหลังจากผ่านไปช่วงเวลาหนึ่ง (มีเงื่อนไขให้หยุดได้)
  2. Definiteness แต่ละขั้นตอนใน Algorithm ต้องมีการนิยามที่ชัดเจน ต้องไม่สามารถตีความเป็นรูปแบบอื่นได้
  3. Input algorithm อาจต้องการข้อมูล input (ข้อมูลจากฝั่งของ user) อย่างน้อยหนึ่งตัว ซึ่งเป็นข้อมูลหรือค่าเริ่มต้นที่ใช้ในการประมวลผล
  4. Output หลังจากประมวลผลข้อมูลแล้ว Algorithm ควรจะสร้างข้อมูล output อย่างน้อยหนึ่งตัว ซึ่งเป็นผลลัพธ์ตามที่ต้องการออกมา
  5. Effectiveness algorithm ควรจะสร้างผลลัพธ์ที่ถูกต้อง สำหรับข้อมูล input ให้ได้ตาม output ที่ต้องการตามโจทย์ออกมา

Algorithm ถูกใช้ในหลากหลายแขนงมาก ไม่ว่าจะเป็น computer science, mathematics, engineering หรืออื่นๆก็ตาม สิ่งนี้ถือเป็นรากฐานสำคัญของ computer programming และเป็นพื้นฐานสำคัญที่ทำให้ computer สามารถแก้ปัญหาที่ซับซ้อนได้, สามารถดำเนินการคำนวณ, จัดการ data process หรือการทำ automate task ในชีวิตประจำวันได้

นี่คือตัวอย่างของ algorithm

  • Sorting algorithms (e.g., bubble sort, merge sort, quicksort) ใช้สำหรับจัดเรียงข้อมูลตามลำดับที่ต้องการ เช่น การเรียงลำดับตัวเลขจากน้อยไปมาก หรือเรียงตามลำดับตัวอักษร
  • Search algorithms (e.g., linear search, binary search) ใช้สำหรับค้นหาข้อมูลที่ต้องการภายในโครงสร้างข้อมูล เช่น การค้นหาชื่อบุคคลในรายชื่อ หรือการค้นหาสินค้าในระบบร้านค้าออนไลน์
  • Encryption algorithms (e.g., AES, RSA) ใช้สำหรับรักษาความปลอดภัยของข้อมูลและการสื่อสาร โดยการเปลี่ยนข้อมูลต้นฉบับให้เป็นรูปแบบที่ไม่สามารถอ่านได้ง่ายๆ เพื่อช่วยป้องกันการโจรกรรมข้อมูลระหว่างการส่งข้อมูลได้
  • Pathfinding algorithms (e.g., Dijkstra's algorithm, A* algorithm) ใช้สำหรับค้นหาเส้นทางที่สั้นที่สุดระหว่างสองจุด เช่น การค้นหาเส้นทางบนแผนที่นำทาง หรือการค้นหาลำดับการเดินหมากบนกระดานหมากรุก
  • Compression algorithms (e.g., Huffman coding, LZW) ใช้สำหรับลดขนาดของข้อมูล โดยการแทนที่ข้อมูลเดิมด้วยข้อมูลชุดใหม่ที่มีขนาดเล็กกว่า ส่งผลทำให้ช่วยประหยัดพื้นที่จัดเก็บข้อมูลและความเร็วในการส่งข้อมูล

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

ในหัวข้อนี้ เราจะมาพูดถึงพื้นฐานของ algorithm 2 ตัวแรกสุดนั่นคือ Search และ Sort กันก่อนว่ามันคืออะไรและมีหลักการอย่างไรกันบ้าง รวมถึงจะแนะนำ Data Strcuture เพิ่มเติมอย่าง Hash Table ที่จะนำมาประยุกต์ใช้กับในหัวข้อถัดๆไปได้เช่นกัน