ฉันสับสนจริง ๆ เกี่ยวกับความแตกต่างระหว่างบิ๊กโอโอเมก้าใหญ่และสัญกรณ์ทีใหญ่
ฉันเข้าใจว่าใหญ่ O เป็นขอบเขตบนและใหญ่โอเมก้าเป็นขอบเขตล่าง แต่สิ่งที่ใหญ่Ө (theta) หมายถึงอะไร
ฉันได้อ่านแล้วว่ามันหมายถึงขอบเขตที่ จำกัดแต่นั่นหมายความว่าอย่างไร
ฉันสับสนจริง ๆ เกี่ยวกับความแตกต่างระหว่างบิ๊กโอโอเมก้าใหญ่และสัญกรณ์ทีใหญ่
ฉันเข้าใจว่าใหญ่ O เป็นขอบเขตบนและใหญ่โอเมก้าเป็นขอบเขตล่าง แต่สิ่งที่ใหญ่Ө (theta) หมายถึงอะไร
ฉันได้อ่านแล้วว่ามันหมายถึงขอบเขตที่ จำกัดแต่นั่นหมายความว่าอย่างไร
คำตอบ:
หมายความว่าอัลกอริธึมเป็นทั้งบิ๊กโอและโอเมก้าใหญ่ในฟังก์ชั่นที่กำหนด
ตัวอย่างเช่นถ้าเป็นӨ(n)
เช่นนั้นจะมีค่าคงที่บางอย่างk
เช่นฟังก์ชันของคุณ (เวลาทำงานอะไรก็ตาม) มีขนาดใหญ่กว่าn*k
ขนาดใหญ่เพียงพอn
และค่าคงที่อื่น ๆK
ที่ฟังก์ชันของคุณมีขนาดเล็กกว่าn*K
ขนาดใหญ่พอสมควรn
ขนาดใหญ่พอสมควร
ในคำอื่น ๆ สำหรับขนาดใหญ่พอ n
มันคั่นกลางระหว่างสองฟังก์ชันเชิงเส้น:
สำหรับk < K
และn
ใหญ่พอn*k < f(n) < n*K
ก่อนอื่นเรามาทำความเข้าใจว่าโอใหญ่เทต้าและโอเมก้าใหญ่คืออะไร พวกมันคือชุดของฟังก์ชั่นทั้งหมด
Big O ให้ขอบเขตของซีมโทติคขณะที่โอเมก้าขนาดใหญ่ให้ขอบเขตที่ต่ำกว่า Big Theta ให้ทั้งคู่
ทุกอย่างที่เป็นӨ(f(n))
ด้วยO(f(n))
แต่ไม่ใช่วิธีอื่น ๆ
T(n)
มีการกล่าวถึงอยู่ในӨ(f(n))
ถ้ามันเป็นทั้งในและO(f(n))
ในชุดคำศัพท์คือจุดตัดของและOmega(f(n))
Ө(f(n))
O(f(n))
Omega(f(n))
ตัวอย่างเช่นการเรียงลำดับกรณีที่เลวร้ายที่สุดคือทั้งO(n*log(n))
และOmega(n*log(n))
- และเช่นӨ(n*log(n))
กัน แต่ก็เป็นเช่นO(n^2)
นั้นเพราะn^2
มันเป็น "ใหญ่" มากกว่าแบบไม่มีสัญญาณ อย่างไรก็ตามมันไม่ได้ เป็นӨ(n^2)
เพราะอัลกอริทึมไม่ได้เป็นOmega(n^2)
ตั้งแต่ขั้นตอนวิธีการที่ไม่ได้เป็น
O(n)
เป็นขอบเขตบนเชิงเส้นกำกับ ถ้าT(n)
เป็นO(f(n))
ก็หมายความว่าจากบางอย่างn0
มีค่าคงที่ดังกล่าวว่าC
T(n) <= C * f(n)
ใหญ่ - โอเมก้าบอกว่ามีค่าคงที่C2
เช่นนั้นT(n) >= C2 * f(n))
)
เพื่อไม่ให้สับสนกับการวิเคราะห์เคสที่แย่ที่สุดดีที่สุดและโดยเฉลี่ย: สัญกรณ์ทั้งสาม (Omega, O, Theta) ไม่เกี่ยวข้องกับการวิเคราะห์อัลกอริธึมที่ดีที่สุดเลวร้ายที่สุดและโดยเฉลี่ย แต่ละอันสามารถนำไปใช้กับการวิเคราะห์แต่ละครั้งได้
เรามักจะใช้มันเพื่อวิเคราะห์ความซับซ้อนของอัลกอริทึม (เช่นตัวอย่างการเรียงผสานข้างบน) เมื่อเราพูดว่า "อัลกอริทึม A คือO(f(n))
" สิ่งที่เราหมายถึงจริงๆคือ "ความซับซ้อนของอัลกอริทึมภายใต้การวิเคราะห์1กรณีที่แย่ที่สุดคือO(f(n))
" - ความหมาย - มันปรับขนาด "คล้ายกัน" (หรือเป็นทางการf(n)
ฟังก์ชั่น
มีเหตุผลหลายประการ แต่ฉันเชื่อว่าสิ่งที่สำคัญที่สุดคือ:
เพื่อสาธิตปัญหานี้ให้ดูกราฟต่อไปนี้:
เป็นที่ชัดเจนว่าf(n) = 2*n
เป็น "เลว" f(n) = n
กว่า แต่ความแตกต่างนั้นไม่รุนแรงเท่าที่ควรจากฟังก์ชั่นอื่น เราจะเห็นได้ว่าf(n)=logn
การลดลงอย่างรวดเร็วกว่าฟังก์ชั่นอื่น ๆ และf(n) = n^2
การเพิ่มขึ้นอย่างรวดเร็วกว่าฟังก์ชั่นอื่น ๆ
ดังนั้น - ด้วยเหตุผลข้างต้นเรา "เพิกเฉย" ปัจจัยคงที่ (2 * ในตัวอย่างกราฟ) และรับเฉพาะเครื่องหมายบิ๊กโอ
ในตัวอย่างข้างต้นf(n)=n, f(n)=2*n
ทั้งสองจะอยู่ในO(n)
และOmega(n)
- Theta(n)
และยังจะอยู่ใน
บนมืออื่น ๆ - f(n)=logn
จะอยู่ในO(n)
(มันคือ "ดี" กว่าf(n)=n
) แต่จะไม่อยู่ในOmega(n)
- Theta(n)
จึงจะยังไม่อยู่ใน
Symetrically, f(n)=n^2
จะอยู่ในOmega(n)
แต่ไม่ได้อยู่ในO(n)
และทำให้ - Theta(n)
ยังไม่ได้
1โดยปกติแม้ว่าจะไม่เสมอไป เมื่อระดับการวิเคราะห์ (แย่ที่สุดปานกลางและดีที่สุด) หายไปเราหมายถึงกรณีที่เลวร้ายที่สุด
f(n) = n^2
มีความแข็งแกร่งเชิง asymptotically n
ดังนั้น Omega (n) จึงเป็นเช่นนั้น อย่างไรก็ตามมันไม่ใช่ O (n) (เพราะสำหรับn
ค่าขนาดใหญ่มันก็จะใหญ่กว่าc*n
สำหรับทั้งหมดn
) เนื่องจากเราบอกว่า Theta (n) เป็นจุดตัดของ O (n) และ Omega (n) เนื่องจากไม่ใช่ O (n) จึงไม่สามารถเป็น Theta (n) ได้เช่นกัน
T_best(n), T_worst(n), T_average(n)
คุณมีฟังก์ชั่นความซับซ้อน พวกเขาไม่จำเป็นต้องเหมือนกัน (และส่วนใหญ่พวกเขาไม่ได้) O / Omega / Theta สามารถใช้ได้กับสิ่งเหล่านี้อย่างอิสระ
ที (n):ฟังก์ชั่นf(n)
เป็นTheta(g(n))
, ถ้ามีค่าคงที่บวกc1
และc2
เช่นว่าf(n)
สามารถคั่นกลางระหว่างและc1(g(n))
c2(g(n))
เช่นมันให้ทั้งบนและเช่นเดียวกับขอบเขตล่าง
Theta (g (n)) = {f (n): มีค่าคงที่บวก c1, c2 และ n1 เช่นนั้น 0 <= c1 (g (n)) <= f (n) <= c2 (g (n)) สำหรับ n> = n1}
เมื่อเราพูดf(n)=c2(g(n))
หรือf(n)=c1(g(n))
มันหมายถึงขอบเขตที่แน่น asymptotically
O (n):มันให้ขอบเขตบนเท่านั้น (อาจหรือไม่แน่น)
O (g (n)) = {f (n): มีค่าคงที่เป็นบวก c และ n1 เช่นนั้น 0 <= f (n) <= cg (n) สำหรับ n ทั้งหมด> n =}
ตัวอย่าง : ขอบเขต2*(n^2) = O(n^2)
มีความตึงเชิงเส้นกำกับในขณะที่ขอบเขต2*n = O(n^2)
ไม่แน่นเชิงเส้นกำกับ
o (n):มันให้ขอบเขตบนเท่านั้น (ไม่ จำกัด ขอบเขต)
ความแตกต่างที่โดดเด่นระหว่าง O (n) & o (n) คือ f (n) น้อยกว่า cg (n) สำหรับ n> = n1 ทั้งหมด แต่ไม่เท่ากันใน O (n)
เช่น : 2*n = o(n^2)
แต่2*(n^2) != o(n^2)
ฉันหวังว่านี่คือสิ่งที่คุณอาจต้องการค้นหาในCLRSแบบคลาสสิก(หน้า 66):
ไม่มีอะไรที่จะทำให้เสียเพื่อน!
ถ้าเรามีฟังก์ชั่นที่มีค่าเป็นบวก f (n) และ g (n) รับอาร์กิวเมนต์ที่มีค่าเป็นบวก n ดังนั้น ϴ (g (n)) หมายถึง {f (n): มีค่าคงที่ c1, c2 และ n1 สำหรับ n ทั้งหมด> = n1}
โดยที่ c1 g (n) <= f (n) <= c2 g (n)
c1 = 5 และ c2 = 8 และ n1 = 1
ในบรรดาสัญกรณ์ทั้งหมดสัญกร gives ให้สัญชาตญาณที่ดีที่สุดเกี่ยวกับอัตราการเติบโตของฟังก์ชั่นเพราะมันทำให้เรามีขอบเขตที่แน่นไม่เหมือนบิ๊กโอและโอเมก้าใหญ่ซึ่งให้ขอบเขตบนและล่างตามลำดับ
ϴ บอกเราว่า g (n) ใกล้เคียงกับ f (n) อัตราการเติบโตของ g (n) ใกล้เคียงกับอัตราการเติบโตของ f (n) มากที่สุด
ครั้งแรกของทฤษฎีทั้งหมด
Big O = ขีด จำกัด บน O (n)
Theta = ฟังก์ชั่นการสั่งซื้อ - theta (n)
Omega = Q-Notation (ขีด จำกัด ล่าง) Q (n)
ในบล็อกและหนังสือหลายเล่มการเน้นย้ำว่าคำชี้แจงนี้เป็นอย่างไร
"นี่คือบิ๊กโอ (n ^ 3)" เป็นต้น
และคนมักจะสับสนเช่นสภาพอากาศ
O (n) == theta (n) == Q (n)
แต่สิ่งที่ควรคำนึงถึงคือมันเป็นเพียงฟังก์ชั่นทางคณิตศาสตร์ที่มีชื่อ O, Theta & Omega
ดังนั้นพวกเขาจึงมีสูตรทั่วไปของพหุนามเดียวกัน
ปล่อย,
f (n) = 2n4 + 100n2 + 10n + 50 ตอนนั้น
g (n) = n4, ดังนั้น g (n) คือฟังก์ชั่นที่รับฟังก์ชั่นเป็นอินพุตและส่งกลับตัวแปรที่มี Biggerst Power,
เดียวกัน f (n) & g (n) สำหรับคำอธิบายด้านล่างทั้งหมด
Big O (n4) = 3n4 เพราะ 3n4> 2n4
3n4 คือค่าของ Big O (n4) เช่นเดียวกับ f (x) = 3x
n4กำลังเล่นบทบาทของxที่นี่ดังนั้น
แทนที่ n4 ด้วย x'so, Big O (x ') = 2x', ตอนนี้เราทั้งคู่มีความสุขแนวคิดทั่วไปคือ
ดังนั้น 0 ≤ f (n) ≤ O (x ')
O (x ') = cg (n) = 3n4
ใส่ค่า
0 ≤ 2n4 + 100n2 + 10n + 50 ≤ 3n4
3n4 เป็น Upper Bound ของเรา
Theta (n4) = cg (n) = 2n4 เพราะ 2n4 ≤ตัวอย่างของเรา f (n)
2n4 คือค่าของ Theta (n4)
ดังนั้น 0 ≤ cg (n) ≤ f (n)
0 ≤ 2n4 ≤ 2n4 + 100n2 + 10n + 50
2n4 คือขอบเขตล่างของเรา
สิ่งนี้ถูกคำนวณเพื่อค้นหาว่าสภาพอากาศที่ถูกผูกไว้ต่ำกว่านั้นคล้ายกับขอบเขตบน
กรณีที่ 1) Upper Bound คล้ายกับ Lower Bound
if Upper Bound is Similar to Lower Bound, The Average Case is Similar
Example, 2n4 ≤ f(x) ≤ 2n4,
Then Omega(n) = 2n4
กรณีที่ 2) ถ้า Upper Bound ไม่คล้ายกับ Lower Bound
in this case, Omega(n) is Not fixed but Omega(n) is the set of functions with the same order of growth as g(n).
Example 2n4 ≤ f(x) ≤ 3n4, This is Our Default Case,
Then, Omega(n) = c'n4, is a set of functions with 2 ≤ c' ≤ 3
หวังว่าสิ่งนี้จะอธิบาย !!