जवाबों:
एफ f ओ (जी) कहते हैं, अनिवार्य रूप से
के लिए कम से कम एक एक निरंतर की पसंद कश्मीर > 0, आप एक निरंतर पा सकते हैं एक ऐसी है कि असमानता 0 <= f (x) <= किलो (x) सभी एक्स के लिए रखती है>।
ध्यान दें कि O (g) उन सभी कार्यों का समूह है, जिसके लिए यह स्थिति है।
एफ f ओ (जी) कहते हैं, अनिवार्य रूप से
के लिए हर एक निरंतर की पसंद कश्मीर > 0, आप एक निरंतर पा सकते हैं एक ऐसी है कि असमानता 0 <= f (x) <किलो (x) सभी एक्स के लिए रखती है>।
एक बार फिर, ध्यान दें कि ओ (जी) एक सेट है।
बिग-ओ में, केवल यह आवश्यक है कि आप एक विशेष गुणक k खोजें , जिसके लिए असमानता कुछ न्यूनतम x से परे हो ।
लिटिल-ओ में, यह होना चाहिए है कि वहाँ एक न्यूनतम एक्स जिसके बाद असमानता कितनी भी छोटी क्यों आप कर कोई बात नहीं मानती है कश्मीर , जब तक कि यह नकारात्मक या शून्य नहीं है।
ये दोनों ऊपरी सीमा का वर्णन करते हैं, हालांकि कुछ प्रति-सहज रूप से, लिटिल-ओ मजबूत बयान है। यदि च if ओ (छ) की तुलना में च if o (छ) है तो च और जी की वृद्धि दर के बीच एक बहुत बड़ा अंतर है।
असमानता का एक चित्रण यह है: f f O (f) सत्य है, लेकिन f (o (f) गलत है। इसलिए, बिग-ओ को "एफ g ओ (जी) के रूप में पढ़ा जा सकता है, जिसका मतलब है कि एफ की एसिम्प्टोटिक ग्रोथ जी के मुकाबले तेज नहीं है", जबकि "एफ (ओ (जी) का मतलब है कि एफ की एसिम्प्टोटिक ग्रोथ जी के लिए सख्ती से धीमी है"। यह <=
बनाम की तरह है <
।
विशेष रूप से, यदि g (x) का मान f (x) के मान का एक स्थिर गुणक है, तो f is O (g) सत्य है। यही कारण है कि जब आप बड़े-ओ संकेतन के साथ काम कर रहे हैं तो आप स्थिरांक छोड़ सकते हैं।
हालाँकि, f (o (g) के सत्य होने के लिए, तब g को अपने सूत्र में x की एक उच्च शक्ति को शामिल करना चाहिए , और इसलिए f (x) और g (x) के बीच सापेक्ष पृथक्करण वास्तव में बड़ा होना चाहिए क्योंकि x बड़ा हो जाता है।
विशुद्ध रूप से गणित के उदाहरणों का उपयोग करने के लिए (एल्गोरिदम का उल्लेख करने के बजाय):
बिग-ओ के लिए निम्नलिखित सही हैं, लेकिन यदि आप थोड़ा-ओ का उपयोग करते हैं तो यह सच नहीं होगा:
छोटे-ओ के लिए निम्नलिखित सत्य हैं:
ध्यान दें कि यदि f (o (g) है, तो इसका मतलब f g O (g) है। उदाहरण के लिए x eg ² o (x³) तो यह भी सत्य है कि x∈ ³ O (x³), (फिर, O as <=
और o के रूप में सोचें <
)
a
वहाँ के लिए यह नहीं k
है: ...", यह है "के लिए हर k
वहाँ एक है a
कि: ..."
बिग-ओ को थोड़ा-ओ- ≤
जैसा करना है <
। बिग-ओ एक समावेशी ऊपरी बाउंड है, जबकि लिटिल-ओ एक सख्त अपर बाउंड है।
उदाहरण के लिए, कार्य f(n) = 3n
है:
O(n²)
, o(n²)
औरO(n)
O(lg n)
, o(lg n)
याo(n)
एनालॉग रूप से, संख्या 1
है:
≤ 2
, < 2
और≤ 1
≤ 0
, < 0
या< 1
सामान्य विचार दिखाते हुए यहां एक तालिका दी गई है:
(नोट: तालिका एक अच्छी मार्गदर्शिका है लेकिन इसकी सीमा परिभाषा सामान्य सीमा के बजाय बेहतर सीमा के संदर्भ में होनी चाहिए । उदाहरण के लिए, 3 + (n mod 2)
3 और 4 के बीच हमेशा के लिए दोलन। यह O(1)
एक सामान्य सीमा नहीं होने के बावजूद है, क्योंकि यह अभी भी है। a lim sup
: 4.)
मैं यह याद रखने की सलाह देता हूं कि बिग-ओ नोटेशन कैसे एसिम्प्टोटिक तुलनाओं में परिवर्तित होता है। तुलना याद रखना आसान है, लेकिन कम लचीला है क्योंकि आप n O (1) = P जैसी चीजें नहीं कह सकते हैं ।
मुझे लगता है कि जब मैं वैचारिक रूप से कुछ समझ नहीं सकता, तो यह सोचने के लिए कि एक्स का उपयोग क्यों करेगा एक्स को समझने में मददगार है (यह कहने के लिए कि आपने कोशिश नहीं की है, मैं सिर्फ मंच सेट कर रहा हूं।)
[सामान आप जानते हैं] एल्गोरिदम को वर्गीकृत करने का एक सामान्य तरीका रनटाइम द्वारा है, और एक एल्गोरिथ्म की बड़ी-ओह जटिलता का हवाला देकर, आप एक बहुत अच्छा अनुमान लगा सकते हैं जिसमें से एक "बेहतर" है - जो भी "सबसे छोटा" फ़ंक्शन है ओ में! यहां तक कि वास्तविक दुनिया में, O (N) O (N,) की तुलना में "बेहतर" है, सुपर-विशाल स्थिरांक और इसी तरह की मूर्खतापूर्ण चीजों को रोकते हैं। [/ सामान जो आप जानते हैं]
मान लीजिए कि कुछ एल्गोरिथ्म हैं जो O (N) में चलते हैं। बहुत अच्छा, हुह? लेकिन चलो तुम कहते हो (आप प्रतिभाशाली व्यक्ति हैं, तो आप) ने एक एल्गोरिथ्म के साथ कि हे (में रन आ एन / loglogloglogN )। वाह! यह तेज है! लेकिन आपको लगता है कि जब आप अपनी थीसिस लिख रहे हैं, तब आप बार-बार मूर्खतापूर्ण लेखन करेंगे। तो आप इसे एक बार लिखते हैं, और आप कह सकते हैं "इस पत्र में, मैंने साबित किया है कि एल्गोरिथ्म एक्स, पहले से समय ओ (एन) में गणना योग्य है, वास्तव में ओ (एन) में गणना योग्य है।"
इस प्रकार, हर कोई जानता है कि आपका एल्गोरिथ्म तेज है --- कितना अस्पष्ट है, लेकिन वे इसके तेज को जानते हैं। सैद्धांतिक रूप से। :)