Page 39 - โครงสร้างข้อมูลและขั้นตอนวิธี
P. 39

การวัดประสิทธิภาพและความซับซ้อนของขั้นตอนวิธี 2-29

       จาก​ตัวอย่าง​ท่ี 2.18 นี้ จะ​เห็น​ว่า ขั้น​ตอน​วิธี​น้ี​ใช้​เวลา​เป็น​ฟังก์ชัน T(n) ท่ี​ข้ึน​อยู่​กับ​ขนาด​ของ​ข้อมูล n เป็น
T(n) = 6n + 4 ถ้า​ใช้​ความ​รู้​เร่ือง​การ​เติบโต​ของ​ฟังก์ชัน​ที่​ได้​ศึกษา​ผ่าน​มา​แล้ว จะ​สามารถ​ประ​มาณ​บิ๊ก​โอ​ของ T(n) น​ี้
ไดว​้ า่ ​เปน็ O(n) ซง่ึ ห​ มายความ​วา่ ขน้ั ต​ อน​วธิ ​นี ​จ้ี ะม​ ก​ี าร​เตบิ โต​ของเ​วลาท​ ​ใี่ ชใ​้ น​การ​ประมวลผ​ ล​นอ้ ย​กวา่ ห​ รอื เ​ทา่ กบั อ​ นั ดบั n

       การ​วิเคราะห์​โปรแกรม​ด้วย​การ​นับ​จ�ำนวน​ตัว​ด�ำเนิน​การ​อย่าง​ละเอียด​แบบ​นี้ ใน​บาง​ข้ัน​ตอน​วิธี​ท่ี​มี​ความ
ซ​ ับซ​ ้อนแ​ ละม​ ีการท​ �ำงานห​ ลายข​ ั้นต​ อนม​ าก อาจท​ �ำให้ก​ าร​นับ​แบบน​ ี้​เป็นไ​ปไ​ม่ไ​ด้ แต่​ถ้าพ​ ิจารณาใ​ห้ค​ �ำต​ อบอ​ ยู่ใ​น​รูป​ของ​
บกิ๊ ​โอ สามารถใ​ช้เ​ทคนิค​ลดั ​มากมายใ​น​การ​หาบ​ ๊ิกโ​อไ​ด​โ้ ดยท่ีไ​ม่มผ​ี ลกร​ ะท​ บต​ อ่ ​ค�ำต​ อบ​ท​ต่ี อ้ งการ เชน่ ในต​ วั อยา่ ง​ที่ 2.18 
เห็น​ได้​ชัด​ว่า​บรรทัด​ท่ี 5 เป็น O(1) ต่อ​การ​ประมวล​หนึ่ง​คร้ัง จึง​ไม่​จ�ำเป็น​ต้อง​นับ​ค่าที่​แน่นอน​ว่า​มี​การ​ประมวลผล​
กี่ห​ น่วย​เวลา (2 3 หรือ 4 หน่วย​เวลา) และบ​ รรทัด​ท่ี 2 และ 7 เป็น​บรรทัด​ที่​ไม่ส​ �ำคัญใ​นเ​ร่ือง​ของ​เวลา​เลยเ​ม่ือเ​ทียบ​กับ​
การ​ประม​ วลผ​ ลลูป for ใน​บรรทัด​ที่ 3 ดังน​ ั้น สามารถล​ ะ​การ​พิจารณา​ในส​ ่วน​เหล่าน​ ้ี​ได้ และพ​ ิจารณาเ​ฉพาะ​บรรทัด​ที่ 3
ซ่ึง​เป็นล​ ูป for จะ​ได้ T(n) = O(n) เช่น​กัน

2. 	กฎ​ในก​ ารว​ ิเคราะห​์ขนั้ ​ตอน​วธิ เ​ี พอ่ื ป​ ระ​มาณบ​ กิ๊ โ​อ

       กฎ​ขอ้ ท​ ี่ 1 การ​วิเ​คราะหล​์ ูป for
       เวลา​ท่ี​ใช้​ใน​การ​ประมวล​ผล​ของ​ลูป for หน่ึงๆ คือ เวลา​ท่ี​ใช้​ประมวล​ผล​ค�ำส​ ั่ง​หรือ​ตัว​ด�ำเนิน​การ​ท้ังหมด​ท่ี​อยู​่
ในลูป for (รวม​ถึง​การ​ตรวจ​สอบ​และ​เปรียบ​เทียบ) คูณ​กับ​จ�ำนวน​คร้ัง​ท้ังหมด​ท่ี​ต้อง​วน​ท�ำ​ซ้�ำ เช่น ส่วน​ของ​
การ​ประมวลผล​ต่อ​ไป​น้ี ใช้เ​วลาใ​นก​ าร​ประมวล​ผล​เป็น O(n)

                                      sum := 0
                                      FOR i := 0 to n DO
                                      BEGIN
                                      	 sum := sum + i
                                      END

       กฎ​ข้อ​ท่ี 2 การ​วิเ​คราะห์​ลูป for ซ้อน​ใน
       ลูป for ซ้อน​ใน (nested for-loop) คือ ลูป for ท่ี​ซ้อนๆ กัน​หลายๆ ลูป ให้​วิเคราะห์​เข้า​ไป​ทุกๆ ลูป​ภายใน
เวลา​ท่ี​ใช้​ประมวล​ผล​ท้ัง​หมด​ของ​ลูป​ซ้อน เป็น​เวลา​ท่ี​ใช้​ประมวล​ผล​ของ​ค�ำส​ ั่ง​ท้ังหมด​คูณ​กับ​ผล​คูณ​ของ​ขนาด​ของ
ล​ ูป​ทุ​กลูป เช่น การ​ประมวลผ​ ลย​ ่อย​ต่อไ​ปน​ ี้ ใช้เ​วลาใ​น​การป​ ระมวลผ​ ล​ในร​ ะดับ O(n2)

                                    FOR i := 0 to n DO
                                    BEGIN
                                    	 FOR j := 0 to n DO
                                    	BEGIN
                                    	 	 k := k + 1
                                    	 END
                                    END

หมายเหต:ุ   การว​ ิเ​คราะห์ล​ ูป while สามารถพ​ ิจารณา​ได้​ในแ​ บบเ​ดียวกัน​กับก​ าร​วิ​เคราะห์ล​ ูป for
   34   35   36   37   38   39   40   41   42   43   44