Page 27 - โครงสร้างข้อมูลและขั้นตอนวิธี
P. 27
การวัดประสิทธิภาพและความซับซ้อนของขั้นตอนวิธี 2-17
ตัวอยา่ งท่ี 2.11 จงห าบ ิ๊กโอของฟังก์ชัน f(n) = 3n log(n!) + (n2 + 3)log n โดยท่ี n เป็นจ�ำนวนเต็มบ วก
วิธีท�ำ
เน่ืองจาก f(n) เป็นการบวกกันระหว่าง 3n log(n!) กับ (n2 + 3)log n สามารถแยกการพิจารณาแต่ละพจน์
ได้ดังน้ี
พิจารณา 3n log(n!) ซ่ึงเป็นการค ูณกันร ะหว่าง 3n กับ log(n!)
ดังน้ัน
หาบ ิ๊กโอส �ำหรับ 3n จากท ฤษฎีบท 2.1 ฟังก์ชันพ หุน าม จะได้ ว่า 3n = O(n) ...............(1)
หาบิ๊กโอส �ำหรับ log(n!) เนื่องจาก n! = O(nn)
น่ันค ือ n! ≤ nn
โดยก ารใช้ล อการ ิธึม (logarithm) ทั้งเมสื่อองcข ้า=งข1อแงลสะมกn0าร>จ1ะได้
log(n!) ≤ log nn
≤ n log n
ดังน ั้น log(n!) = O(n log n) ...............(2)
ซึ่งจาก (1) และ (2) จะได้ 3n log(n!) = O(n2 log n) โดยท ฤษฎีบท 2.3
พิจารณา (n2 + 3)log n ซึ่งเป็นการค ูณก ันร ะหว่าง (n2 + 3) กับ log n ...............(3)
ดังน ั้นหาบ๊ิกโอส�ำหรับ (n2 + 3) จากท ฤษฎีบท 2.1 ฟังก์ชันพ หุนาม จะได้ ว่า (n2 + 3) = O(n2)
และจากทฤษฎีบท 2.3 จะได้ว่า (n2 + 3)log n = O(n2 log n) ...............(4)
เพราะฉะนั้น จาก (3) และ (4) จะได้
f(n) = 3n log(n!) + (n2 + 3)log n เป็น O(n2 log n) ทฤษฎีบท 2.2
จากทฤษฎบี ท 2.2 และ 2.3 จะเหน็ วา่ เปน็ การรวมกนั ข องฟงั กช์ นั เพยี งสองฟงั กช์ นั เทา่ นน้ั ซงึ่ ในท �ำนองเดยี วกนั
ส�ำหรับฟ ังก์ชันที่มาก กว ่าสองฟังก์ชันข ึ้นไป สามารถหาบ ๊ิกโอได้เช่นกัน ดังท ฤษฎีบทต่อไปน ี้
ทฤษฎบี ท 2.4 กำ�หนดให้ fi(x) = O(gi(x)) เมื่อ i = 1, 2, …, n
แล้ว (f1 + f2 + … + fn)(x) = O(max(|g1(x)| , |g2(x)| ,…, |gn(x)|))
ทฤษฎบี ท 2.5 แกลำ�ห้วน(ดf1ใ⋅หf2้ ⋅f…i(x⋅)f=n)(Ox)(g=i(xO))(gเ1ม(ื่อx)⋅ig=2(1x,) 2, …, n
⋅…⋅ gn(x))
ตวั อยา่ งที่ 2.12 จงหาบ กิ๊ โอข องฟงั กช์ นั f(n) = (n + 2)n4log n + 4n log(n2) + (n5 + 3) โดยที่ n เปน็ จ�ำนวนเตม็ บ วก
วิธีท�ำ
เน่ืองจาก f(n) เป็นการบ วกกันของ (n + 2)n4log n และ 4n log(n2) และ (n5 + 3)
สามารถแ ยกก ารพิจารณาแ ต่ละพ จน์ได้ ดังต ่อไปน ้ี
พิจารณา (n + 2)n4log n ซ่ึงเป็นการคูณก ันของ (n + 2) และ n4 และ log n