पूर्णांक की एक बड़ी शक्ति के बिट्स की संख्या की गणना


10

द्विआधारी प्रतिनिधित्व में दो पूर्णांक एक्स और को देखते हुए n, के बिट-आकार की गणना करने की जटिलता क्या है ?एक्सn

ऐसा करने का एक तरीका पर्याप्त सटीकता के साथ एक अनुमान की गणना करके की गणना करना है । ऐसा लगता है कि कंप्यूटिंग के साथ precisions के टुकड़े में किया जा सकता जहां समय की लंबाई के दो पूर्णांकों का उत्पाद की गणना करने के लिए आवश्यक है । इस पैदावार एक (विशेष रूप से आसान नहीं) जटिलता के एल्गोरिथ्म लगभग यदि एक दोनों की bitsize पर बाध्य है और (अगर मैं कोई भूल हो गई है)।1+लॉग2(एक्सn)=1+nलॉग2(एक्स)लॉग2(एक्स)लॉग2(एक्स)हे(()लॉग)()O(slog2s)sxn

क्या हम को हरा सकते हैं, जहां का आकार और (उस स्थिति में जहां उनका तुलनीय आकार है)? क्या इस जटिलता या बेहतर को प्राप्त करने के लिए एक सरल एल्गोरिथ्म है?O(slog2(s))sxn

नोट: मैं ट्यूरिंग मशीनों जैसे एक सैद्धांतिक मॉडल में जटिलता में दिलचस्पी रखता हूं।



@vzn: मुझे नहीं लगता कि यह उपयोगी है ...
ब्रूनो

क्यों नहीं? यह सवाल डायसॉन अनुमान पर एल्गोरिथम के हमलों की याद दिलाता है जैसे कि 1 , 2
vzn

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

जवाबों:


1

[संपादित करें] जैसा कि सुझाव दिया गया है, मैं और अधिक विवरण देने के लिए अपने उत्तर को संपादित करता हूं।

मेरे दूसरे प्रश्न का उत्तर नहीं है :

प्रस्ताव। सटीक k तक कम्प्यूटिंग x 2 k के बिट-साइज़ की गणना करने के लिए कम से कम उतना ही कठिन है ।log(x)kx2k

सबूत। चलो एक पूर्णांक y के बिट आकार को निरूपित करें । सबसे पहले सूचना है कि ग़ैर-ऋणात्मक पूर्णांक के लिए y , बिट आकार y है 1 + लॉग y |y|yyy1+logy

इस प्रकार, । अब 2 कश्मीर लॉग ( एक्स ) है लॉग ( एक्स ) स्थानांतरित कर दिया कश्मीर बाईं ओर पदों। इस प्रकार एक गणना कर सकता है लॉग ( एक्स ) परिशुद्धता के लिए कश्मीर बस को घटा कर 1 बिट आकार के लिए एक्स 2 कश्मीर और परिणाम स्थानांतरण कश्मीर सही करने के लिए पदों।|x2k|=1+2klogx2klog(x)log(x)log(x)1एक्स2


1
क्यों में बिट्स की संख्या है की गणना करने के लिए सक्षम लॉग x करने के लिए k परिशुद्धता के टुकड़े? क्या आपकी कमी वास्तव में काम करती है? क्या होगा यदि विशेष मामला जहां n = 2 k , n (गैर-शक्तियां-दो) के अन्य सभी संभावित मूल्यों की तुलना में बहुत आसान / कठिन था ? क्या आपके पास उस संभावना को खारिज करने का एक तरीका है? x2klogxkn=2kn
DW

@DW: vzn की टिप्पणी के बाद, मैं इस सवाल पर वापस आता हूं। मेरे सबूत इस प्रकार है: एक पूर्णांक के बिट्स की संख्या है 1 + लॉग y । इस प्रकार, में बिट्स की संख्या एक्स 2 कश्मीर है 1 + 2 कश्मीर लॉग एक्स । इसके अलावा, 2 कश्मीर लॉग एक्स के रूप में ही है लॉग एक्स लेकिन स्थानांतरित कर दिया कश्मीर बाईं ओर पदों। इस प्रकार, at 2 k लॉग x you आपको (कम से कम) k पहले बिट्स देता हैy1+logyx2k1+2klogx2klogxlogxk2klogxk । इस प्रकार, यदि आप x 2 k के बिट्स की संख्या की गणना कर सकते हैं, तोपरिणाम को 1 घटाकर, आप लॉग x के पहले k बिट्सप्राप्त करते हैं। इसका कोई मतलब भी है क्या? logxx2k1klogx
ब्रूनो

हाँ, यह मेरे लिए अधिक समझ में आता है! विशेष रूप से जब से आप सिर्फ कठोरता दिखाने की कोशिश कर रहे हैं। क्या मैं आपको इस विस्तृत विवरण के साथ अपना उत्तर अपडेट करने के लिए प्रोत्साहित कर सकता हूँ? इस पर वापस आने और अपने स्वयं के प्रश्न के उत्तर का दस्तावेजीकरण करने के लिए धन्यवाद।
डीडब्ल्यू
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.