वास्तव में बड़ा ation अंकन क्या दर्शाता है?


179

मैं वास्तव में बड़े ओ, बड़े ओमेगा और बड़े थेटा संकेतन के बीच के मतभेदों के बारे में उलझन में हूं।

मैं समझता हूं कि बड़ा ओ ऊपरी बाध्य है और बड़ा ओमेगा निचली सीमा है, लेकिन वास्तव में बड़ा Ө (थीटा) क्या दर्शाता है?

मैंने पढ़ा है कि इसका मतलब तंग बाउंड है , लेकिन इसका क्या मतलब है?


जवाबों:


93

इसका अर्थ है कि दिए गए फ़ंक्शन में एल्गोरिथ्म बड़ा-ओ और बड़ा-ओमेगा दोनों है।

उदाहरण के लिए, यदि यह है Ө(n), तो कुछ स्थिर है k, जैसे कि आपका फ़ंक्शन (रन-टाइम, जो भी हो), n*kपर्याप्त रूप से बड़े के लिए बड़ा है n, और कुछ अन्य निरंतर Kऐसा है कि आपका फ़ंक्शन n*Kपर्याप्त रूप से बड़े के लिए छोटा है n

दूसरे शब्दों में, पर्याप्त रूप से बड़े के लिए n, यह दो रैखिक कार्यों के बीच सैंडविच है:

के लिए k < Kऔर nपर्याप्त रूप से बड़े,n*k < f(n) < n*K


ऐसा नहीं है, वे चर थोड़े भ्रमित हैं, वे असंबंधित हैं।
आरोन रॉबसन

@committedandroider नहीं, वे लोअरकेस और अपरकेस हैं, इसलिए वह विशिष्ट गणितीय शैली का उपयोग कर रहे हैं जिसमें दो "समान" (लेकिन यहां किसी भी तरह से संबंधित नहीं) चर बड़े और छोटे मामले का उपयोग करते हैं।
सैंट्रोपेड्रो

329

पहले समझते हैं कि बड़े ओ, बड़े थेटा और बड़े ओमेगा क्या हैं। वे सभी कार्यों के सेट हैं।

बिग ओ ऊपरी असममित बाउंड दे रहा है , जबकि बड़ा ओमेगा कम बाउंड दे रहा है। बिग थीटा दोनों देता है।

सब कुछ जो है Ө(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)))।

असमंजस में मत डालो!

सबसे खराब, सबसे अच्छे और औसत मामलों के विश्लेषण के साथ भ्रमित होने की नहीं: सभी तीन (ओमेगा, हे, थीटा) संकेतन एल्गोरिदम के सबसे अच्छे, सबसे खराब और औसत मामलों के विश्लेषण से संबंधित नहीं हैं । इनमें से प्रत्येक को प्रत्येक विश्लेषण पर लागू किया जा सकता है।

हम आमतौर पर एल्गोरिदम की जटिलता का विश्लेषण करने के लिए इसका उपयोग करते हैं (जैसे ऊपर मर्ज सॉर्ट उदाहरण)। जब हम कहते हैं कि "एल्गोरिथम ए O(f(n))" है, तो हमारा वास्तव में मतलब है "सबसे खराब 1 केस विश्लेषण के तहत एल्गोरिदम की जटिलता है O(f(n))" - अर्थ - यह "समान" (या औपचारिक रूप से, इससे भी बदतर नहीं) फ़ंक्शन को मापता है f(n)

हम एक एल्गोरिथ्म के असममित रूप से क्यों देखभाल करते हैं?

वैसे, इसके कई कारण हैं, लेकिन मेरा मानना ​​है कि उनमें से सबसे महत्वपूर्ण हैं:

  1. सटीक जटिलता फ़ंक्शन को निर्धारित करना बहुत कठिन है , इस प्रकार हम बड़े-ओ / बड़े-थीटा नोटेशन पर "समझौता" करते हैं, जो कि सैद्धांतिक रूप से पर्याप्त जानकारीपूर्ण हैं।
  2. ऑप्स की सही संख्या भी प्लेटफॉर्म पर निर्भर है । उदाहरण के लिए, यदि हमारे पास 16 नंबरों की एक वेक्टर (सूची) है। कितना ऑप्स लगेगा? उत्तर है, यह निर्भर करता है। कुछ सीपीयू वेक्टर परिवर्धन की अनुमति देते हैं, जबकि अन्य नहीं करते हैं, इसलिए उत्तर अलग-अलग कार्यान्वयन और विभिन्न मशीनों के बीच भिन्न होता है, जो एक अवांछित संपत्ति है। बिग-ओ नोटेशन हालांकि मशीनों और कार्यान्वयन के बीच बहुत अधिक स्थिर है।

