Page 42 - โครงสร้างข้อมูลและขั้นตอนวิธี
P. 42
2-32 โครงสร้างข้อมูลและขั้นตอนวิธี
ตวั อยา่ งที่ 2.20 จงหาฟังก์ชันเวลา T(n) ของโปรแกรมการหาผลรวมแบบเวียนเกิดต่อไปน้ี พร้อมท้ังประมาณบ๊ิกโอ
ของ T(n)
Procedure sum(n)
1 BEGIN
2 IF n = 0 DO
3 RETURN 0
4 ELSE
5 RETURN n + sum(n — 1)
6 END
วิธีท�ำ
บรรทัดท ่ี 2 มีก ารเปรียบเทียบเงื่อนไข คิดเป็น 1 หนว่ ยเวลา
บรรทัดท ่ี 3 ถ้าเง่ือนไขในบ รรทัดที่ 2 เป็นจริง จะมีก ารค ืนค ่า คิดเป็น 1 หน่วยเวลา
บรรทัดท ่ี 4 ถ้าเง่ือนไขในบรรทัดที่ 2 เป็นเท็จ ให้ท �ำบ รรทัดท่ี 5
บรรทัดท ี่ 5 มีก ารค ืนค ่าการป ระมวลผ ลการบวก n กับ sum(n-1) คิดเป็น 1 + T(n – 1) หน่วยเวลา
ดังน ั้น รวมท้ังหมดจ ะใช้เวลา T(n) = 1 + 1 + 1 + T(n — 1) = T(n — 1) + 3
จะเห็นว่า T(0) = 0
T(1) = T(0) + 3 = 3 = 3 × 1
T(2) = T(1) + 3 = 6 = 3 × 2
T(3) = T(2) + 3 = 9 = 3 × 3
T(4) = T(3) + 3 = 12 = 3 × 4
…
ดังน้ัน T(n) = 3 × n = 3n = O(n)
ตวั อย่างที่ 2.21 จงห าฟ ังก์ชันเวลา T(n) และประม าณบ ๊ิกโอข องส่วนของโปรแกรมต่อไปนี้
FOR i := 1 to n DO
FOR j := 1 to i DO
Sum := Sum + 1
วธิ ที �ำ
ส่วนข องโปรแกรมน้ี เป็นการท �ำลูป for ซ้อนใน 2 ลูป
การป ระมวลผ ลส ่วนในส ุดข องลูป for ซ้อนก ัน คือ Sum := Sum + 1 ซ่ึงมีการด�ำเนินการท้ังหมด 2 อย่าง คือ
การบวกแ ละการให้ค ่า คิดเป็น 2 หน่วยเวลา
ดังน ั้น จากลูป for ซ้อนใน จะได้การประมวลผ ลทั้งหมด คิดเป็น n i 2 หน่วยเวลา
iΣ=1 jΣ=1