2010-06-12 14 views

उत्तर

32

दुनिया के हर व्यक्ति के साथ डेटाबेस की कल्पना करें। यह 6.7 अरब प्रविष्टियां है। ओ (लॉग एन) एक अनुक्रमित कॉलम (उदा। प्राथमिक कुंजी) पर एक लुकअप है। ओ (एन लॉग एन) पूरी आबादी को एक अनदेखा कॉलम पर क्रमबद्ध क्रम में वापस कर रहा है।

  • ओ (लॉग एन) उस वाक्य के पहले शब्द को पढ़ने से पहले समाप्त हो गया था।
  • O (n n लॉग इन करें) अभी भी गणना कर रहा है ...

एक और तरीका यह कल्पना करना:

log n n में अंकों की संख्या के लिए आनुपातिक है।

n log n एन गुना अधिक है।

एक बार बनाम एक बार लिखने के बाद 1000 नंबर लिखने का प्रयास करें। पहले ओ (लॉग एन) समय लेता है, दूसरा ओ (एन लॉग एन) समय लेता है।

अब 6700000000 के साथ फिर से प्रयास करें। इसे एक बार लिखना अभी भी छोटा है। अब इसे 6.7 अरब बार लिखने का प्रयास करें। भले ही आप प्रति सेकंड एक बार लिख सकें, आप समाप्त होने से पहले मर जाएंगे।

+2

+1 अच्छा उदाहरण कहकर मेरा "उन्हें एक साथ गुणा करना"। – tster

3

नहीं है, O(n log n) = O(n) * O(log n)

गणित में, जब आपके पास एक अभिव्यक्ति (यानी ई = एमसी^2), यदि कोई ऑपरेटर नहीं है, तो आप गुणा करते हैं।

आम तौर पर ओ (एन लॉग एन) को देखने का तरीका "कुछ ऐसा करें जो log n कंप्यूटेशंस n बार लेता है।"

आप एक एल्गोरिथ्म जो पहली सूची पर दोहराया था, तो एक द्विआधारी उस सूची की खोज (जो N + log N होगा) आप व्यक्त कर सकते हैं बस के रूप में O(n) कि क्योंकि nn के बड़े मूल्यों के लिए log n बौने किया

+0

'ओ (एन) * ओ (लॉग एन) 'का अर्थ क्या है? – mquander

+0

कक्षा ओ (एन) से एक फ़ंक्शन लेता है, और कक्षा ओ (लॉग n) से कोई अन्य फ़ंक्शन लेता है, परिणामी फ़ंक्शन कक्षा ओ (एन लॉग n) में होता है। ओ (एन) * ओ (लॉग एन) = ओ (एन लॉग एन) – Phil

+0

ओएस का मतलब है जिसका मतलब है "परिणाम" – Phil

21

तुम एक साजिश में यह कल्पना कर सकता है, उदाहरण के लिए here देखें:

enter image description here

+2

विज़ुअलाइज़ करने का सबसे अच्छा तरीका दृष्टि का उपयोग करना है। बहुत बढ़िया। –

+0

बहुत बढ़िया। इस संसाधन को इंगित करने के लिए धन्यवाद। मैंने हार्वर्ड के सीएस 50 पाठ्यक्रम के सप्ताह 3 में चर्चा की गई कम्प्यूटेशनल कॉम्प्लेक्सिटी के 4 सामान्य प्रकारों की साजिश करने के लिए वोल्फ्राम का इस्तेमाल किया। http://www.wolframalpha.com/input/?i=plot+log(n)+vs+n+vs+n%2Alog(n)+vs+n%5E2+from+1+to+10 https: //www.youtube.com/embed/IM9sHGlYV5A – squarecandy

1

एक (log n) साजिश बढ़ जाती है, लेकिन अवतल नीचे है, जिसका अर्थ है:

  • यह बढ़ जाती है जब n हो जाता है बड़ा
  • यह बढ़ने की दर घटता है जब n मिलता है s बड़ा

एक (n log n) साजिश बढ़ जाती है, और है (थोड़ा) अवतल ऊपर की ओर, जिसका अर्थ है:

  • यह बढ़ जाती है जब n हो जाता है बड़ा
  • यह (थोड़ा) बढ़ जाती है में वृद्धि की दर है जब n बड़ा हो जाता है
0

इस पर निर्भर करता है कि क्या आप n को कंक्रीट वीए के रूप में देखना चाहते हैं या नहीं लुए।

आप एक ठोस मूल्य होने के रूप में n कल्पना करने के लिए जाते हैं, और f(n) की इकाइयां हैं समय या निर्देश, तो O(log n) आकार n के दिए गए कार्य के लिए O(n log n) से n गुना तेजी से है। मेमोरी या स्पेस इकाइयों के लिए, O(log n)n आकार n के दिए गए कार्य के लिए छोटे से छोटा है। इस मामले में, आप कुछ ज्ञात n के लिए f(n) के कोडोमेन पर ध्यान केंद्रित कर रहे हैं। आप इस सवाल के जवाबों को देख रहे हैं कि कितना समय लगेगा या यह ऑपरेशन कितनी मेमोरी का उपभोग करेगा।

यदि आप किसी भी मान वाले पैरामीटर के रूप में n को विज़ुअलाइज़ करते हैं, तो O(log n)n गुना अधिक स्केलेबल है। O(log n)n आकार n के आकार के कई कार्यों को पूरा कर सकता है। इस मामले में, आप f(n) के डोमेन पर केंद्रित हैं। आप n कितने बड़े हो सकते हैं, या f(n) के कितने उदाहरण आप समानांतर में चला सकते हैं, इस बारे में प्रश्नों के उत्तर देख रहे हैं।

न तो परिप्रेक्ष्य दूसरे की तुलना में बेहतर है। एक विशिष्ट समस्या को हल करने के लिए दृष्टिकोण की तुलना करने के लिए पूर्व का उपयोग किया जा सकता है। उत्तरार्द्ध का उपयोग दिए गए दृष्टिकोण की व्यावहारिक सीमाओं की तुलना करने के लिए किया जा सकता है।

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^