วันพุธที่ 7 พฤษภาคม พ.ศ. 2557

การวิเคราะห์ประสิทธิภาพของ Algorithm

การวิเคราะห์ประสิทธิภาพของ Algorithm ทั้งในด้านเวลาประมวลผลและพื้นที่หน่วยความจำ

หลักๆจะมี Big-O, Big-Theta, Big-Omega

ซึ่งจะแบ่งได้เป็น 7 คลาสหลักๆคือ

1) log n
2) n
3) n log n
4) n^2
5) n^3
6) x^n
7) n!



(คลาสคร่าวๆผิดถูกอย่างไรขออภัยไว้ด้วยครับ)
โดยที่ n คือจำนวน Input

และผลลัพธ์ของคลาสคือ จำนวนครั้งของ Basic Operation หรือจำนวนพื้นที่หน่วยความจำที่ถูกใช้

โดยที่ Big-O สัญลักษณ์คือ O เป็นขอบบนของจำนวนครั้งของ basic operation

เช่น O(n) หมายถึง Algorithm ของคุณใช้เวลารันหรือใช้พื้นที่หน่วยความจำไม่เกิน n

ส่วน Big-Theta สัญลักษณ์คือ Θ เป็นจำนวนครั้งของ basic operation

เช่น Θ(n^2) หมายถึง Algorithm ของคุณใช้เวลารันหรือใช้พื้นที่หน่วยความจำเท่ากับ n^2

และ Big-Omega สัญลักษณ์คือ Ω เป็นขอบล่างของจำนวนครั้งของ basic operation

เช่น Ω(n!) หมายถึง Algorithm ของคุณใช้เวลารันหรือใช้พื้นที่หน่วยความจำไม่น้อยกว่า n!

แถมอีกนิด Little-o สัญลักษณ์คือ o จะคล้ายๆกับ Big-O เรียกว่าเหมือนเลยก็ได้แต่ชัดเจนกว่าเพราะตัดเท่ากับออกไป

เช่น o(n^2) หมายถึง Algorithm ของคุณใช้เวลารันหรือใช้พื้นที่หน่วยความจำน้อยกว่า n^2

อีกหน่อยๆ Little-Omega สัญลักษณ์คือ ω ชัดเจนกว่า Big-Omega ในลักษณะคล้ายๆกับ Big-O และ Little-o โดยตัดเท่ากับออกไป

เช่น ω(n) หมายถึง Algorithm ของคุณใช้เวลารันหรือใช้พื้นที่หน่วยความจำมากกว่า n

ความสัมพันธ์ของ O Θ และ Ω จะเป็นประมาณว่า Θ เป็นเส้นกลาง O เป็นเส้นบนและ Ω เป็นเส้นล่าง ดังรูปข้างล่าง

ไม่มีความคิดเห็น:

แสดงความคิดเห็น