एक पूर्णांक तय होने पर पूर्णांक गुणा


35

आज्ञा देना निश्चित सकारात्मक पूर्णांक आकार बिट्स।An

इस पूर्णांक को पूर्व-संसाधित करने के लिए एक को उपयुक्त माना जाता है।

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

ध्यान दें कि हमारे पास पहले से ही एल्गोरिदम है। यहाँ प्रश्न यह है कि क्या हम कुछ भी चालाक द्वारा \ epsilon = 0 कर सकते हैं ?(max(n,m))1+ϵϵ=0


6
A को देखते हुए A, बस 2n प्रविष्टियों के साथ एक लुकअप टेबल का निर्माण करें । (जाहिर है यह वह नहीं है जो आप चाहते थे, लेकिन मुझे लगता है कि आपको अपनी आवश्यकताओं को और अधिक विशिष्ट बनाना चाहिए ...)
जुका सुकोएला

9
मुझे लगता है कि यह सवाल मानक बूलियन सर्किट मॉडल में सही समझ में आता है।
नोआम

4
क्या आप स्पष्ट ऊपरी और निचले सीमा, और उन सर्वोत्तम परिणामों को संक्षेप में बता सकते हैं जिनसे आप अवगत हैं? यह दर्शाता है कि आप इस समस्या के बारे में परवाह करते हैं और आपने इसके बारे में सोचा है, और यह आपकी समस्या के बारे में सोचने के लिए हर किसी को और अधिक प्रोत्साहन देता है।
रोबिन कोठारी

4
मुझे लगता है कि पूछने वाले का तात्पर्य यह है कि प्रीप्रोसेस किए गए हिस्से को केवल nO(1) स्थान लेना चाहिए। (मैट्रिक्स-वेक्टर बहु ​​के पास वह संपत्ति है।)
रयान विलियम्स

मैं जानना चाहूंगा कि आप क्या चाहते हैं; मुझे लगता है कि मैं इस पर अंतहीन मामलों से गुजर सकता हूं। यह मेरा पहला उत्तर है, इसलिए मैं विशेष रूप से आपको अधिक से अधिक जानकारी देने की कोशिश करने में प्रसन्न हूं। यदि आप चाहें, तो आप मुझे mgroff100@hotmail.com पर ईमेल कर सकते हैं, और मुझे आपके साथ काम करने में खुशी होगी।
मैट ग्रॉफ

जवाबों:


20

हालांकि यह हमेशा सबसे कुशल एल्गोरिथ्म नहीं होगा, इस सवाल का जोड़ श्रृंखलाओं के साथ बहुत करीबी रिश्ता है; कंप्यूटिंग के लिए किसी भी एल्गोरिथ्म जल्दी से इसके जंजीरों से की गणना के लिए एक एल्गोरिथ्म में तब्दील हो दोहराया अलावा द्वारा (प्रत्येक इसके अलावा, ज़ाहिर है, एक जा रहा आपरेशन)। कॉन्ट्रैरिएव, किसी भी लिए गणना करने के लिए एक त्वरित एल्गोरिथ्म कंप्यूटिंग लिए एक त्वरित एल्गोरिदम की ओर जाता है , लेकिन निश्चित रूप से इस एल्गोरिथ्म में जरूरी नहीं है कि इसके अलावा श्रृंखला का रूप हो; फिर भी, यह शुरू करने के लिए एक उत्कृष्ट जगह की तरह लगता है। पर एक नज़र डालें http://en.wikipedia.org/wiki/Addition_chain या खंड की जाँच करें। का 2Af(B)=ABO(n)ABBAअधिक विवरण के लिए कंप्यूटर प्रोग्रामिंग की कला


17

स्टीवन स्टैडनिक के विचार पर विस्तार करने के लिए, हम एक भोली एल्गोरिथ्म का निर्माण कर सकते हैं जो कि डिस्क्रेट फूरियर ट्रांसफॉर्म का उपयोग करके मैट्रिक्स गुणा से बेहतर करता है।

हम में संख्या की गिनती करते हैं । यदि आधे से कम बिट्स हैं, तो हम उनके पदों की लिंक की गई सूची बनाते हैं। गुणा करने के लिए, हम सूची में प्रत्येक स्थान पर छोड़ दिए गए शिफ्ट करते हैं (उस बिट द्वारा दर्शाया गया है जो गुणा करते हैं) और परिणाम जोड़ते हैं।AB

