एन * लॉग एन और एन / लॉग एन बहुपद चल रहा समय के खिलाफ


14

मैं समझता हूँ कि से अधिक तेज़ है और की तुलना में धीमी है । मेरे लिए यह समझना मुश्किल है कि वास्तव में और से जहां ।Θ(n)Θ(nलॉगn)Θ(n/लॉगn)Θ(nलॉगn)Θ(n/लॉगn)Θ(n)0<<1

उदाहरण के लिए, हम बनाम याΘ(n/लॉगn)Θ(n2/3)Θ(n1/3)

मैं ऐसे मामलों में आगे बढ़ने की दिशा में कुछ निर्देश देना चाहूंगा। धन्यवाद।

जवाबों:


3

यदि आप सिर्फ एक-दो ग्राफ खींचते हैं, तो आप अच्छे आकार में होंगे। वुल्फराम अल्फा इस प्रकार की जांच के लिए एक महान संसाधन है:

समीकरण

ग्राफ़

इस लिंक द्वारा उत्पन्न । ध्यान दें कि ग्राफ़ में, लॉग (x) प्राकृतिक लॉगरिथम है, यही कारण है कि एक ग्राफ़ का समीकरण थोड़ा मज़ेदार लगता है।



राफेल के साथ सहमत होने के अलावा, यह चित्र बहुत बेहतर विचार देगा , एक बड़ी रेंज को चुनने से दूसरा फ़ंक्शन गायब हो सकता है जो भ्रामक हो सकता है।
प्रेत ०३

9

2 n का विलोम है। जिस तरह 2 n किसी भी बहुपत्नी n k की तुलना में तेजी से बढ़ता है,भले ही परिमित k कितना बड़ा हो, log n किसी भी बहुपदीय कार्यों n k की तुलना में धीमी गति से बढ़ेगा।लॉगn2n2nnलॉगnn चाहे वह कितना भी छोटा नॉनजरो, धनात्मक हो।

बनाम n k , k < 1 के लिए समान है: n / log n बनाम n / n 1 - kn/लॉगnn<1n/लॉगnn/n1-

as लिए बड़ा n , n / log n > n k के लिए k < 1 और बड़ा nn1k>lognnn/logn>nkk<1n


3

कई एल्गोरिदम के लिए, यह कभी-कभी होता है कि स्थिरांक अलग-अलग होते हैं, जिससे छोटे डेटा आकारों के लिए एक या दूसरे तेज या धीमे होते हैं, और एल्गोरिथम जटिलता के रूप में अच्छी तरह से क्रमबद्ध नहीं होते हैं।

कहा जाता है कि, अगर हम केवल सुपर-बड़े डेटा आकारों पर विचार करते हैं, अर्थात। जो एक अंततः जीत, फिर O(n^f)से तेज है O(n/log n)के लिए0 < f < 1

एल्गोरिथम जटिलता का एक बड़ा हिस्सा इस प्रकार जानते हुए भी कि, यह निर्धारित करने के एल्गोरिथ्म अंत में तेजी से होता है है O(n^f)की तुलना में तेजी है O(n/log n)के लिए0 < f < 1 , अक्सर पर्याप्त है।

एक सामान्य नियम है कि गुणा (या विभाजित) के द्वारा होता है log nअंत में से गुणा (या विभाजित) की तुलना में नगण्य हो जाएगा n^fकिसी के लिएf > 0

इसे और अधिक स्पष्ट रूप से दिखाने के लिए, आइए इस बात पर विचार करें कि क्या n बढ़ता है।

   n       n / log n         n^(1/2)
   2        n/ 1              ?
   4        n/ 2             n/ 2
   8        n/ 3              ?
  16        n/ 4             n/ 4
  64        n/ 6             n/ 8
 256        n/ 8             n/16
1024        n/10             n/32

नोटिस जो अधिक तेजी से घटता है? यह हैn^f स्तंभ है।

यहां तक ​​कि अगर f1 के करीब था, तो n^fकॉलम बस धीमा शुरू होगा, लेकिन एन डबल्स के रूप में, हर के परिवर्तन की दर में तेजी आती है , जबकि n/log nस्तंभ का भाजक एक स्थिर दर पर बदलता दिखाई देता है।