इस समस्या को प्रदर्शित करने के लिए, निम्नलिखित ग्राफ़ पर एक नज़र डालें: यहां छवि विवरण दर्ज करें

यह स्पष्ट है कि 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)
सांकेतिक रूप से, में f(n)=n^2होगा Omega(n), लेकिन अंदर नहीं है O(n), और इस प्रकार भी नहीं है Theta(n)


1 आमतौर पर, हालांकि हमेशा नहीं। जब विश्लेषण वर्ग (सबसे खराब, औसत और सबसे अच्छा) गायब है, तो हम वास्तव में सबसे खराब स्थिति का मतलब है।


4
@ श्रीकृष्णचंद्र: अस्वाभाविक f(n) = n^2रूप से मजबूत है n, और इसलिए ओमेगा (एन) है। हालांकि यह ओ (एन) नहीं है (क्योंकि बड़े nमूल्यों के लिए, यह तब बड़ा है c*n, सभी के लिए n)। चूंकि हमने कहा थाटा (n) O (n) और ओमेगा (n) का प्रतिच्छेदन है, क्योंकि यह O (n) नहीं है, यह Theta (n) भी नहीं हो सकता है।
amit

8
किसी को यह समझाते हुए देखना बहुत अच्छा है कि एल्गोरिथ्म के सबसे अच्छे / बुरे मामले में बिग-ओ नोटेशन संबंधित नहीं है। बहुत सारी वेबसाइटें हैं जो आई (O) (T (n)) कहने वाले टॉपिक का मतलब है कि रनिंग टाइम खराब होने का मतलब है।
विल सेवेल

1
@almel यह 2 * n (2n, दो बार n) नहीं 2 ^ n
amit

5
@VishalK 1. बिग ओ n के समान ऊपरी सीमा है जो अनंत को जाता है। 2. ओमेगा एन के रूप में निचली सीमा से अनंत तक जाता है। 3. थीटा अपर और लोअर बाउंड दोनों है क्योंकि एन अनंत तक जाता है। ध्यान दें कि सभी सीमा केवल मान्य हैं "के रूप में एन , अनंत को जाता है" क्योंकि सीमा से कम मूल्यों के लिए पकड़ नहीं है n (कम से कम N0 )। सीमा सभी nn0 के लिए है , लेकिन n0 से नीचे नहीं है जहां निचले क्रम की शर्तें प्रमुख हो जाती हैं।
बैन

1
@hey_you फिर से जवाब पढ़ें। बड़े हे, थीटा, ओमेगा फ़ंक्शंस के लिए हैं, एल्गोरिदम नहीं। मर्ज सॉर्ट ओमेगा (n) सबसे खराब स्थिति है। यह O (n ^ 2) सर्वश्रेष्ठ मामला भी है। यह भी थीटा (सबसे खराब) मामला है। मूल रूप से, प्रत्येक विश्लेषण के लिए (सबसे खराब / सबसे अच्छा / औसत / ...) आपके पास एक जटिलता फ़ंक्शन है T_best(n), T_worst(n), T_average(n)। उन्हें समान होना नहीं है (और ज्यादातर, वे नहीं हैं)। ओ / ओमेगा / थीटा को स्वतंत्र रूप से उनमें से किसी पर भी लागू किया जा सकता है।
एमटी

14

थीटा (n): एक फंक्शन होता f(n)है Theta(g(n)), अगर पॉजिटिव कॉन्स्टेंट मौजूद हैं c1और c2ऐसे f(n)बीच c1(g(n))और सैंडविच किया जा सकता है c2(g(n))। यानी यह ऊपरी और साथ ही निचली सीमा दोनों को देता है।

थीटा (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> = n1} के लिए

ex : बाउंड 2*(n^2) = O(n^2)असिम्पोटिक रूप से टाइट है, जबकि बाउंड 2*n = O(n^2)असिम्पोटिक रूप से टाइट नहीं है।

o (n): यह केवल ऊपरी बाउंड देता है (कभी टाइट बाउंड नहीं)

O (n) और o (n) के बीच उल्लेखनीय अंतर f (n) सभी n> = n1 के लिए cg (n) से कम है लेकिन O (n) के बराबर नहीं है।

पूर्व : 2*n = o(n^2)लेकिन2*(n^2) != o(n^2)


