สัญลักษณ์ขนาดใหญ่หมายถึงอะไร


179

ฉันสับสนจริง ๆ เกี่ยวกับความแตกต่างระหว่างบิ๊กโอโอเมก้าใหญ่และสัญกรณ์ทีใหญ่

ฉันเข้าใจว่าใหญ่ O เป็นขอบเขตบนและใหญ่โอเมก้าเป็นขอบเขตล่าง แต่สิ่งที่ใหญ่Ө (theta) หมายถึงอะไร

ฉันได้อ่านแล้วว่ามันหมายถึงขอบเขตที่ จำกัดแต่นั่นหมายความว่าอย่างไร


คำตอบ:


93

หมายความว่าอัลกอริธึมเป็นทั้งบิ๊กโอและโอเมก้าใหญ่ในฟังก์ชั่นที่กำหนด

ตัวอย่างเช่นถ้าเป็นӨ(n)เช่นนั้นจะมีค่าคงที่บางอย่างkเช่นฟังก์ชันของคุณ (เวลาทำงานอะไรก็ตาม) มีขนาดใหญ่กว่าn*kขนาดใหญ่เพียงพอnและค่าคงที่อื่น ๆKที่ฟังก์ชันของคุณมีขนาดเล็กกว่าn*Kขนาดใหญ่พอสมควรnขนาดใหญ่พอสมควร

ในคำอื่น ๆ สำหรับขนาดใหญ่พอ nมันคั่นกลางระหว่างสองฟังก์ชันเชิงเส้น:

สำหรับk < Kและnใหญ่พอn*k < f(n) < n*K


ไม่เช่นนั้นตัวแปรเหล่านี้ค่อนข้างสับสนและไม่เกี่ยวข้อง
Aaron Robeson

@committedandroider ไม่พวกมันเป็นตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ต่างกันเขาใช้รูปแบบทางคณิตศาสตร์ทั่วไปโดยที่ตัวแปรสองตัวที่คล้ายกัน (แต่ไม่เกี่ยวข้องในทางใดทางหนึ่ง) ใช้ตัวพิมพ์ใหญ่และตัวเล็ก
Santropedro

329

ก่อนอื่นเรามาทำความเข้าใจว่าโอใหญ่เทต้าและโอเมก้าใหญ่คืออะไร พวกมันคือชุดของฟังก์ชั่นทั้งหมด

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)ฟังก์ชั่น

ทำไมเราสนใจอัลกอริธึมของซีมโทติค?

มีเหตุผลหลายประการ แต่ฉันเชื่อว่าสิ่งที่สำคัญที่สุดคือ:

  1. มันยากกว่ามากในการพิจารณาฟังก์ชันความซับซ้อนที่แน่นอนดังนั้นเราจึง "ประนีประนอม" กับสัญลักษณ์ big-O / big-Theta ซึ่งมีข้อมูลเพียงพอในทางทฤษฎี
  2. จำนวนที่แน่นอนของ ops นั้นขึ้นอยู่กับแพลตฟอร์มด้วย ตัวอย่างเช่นถ้าเรามีเวกเตอร์ (รายการ) จำนวน 16 ตัว มันจะใช้เวลาเท่าไร? คำตอบคือ: มันขึ้นอยู่กับ ซีพียูบางตัวอนุญาตให้เพิ่มเวกเตอร์ได้ในขณะที่บางตัวไม่ตอบดังนั้นการตอบสนองที่แตกต่างกันระหว่างการนำไปใช้งานที่แตกต่างกันและเครื่องจักรที่แตกต่างกันซึ่งเป็นคุณสมบัติที่ไม่ต้องการ สัญกรณ์ใหญ่ -O อย่างไรก็ตามเป็นค่าคงที่มากขึ้นระหว่างเครื่องและการใช้งาน

เพื่อสาธิตปัญหานี้ให้ดูกราฟต่อไปนี้: ป้อนคำอธิบายรูปภาพที่นี่

เป็นที่ชัดเจนว่า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โดยปกติแม้ว่าจะไม่เสมอไป เมื่อระดับการวิเคราะห์ (แย่ที่สุดปานกลางและดีที่สุด) หายไปเราหมายถึงกรณีที่เลวร้ายที่สุด


4
@krishnaChandra: f(n) = n^2มีความแข็งแกร่งเชิง asymptotically nดังนั้น Omega (n) จึงเป็นเช่นนั้น อย่างไรก็ตามมันไม่ใช่ O (n) (เพราะสำหรับnค่าขนาดใหญ่มันก็จะใหญ่กว่าc*nสำหรับทั้งหมดn) เนื่องจากเราบอกว่า Theta (n) เป็นจุดตัดของ O (n) และ Omega (n) เนื่องจากไม่ใช่ O (n) จึงไม่สามารถเป็น Theta (n) ได้เช่นกัน
amit

8
เป็นเรื่องที่ดีมากที่ได้เห็นบางคนอธิบายว่าสัญกรณ์ใหญ่ ๆ นั้นไม่เกี่ยวข้องกับเวลาที่ดีที่สุด / แย่ที่สุดของอัลกอริทึม มีเว็บไซต์มากมายที่เกิดขึ้นเมื่อฉัน google หัวข้อที่บอกว่า O (T (n)) หมายถึงเวลาที่แย่กว่านั้นคือ
Will ซีเวลล์

