मुझे लगता है कि इस तरह के शब्दों का प्रयोग ढेर अतिप्रवाह पर उत्तर देख रहा हूँ, लेकिन मैं नहीं जानता कि वे क्या मतलब है। उन्हें क्या कहा जाता है और क्या कोई अच्छा संसाधन है जो उन्हें सरल शब्दों में समझा सकता है?क्या हे कहाँ खोजने के लिए (एन^2) और हे (एन) आदि मतलब है?
उत्तर
अंकन Big O notation कहा जाता है, और एल्गोरिथम जटिलता को व्यक्त करने के लिए एक आशुलिपि के रूप में प्रयोग किया जाता है यही कारण है कि (मूल रूप से कितनी देर तक एक दिया algorithim इनपुट आकार के रूप में चलाने के लिए ले जाएगा (एन) बढ़ता है)
सामान्य शब्दों में, आप करेंगे algorithims के निम्नलिखित प्रमुख प्रकार में चलाएँ:
- हे (1) - लगातार - समय की लंबाई है कि इस algorithim पूरा करने के लिए ले जाता है आइटम है कि algorithim कार्रवाई करने के लिए है की संख्या पर निर्भर नहीं है।
- ओ (लॉग एन) - लॉगरिदमिक - इस एल्गोरिदम को पूरा करने के लिए समय की लंबाई एल्गोरिदम को संसाधित करने वाली वस्तुओं की संख्या पर निर्भर करती है। चूंकि इनपुट आकार बड़ा हो जाता है, प्रत्येक नए इनपुट के लिए कम समय की आवश्यकता होती है।
- ओ (एन) - रैखिक - इस एल्गोरिदम को पूरा करने के लिए समय की लंबाई सीधे एल्गोरिदम को संसाधित करने वाली वस्तुओं की संख्या पर निर्भर करती है। जैसे-जैसे इनपुट आकार बढ़ता है, उतना ही समय बराबर मात्रा में बढ़ता है।
- ओ (एन^2) - बहुपद - जैसे इनपुट आकार बढ़ता है, इनपुट को संसाधित करने में लगने वाला समय बड़ी और बड़ी राशि से बढ़ता है - जिसका अर्थ है कि बड़े इनपुट आकार को हल करना मुश्किल हो जाता है।
- हे (2^n) - घातीय - समस्याओं का सबसे जटिल प्रकार के। एक चरम डिग्री के लिए इनपुट आकार के आधार पर बढ़ने की प्रक्रिया।
आम तौर पर आप इसका उपयोग करके यह देखकर एल्गोरिदम की जटिलता का मोटा गेज प्राप्त कर सकते हैं।
- एक चर बुलाया राशि
- प्रारंभ एक चर मैं बुलाया प्रारंभ
- के लिए:
function sum(int[] x) { int sum = 0; for (int i = 0; i < x.length; i++) { sum += x[i]; } return sum; }
कुछ चीजें है कि यहाँ किया जाना है: उदाहरण के लिए, निम्न विधि को देख i का प्रत्येक पुनरावृत्ति: एक्स [i] योग जोड़ने के लिए, 1 में जोड़ें, जांचें कि मैं x से कम है या नहीं।लंबाई
- वापसी राशि
कुछ कार्य है कि लगातार समय यहाँ (पहले दो और अंतिम) में चला है, के बाद से एक्स के आकार को प्रभावित नहीं करेगा वे कितने समय तक चलाने के लिए ले लो। साथ ही, कुछ ऑपरेशन हैं जो रैखिक समय में चलते हैं (क्योंकि वे x में प्रत्येक प्रविष्टि के लिए एक बार चलाए जाते हैं)। बिग ओ अंकन के साथ, algorithim सबसे जटिल करने के लिए सरल है, इसलिए इस राशि algorithim में काम कर हे (एन)
रयान, नंबर 3 के लिए आपका मतलब ओ (एन) है। –
इसे पकड़ने के लिए धन्यवाद :) –
मुझे लगता है कि ओ (एन * एलएन (एन)) भी भरोसेमंद है, क्योंकि यह कई सॉर्टिंग एल्गोरिदम की जटिलता है –
पढ़ें के बारे में Computational Complexity पहले, तो कुछ किताबें Introduction to Algorithms तरह एल्गोरिदम के बारे में प्रयास करें।
विकिपीडिया पृष्ठ से:
बिग ओ अंकन उनके विकास दर के अनुसार कार्यों की विशेषता
आपको जानकारी और गहराई में जाने से काम नहीं चलेगा नहीं करने के लिए, तो आप कर सकते हैं के द्वारा बहुत बार अनुमानित एल्गोरिथ्म जटिलता अपने कोड analizing:
void simpleFunction(arg); // O(1) - if number of function instructions is constant and don't depend on number of input size
for (int i=0;i<n;i++) {simpleFunction(element[i]);} // O(n)
for (int i=0;i<n;i++) { // this one runs O(n^2)
for (int j=0;j<n;j++) {
simpleFunction(element[i]);
}
}
for (int i=0;i<n;i*=2) { // O(lgn)
simpleFunction(element[i]);
}
कभी कभी
यह है तो सफलता में समारोह/एल्गोरिथ्म बड़ा हे संकेतन जटिलता अनुमान लगाने के लिए आसान नहीं एच मामले amortized analysis का उपयोग किया जाता है। उपरोक्त कोड केवल quickstarter के रूप में सेवा करनी चाहिए।
यह Big O notation कहा जाता है और एल्गोरिदम की जटिलता यों किया जाता है।
हे (1) का मतलब है एल्गोरिथ्म कोई फर्क नहीं पड़ता वहाँ कार्रवाई करने के लिए है कितना डेटा एक निरंतर समय लगता है।
हे (एन) एल्गोरिथ्म गति डेटा की मात्रा के साथ एक रैखिक तरह से बढ़ता है का मतलब है।
और इतने पर ...
तो कम हे संकेतन में की घात n बेहतर अपने एल्गोरिथ्म समस्या को हल करने के लिए है। सर्वश्रेष्ठ मामला ओ (1) (एन = 0) है। लेकिन कई समस्याओं में एक अंतर्निहित जटिलता है ताकि आपको लगभग सभी मामलों में ऐसा आदर्श एल्गोरिदम नहीं मिलेगा।
जवाब अब तक अच्छे हैं। वेब खोज पर मुख्य शब्द "बिग ओ नोटेशन" है।
"कुछफॉर्मुला ओ (कभी-कभी)" के गणित के पीछे मूल विचार यह है कि, जैसे आपका चर अनंतता तक जाता है, "कभी-कभी" उस सूत्र का हिस्सा होता है जो प्रभुत्व करता है।
उदाहरण के लिए, मान लें कि आपके 0.05*x^3 + 300*x^2 + 200000000*x + 10
है। एक्स (x == 1 या x == 2) के बहुत कम आकार के लिए, 200000000*x
अब तक का सबसे बड़ा हिस्सा होगा। उस समय सूत्र का एक साजिश रैखिक दिखाई देगा। जैसा कि आप साथ जाते हैं, किसी बिंदु पर 300*x^2
हिस्सा बड़ा होगा। हालांकि, अगर आप भी बड़ा एक्स, बड़ा के रूप में के रूप में आप के लिए परवाह बनाने रखने के लिए, 0.05*x^3
हिस्सा सबसे बड़ा हो जाएगा, और अंत में पूरी तरह से सूत्र के अन्य भागों को भी पीछे छोड़ देगा। यही वह जगह है जहां यह एक ग्राफ से स्पष्ट हो जाता है जिसे आप एक क्यूबड फ़ंक्शन पर देख रहे हैं। तो हम कहेंगे कि सूत्र O(x^3)
है।
- 1. रोकथाम हे (एन) मध्यस्थ मॉडल वाली क्वेरी
- 2. Spoj ARRAYSUB: हे (एन) जटिलता दृष्टिकोण
- 3. दो नंबर जिसका अंतर में हे (एन) न्यूनतम समय
- 4. में हे (एन) एक सरणी में सभी मतभेदों को
- 5. फोरट्रान मैं/हे: बड़े रिकॉर्ड निर्दिष्ट आकार
- 6. फ्लेक्स: त्रुटि # 2038: फ़ाइल मैं/हे त्रुटि
- 7. कार्यकर्ता की सरल वर्णन और मैं/हे धागे
- 8. एसक्यूएल सर्वर 2008: मैं/हे प्रति डेटाबेस फ़ाइल समय
- 9. आई 18 एन सुरक्षित मतलब क्या है?
- 10. अगर 2 चेक पेड़ नोड्स हे में (पूर्वज/वंशज) से संबंधित हैं (1) पूर्व प्रसंस्करण
- 11. आप ओ (लॉग एन) और ओ (एन लॉग एन) के बीच अंतर कैसे देखते हैं?
- 12. बाल्टी सॉर्ट के लिए सबसे खराब केस जटिलता क्या है?
- 13. "के लिए (;;)" क्या मतलब है?
- 14. linq के बिग ओ क्या है। कहाँ?
- 15. मनमानी उप सरणी में सभी वस्तुओं का योग खोजने के लिए सबसे अच्छा एल्गोरिदम क्या है
- 16. क्या खोजने का कोई त्वरित तरीका है (एन -1)! एन द्वारा विभाजित है?
- 17. ओ (एन) संख्याओं के संग्रह के औसत को खोजने के लिए ओ (एन) एल्गोरिदम
- 18. ओ क्या करता है (लॉग (लॉग (एन))) - प्रतिस्पर्धी मतलब?
- 19. क्या है = = मतलब?
- 20. जावा मैं/हे: एक फ़ाइल सुनिश्चित करें किसी भी आर/डब्ल्यू आपरेशन
- 21. "$^एन" और "$ +" के बीच क्या अंतर है?
- 22. क्या एक विशिष्ट मूल तत्व एन स्तर को खोजने के लिए कोई jQuery चयनकर्ता/विधि है?
- 23. __vfptr के लिए `*` मतलब क्या है?
- 24. 'asmlinkage' संशोधक के लिए क्या मतलब है?
- 25. लिनक्स खोजने के लिए और
- 26. डेटा संरचना ओ (LGN) में मंझला और 2 सबसे छोटा तत्व निकालने के लिए
- 27. libev और libevent के बीच क्या अंतर है?
- 28. क्या कोई ओ (एन) पूर्णांक सॉर्टिंग एल्गोरिदम है?
- 29. कहाँ सी ++ 11 संदर्भ कागज/डिजिटल, और एक किताब संदर्भ खोजने के लिए
- 30. Aptana फ़ाइलें खोजने
मैं इसे एक सटीक डुप्लिकेट नहीं कहूंगा क्योंकि आप पूछ रहे हैं कि नोटेशन क्या कहा जाता है, लेकिन [बिग ओ के सादा अंग्रेजी स्पष्टीकरण] के उत्तर देखें [http://stackoverflow.com/questions/487258/ सादे अंग्रेज़ी-स्पष्टीकरण के- बड़े ओ)। –
संबंधित: http://stackoverflow.com/questions/107165, http://stackoverflow.com/questions/487258, एट अल। – Gumbo
यह वेबसाइट अद्भुत है। मुझे प्यार है कि मुझे इतनी जल्दी महान जवाब कैसे मिलते हैं! – adam0101