यदि आधे से अधिक बिट्स हैं, तो हम ऊपर की तरह ही करते हैं, लेकिन हम पदों की सूची को पॉप्युलेट करने के बजाय शून्य का उपयोग करते हैं। विचार यह है कि हम इस राशि को उस योग से घटाएंगे जो सभी लोगों द्वारा गुणा करके प्राप्त किया जाएगा। सभी का योग प्राप्त करने के लिए, हम में बिट्स की संख्या से को स्थानांतरित करते हैं और को इससे घटाते हैं । फिर हम लिंक की गई सूची से प्राप्त अपनी राशि को घटा सकते हैं।BAB

हम अनुभव कर सकते हैं कि भोली-लिंक्ड सूची एल्गोरिथ्म। इसके चलने का समय सबसे खराब स्थिति में है, लेकिन औसत मामले में है, जो छोटे के लिए DFT से तेज़ है।।O(n2)O(|B||A|2π)|A|

सूचियों के विचार का उपयोग करने के लिए, हम विभाजन और जीत का उपयोग करते हैं। हम को आधे में विभाजित करते हैं , और भोली एल्गोरिथ्म का उपयोग करके संबंधित सूचियों के आकार पाते हैं। यदि वे 5 से अधिक हैं, तो हम भोले एल्गोरिथ्म को फिर से 5 से अधिक हिस्सों तक कहते हैं, जब तक कि हम सभी हिस्सों को पांच से कम करने का प्रबंधन नहीं करते। (ऐसा इसलिए है क्योंकि हम इसे घटाकर 4 घटा सकते हैं)A

इससे भी बेहतर अभी भी, हम अपने डिवाइड और-विजेता एल्गोरिथ्म में सुधार करते हैं। हम ब्रांचिंग के सभी संभव संयोजनों के माध्यम से पुनरावृति करते हैं, लालच से सबसे अच्छा उठाते हैं। इस प्रीप्रोसेसिंग में वास्तविक गुणा के समान समय लगता है।

यदि हमें पूर्व-प्रसंस्करण के साथ असीम स्वतंत्रता की अनुमति है, तो हम सभी शाखाओं के लिए अनुकूलित डिवाइड-एंड-कॉनकोर एल्गोरिदम को बेहतर तरीके से हल करते हैं। यह सबसे खराब स्थिति में समय लेता है , लेकिन यह अतिरिक्त श्रृंखला विधियों द्वारा ~ इष्टतम होना चाहिए।O(2|A|)

मैं उपरोक्त एल्गोरिदम के लिए अधिक सटीक मूल्यों की गणना पर काम कर रहा हूं।


हाय मैट: क्या हैऔर? |A||B|
टी ....

|A|के आकार है , मूल रूप से में तत्वों की संख्या । यह आपके बराबर है , अर्थात । उसी के लिए। हालाँकि, यह सूत्र तब भी रखता है जब और लिए भिन्न होता है । AAn|A|n|B|nAB
मैट ग्रॉफ

17

एक स्थिरांक से गुणा नामक पेपर सबलाइनर ( PDF ) है, जो शिफ्ट / जोड़ संचालन के लिए एक एल्गोरिथ्म देता है , जहां का आकार स्थिर है ।O(nlogn)n

अनिवार्य रूप से, यह निरंतर में -बिट्स की खोज , शिफ्टिंग और संख्या को केवल स्थिरांक में उन बिट्स के लिए गुणा करने के लिए जोड़कर काम करता है (जैसे बाइनरी के लिए लंबी गुणा, जहां नीचे की संख्या में गुणा गुणन का मतलब है) शीर्ष को स्थानांतरित और जोड़ा नहीं जाता है, जबकि बिट का मतलब शीर्ष को स्थानांतरित और जोड़ा जाता है)। हालांकि यह अभी भी , क्योंकि स्थिरांक में -बिट हो सकती है।1101O(n)O(n) 1

कागज तब दोहरे आधार संख्या प्रणाली में निरंतर के संख्या प्रतिनिधित्व को बदलने की बात करता है, जहां जाहिरा तौर पर, गैर- वर्ग विरल होते हैं, यदि रूपांतरण सही तरीके से किया जाता है (यह एक अतिरेक संख्या प्रणाली है)। वे गणना करते हैं कि यह कितना विरल है; गैर-शून्य बिट की संख्या से कम करने के लिए बाध्य है , इस प्रकार आवश्यक अतिरिक्त परिवर्धन संख्या है। हालाँकि यह अभी भी वास्तविक संचालन है, इसके अलावा प्रत्येक लागत के अलावा (जहाँ का आकार है) स्थिरांक, और दूसरी संख्या का आकार है)।0O(n)O(nmlogn)O(m)nm