1
@almel มันเป็น 2 * n (2n, สองครั้ง n) ไม่ใช่ 2 ^ n
amit

5
@VishalK 1. Big O เป็นขอบเขตบนเนื่องจากnมีแนวโน้มที่จะไม่มีที่สิ้นสุด 2. โอเมก้าเป็นที่ต่ำกว่าผูกพันเป็นnมีแนวโน้มที่จะอินฟินิตี้ 3. Theta เป็นทั้งขอบเขตบนและล่างเนื่องจากnมีแนวโน้มที่จะไม่มีที่สิ้นสุด โปรดทราบว่าขอบเขตทั้งหมดจะถูกต้องเท่านั้น "ตามที่nมีแนวโน้มที่จะไม่มีที่สิ้นสุด" เพราะขอบเขตไม่ถือเป็นค่าที่ต่ำของn (น้อยกว่าn0 ) ขอบเขตเก็บไว้สำหรับnn0ทั้งหมด แต่ไม่ต่ำกว่าn0ซึ่งเงื่อนไขการสั่งซื้อที่ต่ำกว่ากลายเป็นที่โดดเด่น
bain

1
@hey_you อ่านคำตอบอีกครั้ง ใหญ่ O, Theta, Omega สำหรับฟังก์ชั่นไม่ใช่อัลกอริทึม การเรียงลำดับการผสานเป็นกรณีที่แย่ที่สุดของโอเมก้า (n) เป็นกรณีที่ดีที่สุด O (n ^ 2) เป็นกรณีที่แย่ที่สุดของ Theta (nlogn) โดยทั่วไปสำหรับแต่ละวิเคราะห์ (ที่เลวร้ายที่สุด / ดี / เฉลี่ย / ... ) T_best(n), T_worst(n), T_average(n)คุณมีฟังก์ชั่นความซับซ้อน พวกเขาไม่จำเป็นต้องเหมือนกัน (และส่วนใหญ่พวกเขาไม่ได้) O / Omega / Theta สามารถใช้ได้กับสิ่งเหล่านี้อย่างอิสระ
amit

14

ที (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)


1
คุณไม่ได้พูดถึงโอเมก้าขนาดใหญ่ซึ่งหมายถึงขอบเขตล่าง มิฉะนั้นคำตอบแรกที่ดีมากและยินดีต้อนรับ!
bohney

1
ฉันชอบวิธีที่เขานิยามนิยามของ Theta (n) upvoted!
user720694


1

สัญกรณ์ Theta ใหญ่:

ไม่มีอะไรที่จะทำให้เสียเพื่อน!

ถ้าเรามีฟังก์ชั่นที่มีค่าเป็นบวก f (n) และ g (n) รับอาร์กิวเมนต์ที่มีค่าเป็นบวก n ดังนั้น ϴ (g (n)) หมายถึง {f (n): มีค่าคงที่ c1, c2 และ n1 สำหรับ n ทั้งหมด> = n1}

โดยที่ c1 g (n) <= f (n) <= c2 g (n)

ลองมาตัวอย่าง:

ให้ f (n) =

กรัม (n) =

c1 = 5 และ c2 = 8 และ n1 = 1

ในบรรดาสัญกรณ์ทั้งหมดสัญกร gives ให้สัญชาตญาณที่ดีที่สุดเกี่ยวกับอัตราการเติบโตของฟังก์ชั่นเพราะมันทำให้เรามีขอบเขตที่แน่นไม่เหมือนบิ๊กโอและโอเมก้าใหญ่ซึ่งให้ขอบเขตบนและล่างตามลำดับ

ϴ บอกเราว่า g (n) ใกล้เคียงกับ f (n) อัตราการเติบโตของ g (n) ใกล้เคียงกับอัตราการเติบโตของ f (n) มากที่สุด

ดูภาพเพื่อรับปรีชาที่ดีขึ้น


0

ครั้งแรกของทฤษฎีทั้งหมด

  1. Big O = ขีด จำกัด บน O (n)

  2. Theta = ฟังก์ชั่นการสั่งซื้อ - theta (n)

  3. 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 - ฟังก์ชั่น (มอบข้อ จำกัด ด้านบน)

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 (n) ให้ขอบเขตที่ต่ำกว่า

Theta (n4) = cg (n) = 2n4 เพราะ 2n4 ≤ตัวอย่างของเรา f (n)

2n4 คือค่าของ Theta (n4)

ดังนั้น 0 ≤ cg (n) ≤ f (n)

0 ≤ 2n4 ≤ 2n4 + 100n2 + 10n + 50

2n4 คือขอบเขตล่างของเรา

Omega n - ฟังก์ชั่นสั่งซื้อ

สิ่งนี้ถูกคำนวณเพื่อค้นหาว่าสภาพอากาศที่ถูกผูกไว้ต่ำกว่านั้นคล้ายกับขอบเขตบน

กรณีที่ 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

หวังว่าสิ่งนี้จะอธิบาย !!

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.