एक ग्राफ पर एक विशेष मामले की साजिश करते हैं

यहाँ छवि विवरण दर्ज करें यहाँ छवि विवरण दर्ज करें

स्रोत: वोल्फ्राम अल्फा

मैंने ऐसा चुना O(n^k)जो k1 (पर 0.9) के काफी करीब है । मैंने स्थिरांक का भी चयन किया ताकि शुरुआत O(n^k)धीमी हो। हालांकि, ध्यान दें कि यह अंत में "जीतता है", और इससे कम समय लेता है O(n/log n)


n / log n के बारे में क्या

यह एक टाइपो का एक सा था, कि मैं शुरुआत में क्या मतलब था। वैसे भी, मैंने एक और उपयुक्त ग्राफ जोड़ा, जो n^kअंततः तेजी से दिखाता है , भले ही स्थिरांक को ऐसे चुना जाता है कि यह शुरू में धीमा हो।

3

nfnn1fn2/3=n/n1/3

nlognvs.nn1f.

lognnεε>0


1

दौड़ते समय की तुलना करते समय, n के बड़े मूल्यों का उपयोग करके उनकी तुलना करना हमेशा मददगार होता है। मेरे लिए, यह अंतर्ज्ञान बनाने में मदद करता है कि कौन सा कार्य धीमा है

आपके मामले में n = 10 ^ 10 और a = .5 के बारे में सोचें

O(n/logn) = O(10^10/10) = O(10^9)
O(n^1/2) = O(10^10^.5) = O(10^5)

इसलिए, O (n ^ a) O (n / logn) से तेज है, जब 0 <a <1 मैंने केवल एक मान का उपयोग किया है, हालाँकि, आप फ़ंक्शन के बारे में अंतर्ज्ञान बनाने के लिए कई मानों का उपयोग कर सकते हैं


1
मत लिखो O(10^9), लेकिन अंतर्ज्ञान बनाने के लिए कुछ संख्याओं की कोशिश करने के बारे में मुख्य बिंदु सही है।

असफल। यह सही नहीं है। आपने एक एकल n स्थिरांक प्रतिस्थापित किया, जो पक्षपाती हो सकता है। यदि मैंने विभिन्न स्थिरांक चुने, तो मैं किसी भी एल्गोरिथ्म को बेहतर बना सकता था। बिग ओ नोटेशन का उपयोग उन रुझानों को स्थापित करने के लिए किया जाता है जो दीर्घकालिक में तेज होंगे। ऐसा करने के लिए, आपको यह दिखाना होगा कि यह बड़े n के लिए तेज़ है, भले ही यह n के छोटे होने पर धीमा हो।

धन्यवाद। कई मूल्यों को जोड़ा और बड़ी संख्या पर विचार करने के लिए

यह ध्यान दिया जाना चाहिए कि सिर्फ इसलिए कि f (a)> g (a) कुछ स्थिर a के लिए, जरूरी नहीं कि O (f (x))> O (g (x)) हो। यह अंतर्ज्ञान का निर्माण करने के लिए उपयोगी है, लेकिन एक कठोर प्रमाण की रचना करने के लिए अपर्याप्त है। यह दिखाने के लिए कि यह रिश्ता धारण करता है, आपको इसे केवल एक बड़े n के लिए नहीं, बल्कि सभी बड़े n के लिए सही होना चाहिए। इसी तरह, आप इसे सकारात्मक डिग्री के सभी बहुपद के लिए सही दिखाना होगा <1.

1

जी

nα1(लॉगn)α2(लॉगलॉगn)α3nβ1(लॉगn)β2(लॉगलॉगn)β3(α1,α2,α3)<(β1,β2,β3)

(2,10)<(3,5)(2,10)>(2,5)

आपके उदाहरण के लिए लागू:

हे(n/लॉगn)(1,-1,0)

हे(n2/3)(2/3,0,0)

हे(n1/3)(1/3,0,0)

(1/3,0,0)<(2/3,0,0)<(1,-1,0)हे(n1/3)हे(n2/3)हे(n/लॉगn)

आप कह सकते हैं: लॉग की एन डोमिनिटी की शक्तियां, जो लॉग लॉग की शक्तियों पर हावी हैं।

स्रोत: ठोस गणित, पी। 441

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.