Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม

Algorithm Specification - บทนำในโครงสร้างข้อมูล

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

ชุดคำสั่งที่จำกัด (Finite) ซึ่งถ้าปฏิบัติตามจะทำภารกิจเฉพาะได้ ต้องผ่านเกณฑ์ 5 ข้อ:

  1. Input: มี Input 0 หรือมากกว่า จากชุดที่กำหนด
  2. Output: มี Output 1 หรือมากกว่า เกี่ยวข้องกับ Input
  3. Definiteness: แต่ละขั้นตอนชัดเจน ไม่คลุมเครือ
  4. Finiteness: ต้องจบภายในขั้นตอนจำกัด
  5. Effectiveness: ทุก Operation ทำได้จริงในเวลาจำกัด

วิธีแสดงอัลกอริทึม

  • Natural Language: ภาษาธรรมชาติ (ไทย/อังกฤษ) - เข้าใจง่าย แต่อาจคลุมเครือ
  • Flowcharts: แผนผังไหล - เหมาะอัลกอริทึมเล็ก/เรียบง่าย
  • Pseudocode: รหัสเทียม - ใกล้โค้ดจริง ไม่ผูกภาษา ไม่มี Syntax เหนื่อย

ตัวอย่าง: อัลกอริทึมคำนวณ Factorial

Step 1: Input number n
Step 2: final ← 1
Step 3: final ← final × n
Step 4: n ← n - 1
Step 5: If n = 0 goto Step 8
Step 6: Else goto Step 3
Step 7: (Loop back)
Step 8: Print final

Recursive Algorithms (อัลกอริทึมแบบเวียนเกิด)

ฟังก์ชันเรียกตัวเอง โดยส่งค่ากลับเป็น Parameter ใหม่ Parameter = Input, Return Value = Output

หลักการ: แบ่งปัญหาใหญ่เป็น Sub-problems ลักษณะเดียวกัน ผลลัพธ์ของ Recursion หนึ่งเป็น Input ของอันถัดไป เรียกตัวเองด้วย Input ที่เล็กลงเรื่อยๆ จนถึง Base Case

ตัวอย่าง: Factorial แบบ Recursive

int factorial(int n) {
    if (n <= 1) return 1;      // Base Case
    return n * factorial(n-1); // Recursive Step
}

ตัวอย่างอื่นๆ ของ Recursive Algorithms

  • Fibonacci Series
  • Tower of Hanoi
  • Tree/Graph Traversal (DFS)
  • Quick Sort, Merge Sort

ข้อควรระวัง

  • ต้องมี Base Case ชัดเจน ไม่อาจ Infinite Recursion
  • อาจใช้ Stack Memory มาก (Stack Overflow) → พิจารณา Iterative Version
  • บางกรณีต้องใช้ Memoization/Dynamic Programming ป้องกันการคำนวณซ้ำ