बिग ओ अंकन
Fit approximation |
---|
Concepts |
Orders of approximation Scale analysis · Big O notation Curve fitting · False precision Significant figures |
Other fundamentals |
Approximation · Generalization error Taylor polynomial Scientific modelling |
बिग ओ नोटेशन गणितीय नोटेशन है जो किसी फ़ंक्शन (गणित) के स्पर्शोन्मुख विश्लेषण का वर्णन करता है जब किसी फ़ंक्शन का तर्क किसी विशेष मूल्य या अनंत की ओर जाता है। बिग ओ पॉल गुस्ताव हेनरिक बैचमैन द्वारा आविष्कृत #संबंधित एसिम्प्टोटिक नोटेशन का सदस्य है,[1]एडमंड लैंडौ,[2]और अन्य, जिन्हें सामूहिक रूप से बैचमैन-लैंडौ संकेतन या एसिम्प्टोटिक संकेतन कहा जाता है। अक्षर O को बैचमैन द्वारा :विक्ट:ऑर्डनंग#जर्मन के लिए चुना गया था, जिसका अर्थ सन्निकटन का क्रम है।
कंप्यूटर विज्ञान में, बिग ओ नोटेशन का उपयोग कम्प्यूटेशनल जटिलता सिद्धांत के लिए किया जाता है, जिसके अनुसार इनपुट आकार बढ़ने के साथ उनके रन टाइम या स्पेस की आवश्यकताएं कैसे बढ़ती हैं।[3] विश्लेषणात्मक संख्या सिद्धांत में, बड़े ओ नोटेशन का उपयोग अक्सर अंकगणितीय फ़ंक्शन और बेहतर समझे जाने वाले सन्निकटन के बीच अंतर पर सीमा व्यक्त करने के लिए किया जाता है; इस तरह के अंतर का प्रसिद्ध उदाहरण अभाज्य संख्या प्रमेय में शेष पद है। इसी तरह के अनुमान प्रदान करने के लिए कई अन्य क्षेत्रों में भी बिग ओ नोटेशन का उपयोग किया जाता है।
बिग ओ नोटेशन उनकी विकास दर के अनुसार कार्यों को चित्रित करता है: समान एसिम्प्टोटिक विकास दर वाले विभिन्न कार्यों को ही ओ नोटेशन का उपयोग करके दर्शाया जा सकता है। O अक्षर का उपयोग इसलिए किया जाता है क्योंकि किसी फ़ंक्शन की वृद्धि दर को फ़ंक्शन का क्रम भी कहा जाता है। बड़े O नोटेशन के संदर्भ में किसी फ़ंक्शन का विवरण आमतौर पर केवल फ़ंक्शन की वृद्धि दर पर ऊपरी सीमा प्रदान करता है।
बड़े O नोटेशन के साथ प्रतीकों का उपयोग करते हुए कई संबंधित नोटेशन जुड़े हुए हैं o, Ω, ω, और Θ, स्पर्शोन्मुख विकास दर पर अन्य प्रकार की सीमाओं का वर्णन करने के लिए।
औपचारिक परिभाषा
होने देना , जिस फ़ंक्शन का अनुमान लगाया जाना है, वह वास्तविक संख्या या जटिल संख्या मूल्यवान फ़ंक्शन हो और चलो , तुलना फ़ंक्शन, वास्तविक मूल्यवान फ़ंक्शन बनें। मान लीजिए कि दोनों कार्यों को सकारात्मक वास्तविक संख्याओं के कुछ बंधे हुए सबसेट उपसमुच्चय पर परिभाषित किया गया है, और के सभी बड़े पर्याप्त मूल्यों के लिए सख्ती से सकारात्मक रहें .[4] लिखता है
कंप्यूटर विज्ञान में, थोड़ी अधिक प्रतिबंधात्मक परिभाषा आम है: और क्या दोनों को प्राकृतिक संख्याओं के कुछ असंबद्ध उपसमुच्चय से गैर-ऋणात्मक वास्तविक संख्याओं तक फलन होना आवश्यक है; तब यदि धनात्मक पूर्णांक संख्याएँ मौजूद हैं और ऐसा है कि सभी के लिए .[5]
उदाहरण
सामान्य उपयोग में O अंकन स्पर्शोन्मुख है, अर्थात यह बहुत बड़े को संदर्भित करता है x. इस सेटिंग में, सबसे तेज़ी से बढ़ने वाले शब्दों का योगदान अंततः अन्य को अप्रासंगिक बना देगा। परिणामस्वरूप, निम्नलिखित सरलीकरण नियम लागू किए जा सकते हैं:
- अगर f(x) कई पदों का योग है, यदि सबसे अधिक वृद्धि दर वाला कोई है, तो उसे रखा जा सकता है, और अन्य सभी को छोड़ दिया जा सकता है।
- अगर f(x) कई कारकों का उत्पाद है, किसी भी स्थिरांक (उत्पाद में ऐसे कारक जो निर्भर नहीं होते हैं x) मिटाया जा सकता है।
उदाहरण के लिए, चलो f(x) = 6x4 − 2x3 + 5, और मान लीजिए कि हम इसका उपयोग करके इस फ़ंक्शन को सरल बनाना चाहते हैं O संकेतन, इसकी वृद्धि दर को इस प्रकार वर्णित करने के लिए x अनंत तक पहुंचता है। यह फ़ंक्शन तीन पदों का योग है: 6x4, −2x3, और 5. इन तीन शर्तों में से, उच्चतम विकास दर वाला वह है जिसके कार्य के रूप में सबसे बड़ा प्रतिपादक है x, अर्थात् 6x4. अब कोई दूसरा नियम लागू कर सकता है: 6x4 का उत्पाद है 6 और x4 जिसमें पहला कारक निर्भर नहीं करता x. इस कारक को छोड़ने पर परिणाम सरलीकृत हो जाता है x4. इस प्रकार, हम ऐसा कहते हैं f(x) का बड़ा O है x4. गणितीय रूप से हम लिख सकते हैं f(x) = O(x4). कोई औपचारिक परिभाषा का उपयोग करके इस गणना की पुष्टि कर सकता है: चलो f(x) = 6x4 − 2x3 + 5 और g(x) = x4. उपरोक्त से #औपचारिक परिभाषा को लागू करते हुए कथन कि f(x) = O(x4) इसके विस्तार के बराबर है,
उपयोग
बिग ओ नोटेशन के अनुप्रयोग के दो मुख्य क्षेत्र हैं:
- गणित में, इसका उपयोग आमतौर पर बिग ओ नोटेशन#इनफिनिटेसिमल एसिम्प्टोटिक्स का वर्णन करने के लिए किया जाता है, विशेष रूप से काटे गए टेलर श्रृंखला या एसिम्प्टोटिक विस्तार के मामले में
- कंप्यूटर विज्ञान में, यह बिग ओ नोटेशन#अनंत स्पर्शोन्मुख विस्तार उपयोगी है
दोनों अनुप्रयोगों में, function g(x) के भीतर प्रदर्शित हो रहा है O(·) को आम तौर पर यथासंभव सरल चुना जाता है, निरंतर कारकों और निचले क्रम की शर्तों को छोड़ दिया जाता है।
इस नोटेशन के दो औपचारिक रूप से करीब, लेकिन स्पष्ट रूप से भिन्न उपयोग हैं:[citation needed]
- अनंत स्पर्शोन्मुखता
- बहुत छोता एसिम्प्टोटिक्स।
यह अंतर केवल अनुप्रयोग में है और सिद्धांत रूप में नहीं, हालांकि - बड़े O के लिए औपचारिक परिभाषा दोनों मामलों के लिए समान है, केवल फ़ंक्शन तर्क के लिए अलग-अलग सीमाएं हैं।Template:Or inline
अनंत स्पर्शोन्मुख
दक्षता के लिए एल्गोरिदम का विश्लेषण करते समय बिग ओ नोटेशन उपयोगी होता है। उदाहरण के लिए, आकार की समस्या को पूरा करने में लगने वाला समय (या चरणों की संख्या)। n पाया जा सकता है T(n) = 4n2 − 2n + 2. जैसा n बड़ा हो जाता है, n2 सारांश हावी हो जाएगा, ताकि अन्य सभी शर्तों की उपेक्षा की जा सके - उदाहरण के लिए जब n = 500, शब्द 4n2 से 1000 गुना बड़ा है 2n अवधि। उत्तरार्द्ध को अनदेखा करने से अधिकांश उद्देश्यों के लिए अभिव्यक्ति के मूल्य पर नगण्य प्रभाव पड़ेगा। इसके अलावा, यदि हम अभिव्यक्ति के सन्निकटन के किसी अन्य आदेश से तुलना करते हैं, जैसे कि पद युक्त अभिव्यक्ति, तो गुणांक अप्रासंगिक हो जाते हैं n3 या n4. भले ही T(n) = 1,000,000n2, अगर U(n) = n3, बाद वाला हमेशा पहले वाले से बार अधिक होगा n से बड़ा हो जाता है 1,000,000 (T(1,000,000) = 1,000,0003 = U(1,000,000)). इसके अतिरिक्त, चरणों की संख्या मशीन मॉडल के विवरण पर निर्भर करती है जिस पर एल्गोरिदम चलता है, लेकिन विभिन्न प्रकार की मशीनें आमतौर पर एल्गोरिदम को निष्पादित करने के लिए आवश्यक चरणों की संख्या में केवल स्थिर कारक से भिन्न होती हैं। तो बड़ा O नोटेशन जो बचता है उसे पकड़ लेता है: हम या तो लिखते हैं
या
और कहें कि एल्गोरिदम का क्रम है n2 समय जटिलता. संकेत= का अभिप्राय अपने सामान्य गणितीय अर्थ में बराबर को व्यक्त करना नहीं है, बल्कि अधिक बोलचाल की भाषा है, इसलिए दूसरी अभिव्यक्ति को कभी-कभी अधिक सटीक माना जाता है (नीचे #बराबर चिह्न चर्चा देखें) जबकि पहली को कुछ लोगों द्वारा दुरुपयोग माना जाता है अंकन का.[6]
अनंतिम स्पर्शोन्मुखता
बिग ओ का उपयोग टेलर श्रृंखला#अनुमान त्रुटि और गणितीय फ़ंक्शन के सन्निकटन में अभिसरण का वर्णन करने के लिए भी किया जा सकता है। सबसे महत्वपूर्ण शब्दों को स्पष्ट रूप से लिखा जाता है, और फिर सबसे कम महत्वपूर्ण शब्दों को बड़े ओ शब्द में संक्षेपित किया जाता है। उदाहरण के लिए, एक्सपोनेंशियल फ़ंक्शन#औपचारिक परिभाषा और इसकी दो अभिव्यक्तियों पर विचार करें जो कब मान्य हैं x छोटा है:
दूसरा व्यंजक (O(x वाला)।3)) का अर्थ है त्रुटि e का निरपेक्ष मानx − (1 + x + x2/2) अधिक से अधिक कुछ स्थिर समय है |एक्स3| जब x 0 के काफी करीब हो।
गुण
यदि फ़ंक्शन f को अन्य कार्यों के सीमित योग के रूप में लिखा जा सकता है, फिर सबसे तेजी से बढ़ने वाला क्रम निर्धारित करता है f(n). उदाहरण के लिए,
विशेष रूप से, यदि कोई फलन किसी बहुपद से घिरा हो सकता है n, फिर ऐसे n अनंत की ओर प्रवृत्त होता है, कोई बहुपद के निचले-क्रम वाले पदों की उपेक्षा कर सकता है। सेट O(nc) और O(cn) बहुत अलग हैं. अगर c से बड़ा है, तो बाद वाला बहुत तेजी से बढ़ता है। फ़ंक्शन जो तेजी से बढ़ता है nc किसी के लिए c को सुपरपोलिनोमियल कहा जाता है। वह जो प्रपत्र के किसी भी घातांकीय फलन की तुलना में अधिक धीरे-धीरे बढ़ता है cn को उपघातीय कहा जाता है। एल्गोरिदम को ऐसे समय की आवश्यकता हो सकती है जो सुपरपोलिनोमियल और सबएक्सपोनेंशियल दोनों हो; इसके उदाहरणों में पूर्णांक गुणनखंडन और फ़ंक्शन के लिए सबसे तेज़ ज्ञात एल्गोरिदम शामिल हैं nlog n.
हम किसी भी शक्ति को नजरअंदाज कर सकते हैं n लघुगणक के अंदर। सेट O(log n) बिलकुल वैसा ही है O(log(nc)). लघुगणक केवल स्थिर कारक से भिन्न होते हैं (क्योंकि log(nc) = c log n) और इस प्रकार बड़ा O नोटेशन इसे अनदेखा कर देता है। इसी प्रकार, विभिन्न स्थिर आधारों वाले लॉग समतुल्य होते हैं। दूसरी ओर, विभिन्न आधारों वाले घातांक ही क्रम के नहीं होते हैं। उदाहरण के लिए, 2n और 3n समान क्रम के नहीं हैं।
बदलती इकाइयाँ परिणामी एल्गोरिदम के क्रम को प्रभावित कर भी सकती हैं और नहीं भी। इकाइयों को बदलना, जहां कहीं भी दिखाई दे, उचित चर को स्थिरांक से गुणा करने के बराबर है। उदाहरण के लिए, यदि कोई एल्गोरिदम क्रम में चलता है n2, प्रतिस्थापित करना n द्वारा cn का अर्थ है कि एल्गोरिदम क्रम में चलता है c2n2, और बड़ा O अंकन स्थिरांक को अनदेखा करता है c2. इसे ऐसे लिखा जा सकता है c2n2 = O(n2). यदि, तथापि, एल्गोरिथ्म के क्रम में चलता है 2n, प्रतिस्थापित करना n साथ cn देता है 2cn = (2c)n. यह इसके बराबर नहीं है 2n सामान्य रूप में। चर बदलने से परिणामी एल्गोरिदम का क्रम भी प्रभावित हो सकता है। उदाहरण के लिए, यदि किसी एल्गोरिदम का रन टाइम है O(n) जब संख्या के संदर्भ में मापा जाता है n किसी इनपुट संख्या के अंकों का x, तो इसका रन टाइम है O(log x) जब इनपुट संख्या के फ़ंक्शन के रूप में मापा जाता है xस्वयं, क्योंकि n = O(log x).
उत्पाद
योग
अगर और तब . यह इस प्रकार है कि यदि और तब . दूसरे शब्दों में, यह दूसरा कथन यही कहता है उत्तल शंकु है.
एक स्थिरांक से गुणा
होने देना k शून्येतर स्थिरांक हो। तब . दूसरे शब्दों में, यदि , तब
एकाधिक चर
बिग ओ (और छोटे ओ, Ω, आदि) का उपयोग कई वेरिएबल्स के साथ भी किया जा सकता है। कई चरों के लिए बड़े O को औपचारिक रूप से परिभाषित करने के लिए, मान लीजिए और के कुछ उपसमुच्चय पर परिभाषित दो कार्य हैं . हम कहते हैं
यदि और केवल यदि स्थिरांक मौजूद हैं और ऐसा है कि सभी के लिए साथ कुछ के लिए [7] समान रूप से, शर्त यह है कि कुछ के लिए लिखा जा सकता है , कहाँ चेबीशेव मानदंड को दर्शाता है। उदाहरण के लिए, कथन
दावा करता है कि ऐसे स्थिरांक C और M मौजूद हैं
जब भी या तो या धारण करता है. यह परिभाषा सभी निर्देशांकों की अनुमति देती है अनंत तक बढ़ना. विशेष रूप से, कथन
(अर्थात।, ) से काफी अलग है
(अर्थात।, ).
इस परिभाषा के तहत, उपसमुच्चय जिस पर फ़ंक्शन परिभाषित किया गया है, यूनीवेरिएट सेटिंग से मल्टीवेरिएट सेटिंग में कथनों को सामान्यीकृत करते समय महत्वपूर्ण होता है। उदाहरण के लिए, यदि और , तब अगर हम प्रतिबंधित करते हैं और को , लेकिन तब नहीं जब उन्हें परिभाषित किया गया हो .
बहुभिन्नरूपी कार्यों के लिए बड़े O का यह एकमात्र सामान्यीकरण नहीं है, और व्यवहार में, परिभाषा के चुनाव में कुछ असंगतता है।[8]
अंकन के मामले
बराबर का चिह्न
कथन f(x) O(g(x)) है जैसा कि ऊपर परिभाषित किया गया है, आमतौर पर इस प्रकार लिखा जाता है f(x) = O(g(x)). कुछ लोग इसे संकेतन का दुरुपयोग मानते हैं, क्योंकि बराबर चिह्न का उपयोग भ्रामक हो सकता है क्योंकि यह समरूपता का सुझाव देता है जो इस कथन में नहीं है। जैसा कि निकोलस गोवर्ट डी ब्रुइज़न कहते हैं, O(x) = O(x2) सत्य है लेकिन O(x2) = O(x) क्या नहीं है।[9] डोनाल्ड नुथ ऐसे बयानों को एकतरफा समानता के रूप में वर्णित करते हैं, क्योंकि यदि पक्षों को उलटा किया जा सकता है, तो हम हास्यास्पद बातें निकाल सकते हैं n = n2पहचान से n = O(n2) और n2 = O(n2).[10] अन्य पत्र में, नथ ने यह भी बताया कि समानता चिह्न ऐसे अंकन के संबंध में सममित नहीं है, क्योंकि, इस अंकन में, गणितज्ञ परंपरागत रूप से = चिह्न का उपयोग करते हैं क्योंकि वे अंग्रेजी में शब्द का उपयोग करते हैं: अरस्तू आदमी है, लेकिन आदमी है जरूरी नहीं कि अरस्तू हो।[11] इन कारणों से, संकेतन सेट करें का उपयोग करना और लिखना अधिक सटीक होगा f(x) ∈ O(g(x)) (इस प्रकार पढ़ें: f(x) तत्व (गणित)#नोटेशन और शब्दावली O(g(x)) , या f(x) सेट O(g(x)) में है), O(g(x) के बारे में सोचते हुए )) सभी कार्यों का वर्ग h(x) इस प्रकार है कि |h(x)| ≤ कुछ सकारात्मक वास्तविक संख्या C के लिए Cg(x)।[10]हालाँकि, बराबर चिह्न का उपयोग प्रथागत है।[9][10]
अन्य अंकगणितीय ऑपरेटर
बिग ओ नोटेशन का उपयोग अधिक जटिल समीकरणों में अन्य अंकगणितीय ऑपरेटरों के साथ संयोजन में भी किया जा सकता है। उदाहरण के लिए, h(x) + O(f(x)) h(x) की वृद्धि के साथ-साथ भाग वाले कार्यों के संग्रह को दर्शाता है जिसकी वृद्धि f(x) तक सीमित है। इस प्रकार,
के समान ही व्यक्त करता है
उदाहरण
मान लीजिए कि n तत्वों के सेट पर काम करने के लिए कलन विधि विकसित किया जा रहा है। इसके डेवलपर्स फ़ंक्शन T(n) खोजने में रुचि रखते हैं जो यह व्यक्त करेगा कि इनपुट सेट में तत्वों की संख्या के संदर्भ में एल्गोरिदम को चलने में कितना समय लगेगा (समय के कुछ मनमाने माप में)। एल्गोरिदम सेट में तत्वों को क्रमबद्ध करने के लिए पहले सबरूटीन को कॉल करके काम करता है और फिर अपने स्वयं के संचालन करता है। इस प्रकार में O(n) की ज्ञात समय जटिलता है2), और सबरूटीन चलने के बाद एल्गोरिदम को अतिरिक्त लेना होगा 55n3 + 2n + 10 समाप्त होने से पहले के चरण। इस प्रकार एल्गोरिथ्म की समग्र समय जटिलता को इस प्रकार व्यक्त किया जा सकता है T(n) = 55n3 + O(n2). यहाँ शर्तें 2n + 10 तेजी से बढ़ने वाले O(n) में समाहित हो गए हैं2). फिर, यह उपयोग = प्रतीक के कुछ औपचारिक अर्थों की उपेक्षा करता है, लेकिन यह प्रकार के सुविधाजनक प्लेसहोल्डर के रूप में बड़े ओ नोटेशन का उपयोग करने की अनुमति देता है।
एकाधिक उपयोग
अधिक जटिल उपयोग में, O(·) समीकरण में विभिन्न स्थानों पर प्रकट हो सकता है, यहाँ तक कि प्रत्येक पक्ष पर कई बार भी। उदाहरण के लिए, निम्नलिखित सत्य हैं :
टाइपसेटिंग
बिग O को इटैलिकाइज़्ड अपरकेस O के रूप में टाइप किया गया है, जैसा कि निम्नलिखित उदाहरण में है: .[12][13] TeX में, यह केवल गणित मोड के अंदर O टाइप करके निर्मित होता है। ग्रीक-नामांकित बैचमैन-लैंडौ नोटेशन के विपरीत, इसे किसी विशेष प्रतीक की आवश्यकता नहीं है। फिर भी, कुछ लेखक सुलेख संस्करण का उपयोग करते हैं बजाय।[14][15]
सामान्य कार्यों के क्रम
यहां उन फ़ंक्शंस के वर्गों की सूची दी गई है जो आमतौर पर एल्गोरिदम के चलने के समय का विश्लेषण करते समय सामने आते हैं। प्रत्येक मामले में, c धनात्मक स्थिरांक है और n बिना किसी सीमा के बढ़ता है। धीमी गति से बढ़ने वाले कार्यों को आम तौर पर पहले सूचीबद्ध किया जाता है।
Notation | Name | Example |
---|---|---|
constant | Determining if a binary number is even or odd; Calculating ; Using a constant-size lookup table | |
double logarithmic | Average number of comparisons spent finding an item using interpolation search in a sorted array of uniformly distributed values | |
logarithmic | Finding an item in a sorted array with a binary search or a balanced search tree as well as all operations in a binomial heap | |
polylogarithmic | Matrix chain ordering can be solved in polylogarithmic time on a parallel random-access machine. | |
fractional power | Searching in a k-d tree | |
linear | Finding an item in an unsorted list or in an unsorted array; adding two n-bit integers by ripple carry | |
n log-star n | Performing triangulation of a simple polygon using Seidel's algorithm, or the union–find algorithm. Note that | |
linearithmic, loglinear, quasilinear, or "n log n" | Performing a fast Fourier transform; fastest possible comparison sort; heapsort and merge sort | |
quadratic | Multiplying two n-digit numbers by schoolbook multiplication; simple sorting algorithms, such as bubble sort, selection sort and insertion sort; (worst-case) bound on some usually faster sorting algorithms such as quicksort, Shellsort, and tree sort | |
polynomial or algebraic | Tree-adjoining grammar parsing; maximum matching for bipartite graphs; finding the determinant with LU decomposition | |
L-notation or sub-exponential | Factoring a number using the quadratic sieve or number field sieve | |
exponential | Finding the (exact) solution to the travelling salesman problem using dynamic programming; determining if two logical statements are equivalent using brute-force search | |
factorial | Solving the travelling salesman problem via brute-force search; generating all unrestricted permutations of a poset; finding the determinant with Laplace expansion; enumerating all partitions of a set |
कथन कभी-कभी कमजोर हो जाता है स्पर्शोन्मुख जटिलता के लिए सरल सूत्र प्राप्त करना। किसी के लिए और , का उपसमुच्चय है किसी के लिए , इसलिए इसे किसी बड़े क्रम वाला बहुपद माना जा सकता है।
संबंधित स्पर्शोन्मुख संकेतन
कंप्यूटर विज्ञान में बिग ओ का व्यापक रूप से उपयोग किया जाता है। कुछ अन्य संबंधित नोटेशनों के साथ, यह बैचमैन-लैंडौ नोटेशन के परिवार का निर्माण करता है।
लिटिल-ओ नोटेशन
सहज रूप से, दावाf(x) है o(g(x)) (पढ़नाf(x) छोटा-ओ का है g(x) ) मतलब कि g(x) की तुलना में बहुत तेजी से बढ़ता है f(x). पहले की तरह, मान लीजिए कि f वास्तविक या जटिल मान वाला फ़ंक्शन है और g वास्तविक मान वाला फ़ंक्शन है, दोनों को सकारात्मक वास्तविक संख्याओं के कुछ असीमित उपसमुच्चय पर परिभाषित किया गया है, जैसे कि x के सभी बड़े पर्याप्त मानों के लिए g(x) सख्ती से सकारात्मक है। लिखता है
यदि प्रत्येक सकारात्मक स्थिरांक के लिए ε वहां स्थिरांक मौजूद है ऐसा है कि
उदाहरण के लिए, किसी के पास है
- और दोनों जैसे
- औपचारिक परिभाषा|बिग-ओ संकेतन की परिभाषा और छोटे-ओ की परिभाषा के बीच अंतर यह है कि जहां पूर्व को कम से कम स्थिरांक एम के लिए सत्य होना चाहिए, वहीं बाद वाले को प्रत्येक सकारात्मक स्थिरांक के लिए मान्य होना चाहिए ε, हालाँकि छोटा।[17] इस तरह, लिटिल-ओ नोटेशन संबंधित बिग-ओ नोटेशन की तुलना में मजबूत कथन बनाता है: प्रत्येक फ़ंक्शन जो कि जी का छोटा-ओ है, वह भी जी का बड़ा-ओ है, लेकिन प्रत्येक फ़ंक्शन जो जी का बड़ा-ओ है वह भी नहीं है जी का छोटा-ओ. उदाहरण के लिए, लेकिन .
चूँकि g(x) अशून्य है, या कम से कम निश्चित बिंदु से परे अशून्य हो जाता है, संबंध के बराबर है
- (और वास्तव में लैंडौ ऐसा ही है[16]मूल रूप से लिटिल-ओ नोटेशन को परिभाषित किया गया था)।
लिटिल-ओ कई अंकगणितीय संक्रियाओं का सम्मान करता है। उदाहरण के लिए,
- अगर c शून्येतर स्थिरांक है और तब , और
- अगर और तब
यह सकर्मक संबंध संबंध को भी संतुष्ट करता है:
- अगर और तब
बिग ओमेगा संकेतन
एक अन्य स्पर्शोन्मुख संकेतन है , बिग ओमेगा पढ़ें।[18] कथन की दो व्यापक और असंगत परिभाषाएँ हैं
- जैसा ,
जहां a कुछ वास्तविक संख्या है, ∞, या −∞, जहां f और g, a के पड़ोस में परिभाषित वास्तविक कार्य हैं, और जहां g इस पड़ोस में सकारात्मक है।
हार्डी-लिटलवुड परिभाषा का उपयोग मुख्य रूप से विश्लेषणात्मक संख्या सिद्धांत में किया जाता है, और नुथ परिभाषा का उपयोग मुख्य रूप से कम्प्यूटेशनल जटिलता सिद्धांत में किया जाता है; परिभाषाएँ समतुल्य नहीं हैं.
हार्डी-लिटलवुड परिभाषा
1914 में गॉडफ्रे हेरोल्ड हार्डी और जॉन एडेंसर लिटिलवुड ने नया प्रतीक पेश किया ,[19] जिसे इस प्रकार परिभाषित किया गया है:
- जैसा अगर
इस प्रकार का निषेध है .
1916 में उन्हीं लेखकों ने दो नये प्रतीक प्रस्तुत किये और , के रूप में परिभाषित:[20]
- जैसा अगर ;
- जैसा अगर
इन प्रतीकों का प्रयोग 1924 में एडमंड लैंडौ द्वारा इन्हीं अर्थों में किया गया था।[21] लांडौ के बाद, नोटेशन का दोबारा कभी भी सटीक रूप से उपयोग नहीं किया गया; बन गया और बन गया .[citation needed]
ये तीन प्रतीक , साथ ही (मतलब है कि और दोनों संतुष्ट हैं), अब वर्तमान में विश्लेषणात्मक संख्या सिद्धांत में उपयोग किया जाता है।[22][23]
सरल उदाहरण
अपने पास
- जैसा
और अधिक सटीक रूप से
- जैसा
अपने पास
- जैसा
और अधिक सटीक रूप से
- जैसा
हालाँकि
- जैसा
नथ परिभाषा
1976 में डोनाल्ड नथ ने अपने उपयोग को उचित ठहराने के लिए पेपर प्रकाशित किया -एक मजबूत संपत्ति का वर्णन करने के लिए प्रतीक।[24]नुथ ने लिखा: कंप्यूटर विज्ञान में अब तक मैंने जितने भी अनुप्रयोग देखे हैं, उनके लिए मजबूत आवश्यकता... कहीं अधिक उपयुक्त है। उन्होंने परिभाषित किया
टिप्पणी के साथ: हालाँकि मैंने हार्डी और लिटिलवुड की परिभाषा बदल दी है , मुझे ऐसा करना उचित लगता है क्योंकि उनकी परिभाषा किसी भी तरह से व्यापक उपयोग में नहीं है, और क्योंकि तुलनात्मक रूप से दुर्लभ मामलों में जब उनकी परिभाषा लागू होती है तो वे जो कहना चाहते हैं उसे कहने के अन्य तरीके भी हैं।[24]
बैचमैन-लैंडौ नोटेशन का परिवार
Notation | Name[24] | Description | Formal definition | Limit definition[25][26][27][24][19] |
---|---|---|---|---|
Small O; Small Oh | f is dominated by g asymptotically | |||
Big O; Big Oh; Big Omicron | is bounded above by g (up to constant factor) asymptotically | |||
Big Theta | f is bounded both above and below by g asymptotically | and (Knuth version) | ||
On the order of | f is equal to g asymptotically | |||
Big Omega in complexity theory (Knuth) | f is bounded below by g asymptotically | |||
Small Omega | f dominates g asymptotically | |||
Big Omega in number theory (Hardy–Littlewood) | is not dominated by g asymptotically | Failed to parse (Conversion error. Server ("cli") reported: "SyntaxError: Expected "-", "[", "\\", "\\begin", "\\begin{", "]", "^", "_", "{", "}", [ \t\n\r], [%$], [().], [,:;?!'], [/|], [0-9], [><~], [\-+*=], or [a-zA-Z] but "ग" found.in 1:76"): {\displaystyle \limsup_{n \to \infty} \frac{\left|f(n)\right|}{g(n)} > 0 </गणित> |} सीमा परिभाषाएँ मानती हैं पर्याप्त रूप से बड़े के लिए गणित>जी(एन) > 0</गणित> गणित>एन</गणित>. तालिका को (आंशिक रूप से) इस अर्थ में सबसे छोटे से सबसे बड़े तक क्रमबद्ध किया गया है <math>o,O,\Theta,\sim, }
(नुथ का संस्करण) कार्यों पर अनुरूप हैं असली लाइन पर[27](हार्डी-लिटलवुड संस्करण हालाँकि, ऐसे किसी भी विवरण के अनुरूप नहीं है)।
कंप्यूटर विज्ञान बड़ा उपयोग करता है , बड़ी थीटा , थोड़ा , थोड़ा ओमेगा और नुथ का बड़ा ओमेगा संकेतन.[28] विश्लेषणात्मक संख्या सिद्धांत अक्सर बड़े का उपयोग करता है , छोटा , हार्डी-लिटलवुड का बड़ा ओमेगा (+, − या ± सबस्क्रिप्ट के साथ या उसके बिना) और संकेतन.[22]छोटा ओमेगा विश्लेषण में अंकन का प्रयोग उतनी बार नहीं किया जाता है।[29]
कंप्यूटर विज्ञान में उपयोगअनौपचारिक रूप से, विशेष रूप से कंप्यूटर विज्ञान में, बड़े ओ नोटेशन का उपयोग अक्सर एसिम्प्टोटिक ऊपरी और निचले सीमा # तंग सीमा का वर्णन करने के लिए कुछ अलग तरीके से किया जा सकता है, जहां बड़े थीटा Θ नोटेशन का उपयोग किसी दिए गए संदर्भ में तथ्यात्मक रूप से अधिक उपयुक्त हो सकता है।[citation needed] उदाहरण के लिए, किसी फ़ंक्शन T(n) = 73n पर विचार करते समय3+22एन2 + 58, निम्नलिखित में से सभी आम तौर पर स्वीकार्य हैं, लेकिन कड़ी सीमाएं (जैसे नीचे संख्या 2 और 3) आमतौर पर ढीली सीमाओं (जैसे नीचे संख्या 1) की तुलना में दृढ़ता से पसंद की जाती हैं।
समतुल्य अंग्रेजी कथन क्रमशः हैं:
इसलिए जबकि तीनों कथन सत्य हैं, प्रत्येक में उत्तरोत्तर अधिक जानकारी समाहित है। हालाँकि, कुछ क्षेत्रों में, बड़े ओ नोटेशन (उपरोक्त सूचियों में नंबर 2) का उपयोग बड़े थीटा नोटेशन (उपरोक्त सूचियों में आइटम नंबर 3) की तुलना में अधिक सामान्यतः किया जाएगा। उदाहरण के लिए, यदि टी (एन) इनपुट आकार एन के लिए नए विकसित एल्गोरिदम के चलने के समय का प्रतिनिधित्व करता है, तो एल्गोरिदम के आविष्कारक और उपयोगकर्ता ऊपरी एसिम्प्टोटिक बाउंड लगाने के इच्छुक हो सकते हैं कि इसे चलाने में कितना समय लगेगा। निचली स्पर्शोन्मुख सीमा के बारे में स्पष्ट कथन। अन्य संकेतनअपनी पुस्तक एल्गोरिदम का परिचय में, थॉमस एच. कॉर्मेन, चार्ल्स ई. लेइसर्सन, रोनाल्ड एल. रिवेस्ट और क्लिफोर्ड स्टीन ने फ़ंक्शंस के सेट पर विचार किया है जो संतुष्ट करता है उदाहरण के लिए, सही संकेतन में इस सेट को O(g) कहा जा सकता है, जहाँ [30]
लेखकों का कहना है कि सेट सदस्यता ऑपरेटर (∈) के बजाय सेट सदस्यता को दर्शाने के लिए समानता ऑपरेटर (=) का उपयोग नोटेशन का दुरुपयोग है, लेकिन ऐसा करने के फायदे हैं।[6] किसी समीकरण या असमानता के अंदर, एसिम्प्टोटिक नोटेशन का उपयोग सेट ओ (जी) में अज्ञात फ़ंक्शन के लिए होता है, जो निम्न-क्रम वाले शब्दों को समाप्त करता है, और समीकरणों में अनावश्यक अव्यवस्था को कम करने में मदद करता है, उदाहरण के लिए:[31]
बाचमैन-लैंडौ नोटेशन का विस्तारकंप्यूटर विज्ञान में कभी-कभी उपयोग किया जाने वाला अन्य संकेतन Õ (सॉफ्ट-ओ पढ़ें) है, जो पॉलीलॉगरिदमिक कारकों को छुपाता है। उपयोग में दो परिभाषाएँ हैं: कुछ लेखक f(n)=Õ(g(n)) को आशुलिपि के रूप में उपयोग करते हैं f(n) = O(g(n) logk n) कुछ k के लिए, जबकि अन्य इसे शॉर्टहैंड के रूप में उपयोग करते हैं f(n) = O(g(n) logk g(n)).[32] कब g(n) n में बहुपद है, कोई अंतर नहीं है; हालाँकि, बाद वाली परिभाषा किसी को यह कहने की अनुमति देती है, उदाहरण के लिए वह जबकि पूर्व परिभाषा इसकी अनुमति देती है किसी स्थिरांक k के लिए। कुछ लेखक ओ लिखते हैं*बाद वाली परिभाषा के समान उद्देश्य के लिए।[33] अनिवार्य रूप से, यह बड़ा ओ नोटेशन है, पॉलीलॉगरिदमिक फ़ंक्शन को अनदेखा कर रहा है क्योंकि एसिम्प्टोटिक विश्लेषण | कुछ अन्य सुपर-लघुगणकीय फ़ंक्शन के विकास-दर प्रभाव बड़े आकार के इनपुट पैरामीटर के लिए विकास-दर विस्फोट का संकेत देते हैं जो खराब रन-टाइम प्रदर्शन की भविष्यवाणी करने के लिए अधिक महत्वपूर्ण है लघुगणक-विकास कारक(ओं) द्वारा योगदान किए गए बेहतर-बिंदु प्रभावों की तुलना में। इस संकेतन का उपयोग अक्सर विकास-दर के भीतर होने वाली खामियों को दूर करने के लिए किया जाता है, जिन्हें मौजूदा मामलों के लिए बहुत कसकर बांधा गया है (लॉग के बाद से)kn हमेशा o(n) होता हैε) किसी भी स्थिरांक k और किसी के लिए ε > 0). इसके अलावा एल-नोटेशन, के रूप में परिभाषित किया गया है उन कार्यों के लिए सुविधाजनक है जो समय जटिलता#बहुपद समय और समय जटिलता#घातीय समय के बीच हैं . सामान्यीकरण और संबंधित उपयोगकिसी भी मानक वेक्टर स्थान में मान लेने वाले कार्यों का सामान्यीकरण सीधा है (मानदंडों द्वारा निरपेक्ष मानों को प्रतिस्थापित करना), जहां एफ और जी को ही स्थान में अपने मान लेने की आवश्यकता नहीं है। किसी भी टोपोलॉजिकल समूह में मान लेने वाले कार्यों का सामान्यीकरण भी संभव है[citation needed]. सीमित प्रक्रिया x → xo मनमाना फ़िल्टर आधार, यानी निर्देशित नेट (गणित) एफ और जी को पेश करके भी सामान्यीकृत किया जा सकता है। ओ नोटेशन का उपयोग काफी सामान्य स्थानों में यौगिक और भिन्नता को परिभाषित करने के लिए किया जा सकता है, और कार्यों की (स्पर्शोन्मुख) समतुल्यता को भी परिभाषित करने के लिए किया जा सकता है, जो कि तुल्यता संबंध है और संबंध f की तुलना में अधिक प्रतिबंधात्मक धारणा है, ऊपर से Θ(g) है। (यदि एफ और जी सकारात्मक वास्तविक मूल्य वाले फ़ंक्शन हैं तो यह लिम एफ/जी = 1 तक कम हो जाता है।) उदाहरण के लिए, 2x Θ(x) है, लेकिन 2x − x ओ(एक्स) नहीं है। इतिहास (बाचमन-लैंडौ, हार्डी, और विनोग्राडोव नोटेशन)प्रतीक O को पहली बार संख्या सिद्धांतकार पॉल बैचमैन ने 1894 में अपनी पुस्तक एनालिटिशे ज़हलेनथियोरी (विश्लेषणात्मक संख्या सिद्धांत) के दूसरे खंड में पेश किया था।[1] संख्या सिद्धांतकार एडमंड लैंडौ ने इसे अपनाया, और इस प्रकार 1909 में अंकन ओ को पेश करने के लिए प्रेरित हुए;[2] इसलिए दोनों को अब लैंडौ प्रतीक कहा जाता है। इन नोटेशनों का उपयोग 1950 के दशक के दौरान स्पर्शोन्मुख विश्लेषण के लिए अनुप्रयुक्त गणित में किया गया था।[34] प्रतीक (इस अर्थ में ओ का कोई मतलब नहीं है) 1914 में हार्डी और लिटिलवुड द्वारा पेश किया गया था।[19]हार्डी और लिटिलवुड ने भी 1916 में प्रतीकों की शुरुआत की (दाएं) और ( बाएं ),[20] आधुनिक प्रतीकों के अग्रदूत (एक छोटे से ओ से छोटा नहीं है) और (के छोटे से से बड़ा नहीं है). इस प्रकार ओमेगा प्रतीकों (उनके मूल अर्थ के साथ) को कभी-कभी लैंडौ प्रतीकों के रूप में भी जाना जाता है। यह संकेतन कम से कम 1950 के दशक से संख्या सिद्धांत में इसका आमतौर पर उपयोग किया जाने लगा।[35] 1970 के दशक में बिग ओ को डोनाल्ड नुथ द्वारा कंप्यूटर विज्ञान में लोकप्रिय बनाया गया, जिन्होंने संबंधित थीटा नोटेशन की शुरुआत की, और ओमेगा नोटेशन के लिए अलग परिभाषा प्रस्तावित की।[24] लैंडौ ने कभी भी बड़े थीटा और छोटे ओमेगा प्रतीकों का उपयोग नहीं किया। हार्डी के प्रतीक थे (आधुनिक ओ अंकन के संदर्भ में)
(हालांकि हार्डी ने कभी भी नोटेशन को परिभाषित या उपयोग नहीं किया , और न , जैसा कि कभी-कभी रिपोर्ट किया गया है)। हार्डी ने प्रतीकों का परिचय दिया और (साथ ही कुछ अन्य प्रतीकों) को उनके 1910 के ट्रैक्ट ऑर्डर्स ऑफ इन्फिनिटी में प्रकाशित किया गया था, और उनका उपयोग केवल तीन पत्रों (1910-1913) में किया गया था। अपने लगभग 400 शेष पत्रों और पुस्तकों में उन्होंने लगातार लैंडौ प्रतीकों ओ और ओ का उपयोग किया। हार्डी के नोटेशन का अब उपयोग नहीं किया जाता है। दूसरी ओर, 1930 के दशक में,[36] रूसी संख्या सिद्धांतकार इवान मतवेयेविच विनोग्रादोव ने अपना अंकन प्रस्तुत किया, जिसका उपयोग संख्या सिद्धांत के बजाय तेजी से किया जा रहा है अंकन. अपने पास और अक्सर दोनों नोटेशन का उपयोग ही पेपर में किया जाता है। बिग-ओ मूल रूप से ऑर्डर ऑफ (ऑर्डनंग, बैचमैन 1894) को दर्शाता है, और इस प्रकार यह लैटिन अक्षर है। न तो बैचमैन और न ही लैंडौ ने कभी इसे ऑमिक्रॉन कहा। इस प्रतीक को बहुत बाद में (1976) नुथ ने बड़े ओमीक्रॉन के रूप में देखा,[24]संभवतः प्रतीक ओमेगा की उनकी परिभाषा के संदर्भ में। अंक 0 का प्रयोग नहीं किया जाना चाहिए. यह भी देखें
सन्दर्भ और नोट्स
अग्रिम पठन
बाहरी संबंधThe Wikibook Data Structures has a page on the topic of: Big-O Notation Wikiversity solved a MyOpenMath problem using Big-O Notation
|