2 ^ वर्गर्ट (एन) की समय जटिलता


11

मैं एक एल्गोरिथ्म प्रश्न हल कर रहा हूं और मेरा विश्लेषण यह है कि यह O (2 ^ sqrt (n)) पर चलेगा। कितना बड़ा है? क्या यह O (2 ^ n) के बराबर है? क्या यह अभी भी गैर-बहुपद समय है?


3
कृपया नीचे दिए गए प्रश्न पर टिप्पणी करने के लिए टिप्पणी करें। धन्यवाद!
गारा

4
ईमानदारी से, मुझे संदेह है कि लोग इसे एक अत्यंत तुच्छ प्रश्न के लिए गलत समझ रहे हैं, लेकिन यह मेरे लिए तुरंत स्पष्ट नहीं है कि इसे कैसे साबित किया जाए, इसलिए मैं एक उत्तर लिखूंगा और देखूंगा कि क्या लोगों के दिमाग में बदलाव आता है।
Ixrec

3
विकिपीडिया लेख के अनुसार उप-घातीय समय, दूसरी परिभाषा, (अस्वीकरण: मैंने नीचा नहीं दिखाया; और मुझे इस विषय पर पर्याप्त जानकारी नहीं है कि यह कहना सही है या नहीं।)
१ '

1
महान! Subexponential समय: "कुछ एल्गोरिथ्म के चलने का समय किसी भी बहुपद की तुलना में तेजी से बढ़ सकता है लेकिन अभी भी एक घातीय की तुलना में काफी छोटा है"। यह निश्चित रूप से मेरे प्रश्न का उत्तर देता है और बिग ओ विश्लेषण पर मेरे ज्ञान का विस्तार करता है। बहुत बहुत धन्यवाद
Gaara

1
यह ओ (2 ^ n) से कम रास्ता है, खासकर बड़ी संख्या के लिए। 10 000 तत्वों का एक संग्रह होने का एक उदाहरण लें। 2 ^ 10000 लगभग 3000 अंकों के साथ एक संख्या है, कि इस पर एक O (2 ^ n) ऑपरेशन करने में कितने चक्र लगेंगे। O (2 ^ sqrt (n)) के साथ आप 30 अंकों के साथ एक नंबर पर हैं। अंतर वर्गर्ट समाधान के पक्ष में बड़ी संख्या के लिए बहुत बड़ा है (1 सैन्य तत्वों के लिए जो (300 000 अंकों के साथ संख्या) * सीपीयू चक्र बनाम (300 अंकों के साथ संख्या) * सीपीयू चक्र)।
एंडी

जवाबों:


16

यह एक दिलचस्प सवाल है। सौभाग्य से, एक बार जब आप इसे हल करना जानते हैं, तो यह विशेष रूप से कठिन नहीं है।

कार्यों के लिए : एनआर + और : एनआर + , हम हे ( ) यदि और केवल यदि लिम sup n → ∞ ( एन ) / जी ( एन ) ∈ आर

एक समारोह : एनआर + एक निरंतर वहां मौजूद सबसे बहुपद विकास में यदि और केवल यदि है कश्मीरएन ऐसी है कि हे ( एनn कश्मीर )। आइए काम मनमाना लेकिन तय करने के लिए इस बाहर कश्मीरएन

lim sup n( 2 ( n 1/2 ) / n k =
lim nn 2 ( n 1/2 ) / n k =
lim nn e log (2) n 1/2 / e log ( n ) k =
lim nlog e log (2) n 1/2 - log ( n ) k = nR

पहली समानता सच है क्योंकि दोनों, नामांकित और भाजक, अखंड रूप से स्थिर कार्य कर रहे हैं। दूसरा समानता पहचान x y = e लॉग ( x ) y का उपयोग करता है । सीमा परिमित नहीं है क्योंकि अंतिम अभिव्यक्ति में प्रतिपादक ऊपर से बंधा हुआ नहीं है। एक औपचारिक प्रमाण दिए बिना, यह माना जा सकता है कि n 1/2 asymptotically लॉग ( n ) पर हावी है। इसलिए, विचाराधीन फ़ंक्शन बहुपद विकास से अधिक है।

हालांकि, इसकी वृद्धि सख्ती से घातीय की तुलना में कम है, जहां घातांक को परिभाषित किया गया है (मेरे द्वारा, इस उद्देश्य के लिए) के रूप में ओ> ( n ( 2 c n ) के लिए c > 0. यह और भी सीधा है।

lim sup nc 2 c n / 2 ( n 1/2 ) = lim n → → 2 c n - n 1/2 = ∞ ∞ R

किसी निश्चित c > 0. के लिए, इसलिए, बहुपद और घातीय के बीच फ़ंक्शन की जटिलता कहीं न कहीं सही है।


6

कितना बड़ा है? ठीक है, O (2 ^ sqrt (n)) यह कितना बड़ा है :-(

इसका अर्थ क्या है, इसका अंदाजा लगाने के लिए, आपके एल्गोरिदम की कल्पना सिर्फ O (2 ^ sqrt (n)) नहीं होगी, लेकिन यह वास्तव में आपके कंप्यूटर पर ठीक 2 ^ sqrt (n) नैनोसेकंड लेता है:

n = 100: 2 ^ 10 = 1024 नैनोसेकंड। बिल्कुल समय नहीं। n = 1000: 2 ^ 31.xxx = 2 बिलियन नैनोसेकंड। दो सेकंड, यह ध्यान देने योग्य है। n = 10,000: 2 ^ 100 ^ 10 ^ 30 नैनोसेकेंड = 10 ^ 21 सेकंड = 30 खरब वर्ष।

यह 2 ^ n नैनोसेकंड से बहुत बेहतर है, जहां n = 100 में 30 ट्रिलियन वर्ष लगेंगे, लेकिन फिर भी समस्याओं का आकार जिसे आप हल कर सकते हैं, काफी सीमित है। यदि आप एक समस्या को "हल करने योग्य" मानते हैं यदि आपका कंप्यूटर इसे एक सप्ताह में हल कर सकता है, तो यह लगभग 6 x 10 ^ 14 नैनोसेकंड है, जो n = 2,400 के बारे में है। दूसरी ओर, n = 400 तक एक मिलीसेकंड में हल किया जा सकता है।

(व्यवहार में, n = 10,000 दोनों O (2 ^ sqrt (n)) और O (2 ^ n) के लिए बिल्कुल समान समय लगता है: इसके लिए प्रतीक्षा करने के लिए बहुत लंबा।)

यह किसी भी बहुपद से अधिक है। N ^ 1000 सेकंड के लिए एक और एल्गोरिथ्म लें। जो n = 2 के लिए व्यावहारिक रूप से असाध्य है। यह एल्गोरिथ्म लगभग 885 मिलियन तक n लंबा है। लेकिन वास्तव में, कौन परवाह करता है? उस समय दोनों एल्गोरिदम लेने वाले वर्षों की संख्या 9,000 अंकों की संख्या है।

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