1
आपने बड़े ओमेगा का उल्लेख नहीं किया, जो निचली सीमा को संदर्भित करता है। अन्यथा, बहुत अच्छा पहला जवाब और स्वागत है!
बोहनी

1
मुझे यह पसंद आया कि जिस तरह से उन्होंने थीटा (n) की परिभाषा तैयार की। Upvoted!
user720694


1

बिग थीटा संकेतन:

दोस्त को गड़बड़ करने के लिए कुछ भी नहीं !!

यदि हमारे पास एक सकारात्मक मूल्यवान फ़ंक्शंस f (n) और g (n) एक पॉज़िटिव वैल्यूड तर्क n लेता है, तो ϴ (g (n)) को {f (n) के रूप में परिभाषित किया जाता है: वहाँ सभी n के लिए c1, c2 और n1 मौजूद हैं। = n1}

जहाँ c1 g (n) <= f (n) <= c2 g (n)

आइए एक उदाहरण लेते हैं:

let f (n) =

जी (एन) =

c1 = 5 और c2 = 8 और n1 = 1

सभी धारणाओं के बीच, ation अंकन कार्य के विकास की दर के बारे में सबसे अच्छा अंतर्ज्ञान देता है क्योंकि यह हमें बड़े-ओह और बड़े-ओमेगा के विपरीत एक तंग बाध्य देता है जो क्रमशः ऊपरी और निचले सीमा देता है।

G हमें बताता है कि g (n) f (n) के जितना करीब है, g (n) की वृद्धि की दर यथासंभव f (n) की वृद्धि की दर के करीब है।

एक बेहतर अंतर्ज्ञान प्राप्त करने के लिए छवि देखें


0

सबसे पहले थ्योरी

  1. बिग ओ = अपर लिमिट ओ (एन)

  2. थीटा = ऑर्डर फंक्शन - थीटा (एन)

  3. ओमेगा = क्यू-नोटेशन (लोअर लिमिट) Q (n)

लोग इतने भ्रमित क्यों हैं?

कई ब्लॉग्स और किताबों में इस स्टेटमेंट पर ज़ोर दिया गया है जैसे कि

"यह बिग ओ (एन ^ 3)" आदि है।

और लोग अक्सर मौसम की तरह भ्रमित होते हैं

O (n) == थीटा (n) == Q (n)

लेकिन क्या मूल्य को ध्यान में रखते हुए वे नाम मात्र ओ, थीटा और ओमेगा के साथ गणितीय आधार हैं

इसलिए उनके पास बहुपद का एक ही सामान्य सूत्र है,

चलो,

f (n) = 2n4 + 100n2 + 10n + 50 तब,

g (n) = n4, इसलिए g (n) फ़ंक्शन है जो इनपुट के रूप में कार्य करता है और बड़ी शक्ति के साथ चर देता है।

सभी विवरणों के लिए समान f (n) और g (n)

बिग ओ - फ़ंक्शन (ऊपरी सीमा प्रदान करता है)

बिग ओ (n4) = 3n4, क्योंकि 3n4> 2n4

3n4 बिग O (n4) का मान है जैसे f (x) = 3x

n4 x की भूमिका निभा रहा है यहाँ , इसलिए

X4 के साथ n4 की जगह, बिग ओ (x ') = 2x', अब हम दोनों खुश हैं जनरल कॉन्सेप्ट है

तो 0 'f (n) ≤ O (x')

O (x ') = cg (n) = 3n4

मूल्य लगाना,

0 n 2n4 + 100n2 + 10n + 50 4 3n4

3n4 हमारी ऊपरी सीमा है

थीटा (n) लोअर बाउंड प्रदान करता है

थीटा (n4) = cg (n) = 2n4 क्योंकि 2n4 n हमारा उदाहरण f (n)

2n4 थेटा का मान है (n4)

हां, तो ≤ cg (n) n f (n)

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

2n4 हमारी लोअर बाउंड है

ओमेगा एन - ऑर्डर फंक्शन

यह इस बात का पता लगाने के लिए है कि मौसम निचला बाउंड ऊपरी बाउंड के समान है,

मामला एक)। अपर बाउंड लोअर बाउंड के समान है

if Upper Bound is Similar to Lower Bound, The Average Case is Similar

Example, 2n4 ≤ f(x) ≤ 2n4,
Then Omega(n) = 2n4

केस 2)। अगर अपर बाउंड लोअर बाउंड के समान नहीं है

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

आशा है यह समझाया गया है !!

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.