ขั้นตอนวิธี (Algorithm)

ความหมายของ “ขั้นตอนวิธี” (Algorithm)

ในกระบวนการแก้ปัญหาด้วยคอมพิวเตอร์หรือแม้แต่ในชีวิตประจำวัน หนึ่งในแนวคิดสำคัญที่ใช้ในการดำเนินงานคือ “ขั้นตอนวิธี” หรือที่เรียกในภาษาอังกฤษว่า Algorithm ซึ่งหมายถึง

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

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

ลักษณะสำคัญของขั้นตอนวิธีที่ดี

  1. ชัดเจนแน่นอน (Definiteness)
    แต่ละขั้นตอนต้องมีความชัดเจน ไม่กำกวม และสามารถเข้าใจได้โดยไม่ต้องตีความหลายทาง
  2. มีจุดเริ่มต้นและจุดสิ้นสุด (Finiteness)
    ขั้นตอนวิธีต้องมีจุดเริ่มต้นและสิ้นสุดในเวลาที่จำกัด ไม่เกิดการวนซ้ำไม่รู้จบ
  3. สามารถนำไปใช้ซ้ำได้ (Effectiveness)
    คำสั่งภายในขั้นตอนวิธีต้องสามารถนำไปปฏิบัติจริงได้ และให้ผลลัพธ์ที่ถูกต้องในทุกครั้งที่ใช้งาน
  4. นำไปใช้แก้ปัญหาได้ (Input-Output Defined)
    ขั้นตอนวิธีควรมีการรับข้อมูลเข้า (Input) และให้ผลลัพธ์ออก (Output) ที่สอดคล้องกับวัตถุประสงค์ของการแก้ปัญหา

รูปแบบการเขียนขั้นตอนวิธี

การเขียนขั้นตอนวิธีสามารถนำเสนอได้หลายรูปแบบ ซึ่งขึ้นอยู่กับวัตถุประสงค์ในการใช้งาน ได้แก่

1. ภาษาธรรมชาติ

ใช้ภาษาไทยหรือภาษาอังกฤษธรรมดาในการลำดับขั้นตอน เช่น

โจทย์: หาผลรวมของตัวเลขสองจำนวน
ขั้นตอนวิธี:

  1. รับค่าตัวเลขจำนวนที่ 1
  2. รับค่าตัวเลขจำนวนที่ 2
  3. คำนวณผลรวม
  4. แสดงผลลัพธ์

2. รหัสลำลอง (Pseudocode)

เป็นรูปแบบการเขียนที่มีลักษณะกึ่งโค้ด กึ่งภาษาธรรมดา โดยไม่ยึดติดกับภาษาคอมพิวเตอร์ใดภาษาหนึ่ง

เริ่ม
รับค่า A และ B
ผลรวม = A + B
แสดงผลรวม
จบ

ตัวอย่าง

โจทย์: การล้างมือให้สะอาดตามหลักอนามัย
ขั้นตอนวิธี:

  1. เปิดก๊อกน้ำและทำให้มือเปียก
  2. บีบสบู่ลงบนฝ่ามือ
  3. ถูมือให้ทั่วทั้งฝ่ามือ หลังมือ ซอกนิ้ว และใต้เล็บ
  4. ล้างออกด้วยน้ำสะอาด
  5. ปิดก๊อกน้ำ
  6. เช็ดมือให้แห้งด้วยผ้าหรือกระดาษ

โจทย์: การคำนวณหาคะแนนเฉลี่ยของนักเรียน 3 วิชา
ขั้นตอนวิธี:

  1. รับคะแนนวิชาที่ 1
  2. รับคะแนนวิชาที่ 2
  3. รับคะแนนวิชาที่ 3
  4. คำนวณผลรวมของคะแนนทั้ง 3 วิชา
  5. หารผลรวมด้วย 3 เพื่อหาค่าเฉลี่ย
  6. แสดงผลลัพธ์ค่าเฉลี่ย

โจทย์: การปลดล็อกโทรศัพท์มือถือด้วยรหัสผ่าน
ขั้นตอนวิธี:

  1. กดปุ่มเปิดหน้าจอ
  2. ป้อนรหัสผ่านที่ตั้งไว้
  3. ตรวจสอบว่ารหัสผ่านถูกต้องหรือไม่
  4. ถ้าถูกต้อง ให้เข้าหน้าหลัก
  5. ถ้าผิด ให้แจ้งเตือนและกลับไปที่ข้อ 2

โจทย์: การชงกาแฟ 3 in 1
ขั้นตอนวิธี:

  1. เตรียมแก้วกาแฟ
  2. เทผงกาแฟ 3 in 1 ลงในแก้ว
  3. เติมน้ำร้อนลงในแก้ว
  4. คนให้เข้ากันผ
  5. ตรวจสอบอุณหภูมิ ถ้าร้อนเกินไปให้รอให้เย็นก่อนดื่ม

โจทย์: การเดินทางจากบ้านไปโรงเรียน
ขั้นตอนวิธี:

  1. ตื่นนอนและอาบน้ำแต่งตัว
  2. ตรวจสอบของที่ต้องนำไปโรงเรียน
  3. เดินหรือขึ้นรถไปยังป้ายรถประจำทาง
  4. รอรถโดยสารและขึ้นรถ
  5. ลงรถที่หน้าประตูโรงเรียน
  6. เดินเข้าโรงเรียนและเข้าสู่ห้องเรียน

