(चूंकि यह एक लंबा जवाब है, सारांश के लिए बोलियां पढ़ें )
चलिए आपका उदाहरण लेते हैं और कदम-दर-कदम चलते हैं, जो हम कर रहे हैं उसके पीछे के उद्देश्य को समझते हुए। हम आपके कार्य और इसके बिग ओह संकेतन को खोजने के लक्ष्य से शुरू करते हैं:
f(n) = 6n+4
सबसे पहले, बिग ओह संकेतन बनने दें O(g(n))
जिसे हम खोजने की कोशिश कर रहे हैं f(n)
। बिग ओह की परिभाषा से, हमें एक सरलीकृत खोजने की जरूरत है g(n)
जहां कुछ स्थिरांक मौजूद हैं c
और n0
जहां c*g(n) >= f(n)
सभी n
की तुलना में अधिक के लिए सच है n0
।
पहले, चलो चुनते हैं g(n) = 6n + 4
(जो O(6n+4)
बिग ओह में उपजेंगे)। इस मामले में हम देखते हैं कि c = 1
और n0
बिग ओह की परिभाषा से गणितीय आवश्यकताओं को पूरा करेगा, क्योंकि g(n)
हमेशा बराबर होता है f(n)
:
c*g(n) >= f(n)
1*(6n + 4) >= 6n + 4 //True for all n's, so we don't need to pick an n0
इस बिंदु पर हम गणितीय आवश्यकताओं को पूरा कर चुके हैं। अगर हम रुक गएO(6n+4)
, तो यह स्पष्ट है कि यह लेखन से अधिक उपयोगी नहीं है f(n)
, इसलिए यह बिग ओह संकेतन के वास्तविक उद्देश्य को याद करेगा: एक एल्गोरिथ्म के सामान्य समय-जटिलता को समझने के लिए! इस प्रकार, चलो अगले चरण पर चलते हैं: सरलीकरण।
पहले, क्या हम 6n
बिग ओह से बाहर को सरल बना सकते हैं O(4)
? नहीं! (यदि वे नहीं समझते हैं तो पाठक के लिए व्यायाम करें)
दूसरा, क्या हम 4
इतना आसान कर सकते हैं कि बिग ओह है O(6n)
? हाँ! उस मामले में g(n) = 6n
, इसलिए:
c*g(n) >= f(n)
c*6n >= 6n + 4
इस बिंदु पर, चलो चुनते c = 2
हैं तब से बाईं ओर तेजी से (12 से) बढ़ जाएगी, दाएं तरफ (6 से) के प्रत्येक वृद्धि के लिए n
।
2*6n >= 6n + 4
अब हमें एक सकारात्मक खोजने की जरूरत है n0
जहां उपरोक्त समीकरण n
उस मूल्य से अधिक सभी के लिए सत्य है । चूंकि हम पहले से ही जानते हैं कि बाईं ओर दाईं ओर से तेजी से बढ़ रहा है, हमें केवल एक सकारात्मक समाधान ढूंढना है। इस प्रकार, चूंकि n0 = 2
उपर्युक्त सत्य बनाता है, हम जानते हैं कि g(n)=6n
, या इसके O(6n)
लिए एक संभावित बिग ओह संकेतन है f(n)
।
अब, क्या हम 6
इतना आसान कर सकते हैं कि बिग ओह है O(n)
? हाँ! उस मामले में g(n) = n
, इसलिए:
c*g(n) >= f(n)
c*n >= 6n + 4
चलो c = 7
छोड़ दें क्योंकि बाएं से दाएं तेजी से बढ़ेगा।
7*n >= 6n + 4
हम देखते हैं कि उपरोक्त सभी n
से अधिक या बराबर के लिए सही होगा n0 = 4
। इस प्रकार, के O(n)
लिए एक संभावित बिग ओह संकेतन है f(n)
। क्या हम g(n)
अब और सरल कर सकते हैं? नहीं!
अंत में, हमने पाया है कि सबसे बड़ा बिग ओह नोटेशन f(n)
है O(n)
। हम इस सब से क्यों गुज़रे? क्योंकि अब हम जानते हैं कि f(n)
रैखिक है , क्योंकि यह बिग ओह संकेतन रैखिक जटिलता का है O(n)
। अच्छी बात यह है कि अब हम f(n)
अन्य एल्गोरिदम की समय-जटिलता की तुलना कर सकते हैं ! उदाहरण के लिए, अब हम जानते हैं कि f(n)
कार्यों के लिए तुलनीय समय-जटिलता की है h(n) = 123n + 72
, i(n) = n
, j(n) = .0002n + 1234
, आदि; क्योंकि एक ही सरलीकरण प्रक्रिया का उपयोग करके ऊपर उल्लिखित उन सभी का रैखिक समय-जटिलता है O(n)
।
मिठाई!!!