क्यों नथ के रैखिक-समय गुणा एल्गोरिथ्म "गिनती" नहीं करता है?


13

गुणन एल्गोरिदम पर विकिपीडिया पृष्ठ डोनाल्ड नथ द्वारा एक दिलचस्प एक का उल्लेख करता है । मूल रूप से, इसमें लॉगरिदमिक-आकार के गुणकों की एक पूर्वनिर्मित तालिका के साथ फूरियर-ट्रांसफॉर्म गुणा का संयोजन शामिल है। यह रैखिक समय में चलता है।

लेख इस एल्गोरिथ्म की तरह काम करता है किसी भी तरह एक "सच" गुणन एल्गोरिथ्म के रूप में नहीं गिना जाता है। अधिक महत्वपूर्ण रूप से, यह एक खुला प्रश्न माना जाता है कि क्या गुणा O(n lg n)समय में भी किया जा सकता है !

इस एल्गोरिथ्म का क्या विवरण इसे "सच" गुणा एल्गोरिथ्म के रूप में गिनने से अयोग्य घोषित करता है?

मेरे अनुमान हैं:

  • तालिका को पूर्व-रेखीय करने में रैखिक समय से अधिक लगता है। दूसरी ओर, यह अभी भी n lg nसमय में किया जा सकता है ताकि यह अभी भी प्रभावशाली प्रतीत हो।
  • रैंडम एक्सेस की अनुमति किसी भी तरह है। लेकिन फिर अन्य एल्गोरिदम हैश टेबल और पॉइंटर्स जैसी चीजों का उपयोग क्यों कर सकते हैं?
  • यह किसी भी तरह से गलत है क्योंकि आप मशीन के आकार को बढ़ाते हैं, जैसे कि यदि आपके पास 256 बिट मशीन है जो एक निर्देश में 256 बिट गुणन करता है तो इस एल्गोरिथम का कोई मतलब नहीं है जब तक कि आपके पास 2 ^ 256 से अधिक तत्व न हों। दूसरी ओर, हम संघ-खोज में व्युत्क्रम-एकरमैन कारक से परेशान हैं।
  • "क्या एक रैखिक समय गुणा एल्गोरिथ्म है?" सवाल कुछ कमजोर मशीन के संदर्भ में गुप्त रूप से है, लेकिन यह केवल संकेत मिलता है।

यह प्रासंगिक हो सकता है: en.wikipedia.org/wiki/Transdichotomous_model
R .. GitHub STOP HELPING ICE

जवाबों:


16

जबकि आप जिस एल्गोरिथ्म का उल्लेख करते हैं वह नुथ के TAOCP में दिखाई देता है, यह निश्चित रूप से नथ के कारण नहीं है, और अधिक व्यापक रूप से शॉनहेज-स्ट्रैसेन एल्गोरिथ्म के रूप में जाना जाता है ; नथ भी इस एल्गोरिथ्म को उनके पाठ में शामिल करता है। यह एल्गोरिथ्म वास्तव में तथाकथित रैम मशीन में रैखिक समय में चलता है , जिसमें चर को आकार पूर्णांक को रखने की अनुमति है , जहां इनपुट का आकार है। बिट जटिलता, हालांकि, , और इस मॉडल के लिए, Fürer का एल्गोरिथ्म तेज है।n O ( n लॉग एन लॉग लॉग एन )O(logn)nO(nlognloglogn)

साहित्य में तेजी से पूर्णांक गुणन एल्गोरिदम की खोज जटिलता माप के रूप में बिट जटिलता पर केंद्रित है; यह आपके रजिस्टरों को केवल एक बिट (या केवल बिट्स को कुछ मनमाने निरंतर ) रखने की अनुमति देने जैसा है । यह उम्मीद की जाती है कि पूर्णांक गुणन में , हालांकि यह स्पष्ट नहीं है कि यह कड़ा होना चाहिए, और कोई गैर-तुच्छ निचला सीमा ज्ञात नहीं है (इसलिए यह केवल एक अनुमान है) )।सी Ω ( एन लॉग इन करें n ) Ω ( एन लॉग इन करें n )CCΩ(nlogn)Ω(nlogn)

बड़े पूर्णांकों के व्यावहारिक गुणन के लिए "सही" मॉडल की चर्चा के लिए, फ़्यूरर के हालिया पेपर की जांच करें । उनका निष्कर्ष "व्यावहारिक" शॉनहेज-स्ट्रैस एल्गोरिथ्म के पक्ष में है (उनमें से दो हैं, और दूसरे में बेहतर बिट जटिलता है, लेकिन व्यवहार में बदतर प्रदर्शन करता है; फ्यूरर कागज में इस मुद्दे को संबोधित करता है)।


2
स्पष्टीकरण के लिए धन्यवाद। मेरे पास TAOCP की एक प्रति नहीं है, इसलिए मुझे जो भी जाना था वह विकि लेख में था (मुझे लगता है कि आपने पहले ही इस मुद्दे को ठीक करने के लिए इसे संपादित कर दिया है)।
क्रेग गिदनी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.