तो अपने प्रश्न का उत्तर देने के लिए, हाँ मैट्रिक्स-वेक्टर गुणा का एक समान परिणाम है, इसमें आपको एक स्पीडअप मिलता है यदि यह स्थिर है; लेकिन निश्चित रूप से यह स्पीडअप केवल भोले-भाले गुणा से अधिक है, और इसमें मौजूद गुणन एल्गोरिदम मौजूद हैं जो हैं। यह एल्गोरिथ्म।lognO(n2logn)


@ जेएएस कि मेरी विशेषता है: डी।
रियलज़ स्लाव

3
यह ARITH 2007 में dx.doi.org/10.1109/ARITH.2007.24 (पूर्णता के लिए) के रूप में दिखाई दिया ।
एन्द्रस सलामोन

10

जैसा कि मैट ग्रॉफ द्वारा सुझाया गया है, आप प्रेरणा के लिए अभ्यास समुदाय को देखने के लिए इच्छुक हो सकते हैं (या यदि आपकी स्थिति में वर्तमान सीपीयू की थोड़ी चौड़ाई के भीतर है)। वास्तव में, एक निरंतर द्वारा पूर्णांक गुणन की समस्या पर कई संकलक लेखकों और सर्किट डिजाइनरों द्वारा विचार किया गया है, हालांकि वे आमतौर पर "मल्टीप्लायर-कम मल्टीप्लायर" में रुचि रखते हैं (शिफ्ट का उपयोग करके, जोड़कर और घटाकर)। जिन शुरुआती संदर्भों से मैं अवगत हूं, उनमें से एक है (मैंने हैकर के डिलाईट सेक्शन 8.4 से यह सीखा है।)n

बर्नस्टीन, आर। (1986), पूर्णांक स्थिरांक द्वारा गुणा। सॉफ्टवेयर: अभ्यास और अनुभव, 16: 641-652। doi: 10.1002 / spe.4380160704

विन्सेन्ट लेफ्रे द्वारा और अधिक आधुनिक काम यहां पाया जा सकता है (उनके कार्यों का अनुवर्ती कार्य देखना सुनिश्चित करें), और वे कुशल सर्किट संश्लेषण पर सीएमयू परियोजना को भी नोट करते हैं (वहां संदर्भ देखें)। उत्तरार्द्ध परियोजना भी स्थिरांक के एक सेट से एक साथ गुणा पर विचार करती है।

PS मैं आपको अपने उपयोगकर्ता नाम को किसी पहचानने योग्य में बदलने पर विचार करने के लिए प्रोत्साहित करता हूं।


8

मुझे यकीन नहीं है कि यह सीधे सवाल के लिए प्रासंगिक है, लेकिन निम्नलिखित प्रारंभिक परिणाम ब्याज का हो सकता है। एक निश्चित प्राकृतिक संख्या को देखते हुए , ऑपरेशन को एक अनुक्रमिक ऑटोमेटोन द्वारा महसूस किया जा सकता है, बशर्ते कि उलट बाइनरी नोटेशन में लिखा गया हो (यानी, लिस्ट सिग्नेचर बिट फर्स्ट)। ऑटोमेटन के राज्यों की संख्या जहां विभाजन की सबसे बड़ी शक्ति है । उदाहरण के लिए, ऑपरेशन को निम्नलिखित ऑटोमेटन द्वारा महसूस किया जाता है। knknnk/2r2r2kn6nयहाँ छवि विवरण दर्ज करें

उदाहरण के लिए, और । इस प्रकार, रिवर्स बाइनरी में को और (बुरी पसंद, मुझे पता है ...) को रूप में । इस पर एंट्री करके रास्ता देता है 185=1+8+16+32+1286×185=1110=2+4+16+64+10241851001110111100110101000110011101

0011101000011110211200110201
जो सही आउटपुट । अनुक्रमिक ऑटोमैटन का प्रकार जो मैं यहाँ उपयोग कर रहा हूँ उसे Schützenberger द्वारा बाद में कहा गया था : जैसा कि आप देख सकते हैं कि एक प्रारंभिक उपसर्ग (हरे रंग में) और एक टर्मिनल आउटपुट फ़ंक्शन है01101010001(हरे रंग में भी)। अधिक विवरण के लिए कि इस अनुक्रमिक मशीन की व्यवस्थित तरीके से गणना कैसे की जा सकती है, इस लिंक को देखें ।

क्या आप अपनी टिप्पणी पर विस्तार से बता सकते हैं?
जे- ई।

k प्रधान है । >2
टी ....

एक अनुक्रमिक आटोमैटन का निर्माण ऑपरेशन साकार करने के लिए किसी भी लिए किया जा सकता है । हालाँकि, इस आटोमेटन की गणना प्राइम के लिए आसान हो सकती है । nknkk
जे- ई।

k2r घातीय है।
टी ....

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