Page 37 - โครงสร้างข้อมูลและขั้นตอนวิธี
P. 37
การวัดประสิทธิภาพและความซับซ้อนของขั้นตอนวิธี 2-27
การนับตัวด�ำเนินการนี้ท�ำให้สามารถท ราบค ร่าวๆ ได้ว ่าข้ันตอนวิธีน้ันจ ะท �ำงานมากน้อยหรือใช้เวลาม ากน้อยประมาณ
เท่าใดเป็นห น่วยของเวลา ให้พ ิจารณาตัวอย่างการนับต ัวด�ำเนินการด ังต ่อไปนี้ โดยค ิดว ่าแต่ละตัวด �ำเนินการใช้เวลาไป
1 หน่วยเวลาเท่าๆ กัน โดยหน่วยเวลาน้ีอาจเป็น นาที วินาที ช่ัวโมง หรือเป็นหน่วยเวลาของซีพียูก็ได้ ทั้งน้ีข้ึนอยู่กับ
การพ ิจารณาปัจจัยทางด ้านฮาร์ดแวร์แ ละอ ่ืนๆ
ตัวอย่างการนับต ัวด �ำเนินการ เช่น 2 * 3 + 5 จะมีตัวด�ำเนินก ารท้ังหมด 2 ตัว คือ คูณ (*) กับบวก (+) ดังน ้ัน
นับตัวด �ำเนินก ารท ั้งหมดได้ 2 ตัว เป็นต้น
ตวั อยา่ งท่ี 2.16 จงน ับตัวด �ำเนินก ารท ้ังหมดข อง (2 + 3) * 5 — (6 + 8)
วธิ ที �ำ
จะได้ว่ามีตัวด�ำเนินทั้งหมด 4 ตัว คือ บวก 2 ตัว ลบ 1 ตัว และค ูณ 1 ตัว
ตวั อยา่ งท ่ี 2.17 จงน ับต ัวด �ำเนินการท ้ังหมดของ a = 4 * 5 + (2 / 3) * 6
วิธีท�ำ
จะได้ว ่ามีตัวด �ำเนินท้ังหมด 5 ตัว คือ บวก 1 ตัว คูณ 2 ตัว หาร 1 ตัว และตัวด �ำเนินก ารเท่ากับอ ีก 1 ตัว
ดังน ้ัน ส�ำหรับข ั้นต อนว ิธีหนึ่งๆ พื้นฐ านก ารค ิดค ่าห น่วยเวลา สามารถพิจารณาได้ด ังนี้
1) การให้ค ่าข้อมูลกับต ัวแปร (assignment) คิดเป็น 1 หน่วยเวลา
2) การต รวจสอบเง่ือนไข (condition) คิดเป็น 1 หน่วยเวลา เช่น การตรวจสอบเง่ือนไขใน if-else
3) การป ระมวลผ ลต ัวด�ำเนินการ (operation) คิดเป็น 1 หน่วยเวลา เช่น 2 + 3
4) การประมวลผลแบบท�ำซ �้ำ (loop) คิดหน่วยเวลาตามการตรวจสอบเง่ือนไขและจ�ำนวนครั้งท่ีวนท�ำซ ้ํา
ค�ำส ่ังต่างๆ เช่น while loop และ for loop เป็นต้น
พิจารณาส ่วนข องรหัสเทียมดังต่อไปน้ี
1 a := 1
2 b := 2
3 sum := a + b
4 multiply := a * b
5 average := (a + b) / 2
จะได้ว่า
บรรทัดที่ 1 เป็นการให้ค ่าข้อมูลกับตัวแปร a คิดเป็น 1 หน่วยเวลา
บรรทัดท ่ี 2 เป็นการให้ค ่าข้อมูลก ับตัวแปร b คิดเป็น 1 หนว่ ยเวลา
บรรทัดท ี่ 3 ประกอบด้วย การประมวลผลการบวกคิดเป็น 1 หน่วยเวลา และก ารให้ผลบวกท่ีได้กับตัวแปร
sum คิดเป็นอ ีก 1 หน่วยเวลา ดังน้ัน การประมวลผ ลบรรทัดท่ี 3 ใช้เวลาเป็น 2 หน่วยเวลา
บรรทัดท ่ี 4 ประกอบด้วย การประมวลผลการคูณคิดเป็น 1 หน่วยเวลา และการให้ผลคูณท่ีได้กับตัวแปร
multiply คิดเป็นอีก 1 หน่วยเวลา ดังนั้น การประมวลผลบ รรทัดท่ี 4 ใช้เวลาเป็น 2 หน่วยเวลา