โจทย์: การสั่งอาหารผ่านแอปพลิเคชัน
ขั้นตอนวิธี:

  1. เปิดแอปพลิเคชันส่งอาหาร
  2. ค้นหาร้านค้าที่ต้องการ
  3. เลือกเมนูอาหาร
  4. กดเพิ่มลงตะกร้า
  5. ยืนยันรายการสั่งซื้อ
  6. เลือกวิธีชำระเงิน
  7. รอรับอาหารที่บ้าน

โจทย์: การตั้งปลุกบนโทรศัพท์มือถือ
ขั้นตอนวิธี:

  1. เปิดแอปนาฬิกาบนโทรศัพท์
  2. เลือกเมนูตั้งปลุก
  3. เลือกเวลาที่ต้องการ
  4. กำหนดเสียงปลุก
  5. กดบันทึกการตั้งค่า

โจทย์: การเปิดบัญชีธนาคาร
ขั้นตอนวิธี:

  1. เตรียมบัตรประชาชนและเอกสารที่เกี่ยวข้อง
  2. เดินทางไปธนาคาร
  3. รับบัตรคิวเพื่อเปิดบัญชี
  4. รอเรียกคิวและยื่นเอกสารให้เจ้าหน้าที่
  5. กรอกแบบฟอร์มเปิดบัญชี
  6. รับสมุดบัญชีและบัตร ATM
  7. ตรวจสอบข้อมูลและกลับบ้าน

โจทย์: การล้างจานหลังรับประทานอาหาร
ขั้นตอนวิธี:

  1. เก็บจานจากโต๊ะอาหาร
  2. ล้างเศษอาหารออก
  3. ใส่น้ำยาล้างจานลงบนฟองน้ำ
  4. ถูจานให้สะอาด
  5. ล้างจานด้วยน้ำสะอาด
  6. วางจานบนชั้นตากให้แห้ง

โจทย์: การเช็กผลสอบจากเว็บไซต์โรงเรียน
ขั้นตอนวิธี:

  1. เปิดเบราว์เซอร์อินเทอร์เน็ต
  2. เข้าสู่เว็บไซต์โรงเรียน
  3. เลือกเมนู “ตรวจสอบผลการเรียน”
  4. ป้อนรหัสนักเรียนและวันเดือนปีเกิด
  5. กดปุ่ม “ค้นหา”
  6. อ่านผลการเรียนที่แสดงบนหน้าจอ

โจทย์:

จงหาค่า ห.ร.ม. ของเลข 48 และ 18 ด้วยวิธียุคลิด

หลักการของ “วิธียุคลิด”:

ถ้าเราต้องการหา ห.ร.ม. ของจำนวนเต็มสองจำนวน เช่น A และ B โดยที่ A > B
เราจะใช้สูตร:

ห.ร.ม. (A, B) = ห.ร.ม. (B, A mod B)

ทำซ้ำเรื่อย ๆ จนกระทั่งเศษ (A mod B) = 0

ค่าของ B ในรอบสุดท้ายก่อนที่เศษจะเป็น 0 คือคำตอบ

ขั้นตอนวิธี (ภาษาธรรมชาติ):

  1. รับค่าจำนวนเต็มสองจำนวน A และ B
  2. ตรวจสอบว่า B ไม่เท่ากับ 0
  3. ถ้า B ≠ 0 ให้
      3.1 คำนวณเศษ = A mod B
      3.2 กำหนดให้ A = B และ B = เศษ
      3.3 ย้อนกลับไปทำข้อ 2
  4. เมื่อ B = 0 ให้แสดงผล A เป็น ห.ร.ม.

หา ห.ร.ม. (48, 18)

รอบที่ABA mod Bค่าที่ใช้ในรอบถัดไป
1481812A = 18, B = 12
218126A = 12, B = 6
31260A = 6, B = 0

คำตอบ: ห.ร.ม. (48, 18) = 6

หา ห.ร.ม. (56, 42)

รอบที่ABA mod Bค่าที่ใช้ในรอบถัดไป
1564214A = 42, B = 14
242140A = 14, B = 0

คำตอบ: ห.ร.ม. (56, 42) = 14

หา ห.ร.ม. (99, 78)

รอบที่ABA mod Bค่าที่ใช้ในรอบถัดไป
1997821A = 78, B = 21
2782115A = 21, B = 15
321156A = 15, B = 6
41563A = 6, B = 3
5630A = 3, B = 0

คำตอบ: ห.ร.ม. (99, 78) = 3

หา ห.ร.ม. (270, 192)

รอบที่ABA mod Bค่าที่ใช้ในรอบถัดไป
127019278A = 192, B = 78
21927836A = 78, B = 36
378366A = 36, B = 6
43660A = 6, B = 0

คำตอบ: ห.ร.ม. (270, 192) = 6

หา ห.ร.ม. (121, 11)

รอบที่ABA mod Bค่าที่ใช้ในรอบถัดไป
1121110A = 11, B = 0

คำตอบ: ห.ร.ม. (121, 11) = 11

คำถามทบทวนความรู้

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

สรุป

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