Asymptotic Analysis คืออะไร?
การวิเคราะห์渐近 (Asymptotic Analysis) ช่วยให้เราเข้าใจประสิทธิภาพของอัลกอริทึมจากขนาดอินพุต (Input Size) เราไม่คำนวณเวลาทำงานที่แน่นอน แต่หาความสัมพันธ์ระหว่างเวลาทำงานกับขนาดอินพุต และติดตามว่าเวลาทำงานเปลี่ยนแปลงอย่างไรเมื่อขนาดอินพุตเพิ่มขึ้น
สำหรับ Space Complexity เป้าหมายคือหาความสัมพันธ์หรือฟังก์ชันว่าหน่วยความจำหลักใช้พื้นที่เท่าไหร่ในการทำอัลกอริทึมให้เสร็จ
Asymptotic Behavior (พฤติกรรม渐近)
สำหรับฟังก์ชัน f(n) พฤติกรรม渐近คือการเติบโตของ f(n) เมื่อ n ใหญ่ขึ้น ค่าอินพุตเล็กๆ ไม่ได้ถูกพิจารณา ภารกิจคือหาว่าจะใช้เวลาเท่าไหร่สำหรับค่าอินพุตขนาดใหญ่
ตัวอย่าง:
- f(n) = c·n + k → Linear Time Complexity (เวลาเชิงเส้น)
- f(n) = c·(n²) + k → Quadratic Time Complexity (เวลาเชิงกำลังสอง)
การวิเคราะห์อัลกอริทึมแบ่งได้ 3 กรณีหลัก:
- Best Case (กรณีที่ดีที่สุด): คำนวณขอบเขตล่างของเวลาทำงาน อธิบายพฤติกรรมภายใต้เงื่อนไขที่เหมาะสมที่สุด
- Average Case (กรณีเฉลี่ย): คำนวณพื้นที่ระหว่างขอบเขตบนและล่าง จำนวนการดำเนินการไม่ต่ำสุดและไม่สูงสุด
- Worst Case (กรณีที่แย่ที่สุด): คำนวณขอบเขตบนของเวลาทำงาน จำนวนการดำเนินการสูงสุด
