स्टीवन स्टैडनिक के विचार पर विस्तार करने के लिए, हम एक भोली एल्गोरिथ्म का निर्माण कर सकते हैं जो कि डिस्क्रेट फूरियर ट्रांसफॉर्म का उपयोग करके मैट्रिक्स गुणा से बेहतर करता है।
हम में संख्या की गिनती करते हैं । यदि आधे से कम बिट्स हैं, तो हम उनके पदों की लिंक की गई सूची बनाते हैं। गुणा करने के लिए, हम सूची में प्रत्येक स्थान पर छोड़ दिए गए शिफ्ट करते हैं (उस बिट द्वारा दर्शाया गया है जो गुणा करते हैं) और परिणाम जोड़ते हैं।AB
यदि आधे से अधिक बिट्स हैं, तो हम ऊपर की तरह ही करते हैं, लेकिन हम पदों की सूची को पॉप्युलेट करने के बजाय शून्य का उपयोग करते हैं। विचार यह है कि हम इस राशि को उस योग से घटाएंगे जो सभी लोगों द्वारा गुणा करके प्राप्त किया जाएगा। सभी का योग प्राप्त करने के लिए, हम में बिट्स की संख्या से को स्थानांतरित करते हैं और को इससे घटाते हैं । फिर हम लिंक की गई सूची से प्राप्त अपनी राशि को घटा सकते हैं।BAB
हम अनुभव कर सकते हैं कि भोली-लिंक्ड सूची एल्गोरिथ्म। इसके चलने का समय सबसे खराब स्थिति में है, लेकिन औसत मामले में है, जो छोटे के लिए DFT से तेज़ है।।O(n2)O(|B||A|2π−−−√)|A|
सूचियों के विचार का उपयोग करने के लिए, हम विभाजन और जीत का उपयोग करते हैं। हम को आधे में विभाजित करते हैं , और भोली एल्गोरिथ्म का उपयोग करके संबंधित सूचियों के आकार पाते हैं। यदि वे 5 से अधिक हैं, तो हम भोले एल्गोरिथ्म को फिर से 5 से अधिक हिस्सों तक कहते हैं, जब तक कि हम सभी हिस्सों को पांच से कम करने का प्रबंधन नहीं करते। (ऐसा इसलिए है क्योंकि हम इसे घटाकर 4 घटा सकते हैं)A
इससे भी बेहतर अभी भी, हम अपने डिवाइड और-विजेता एल्गोरिथ्म में सुधार करते हैं। हम ब्रांचिंग के सभी संभव संयोजनों के माध्यम से पुनरावृति करते हैं, लालच से सबसे अच्छा उठाते हैं। इस प्रीप्रोसेसिंग में वास्तविक गुणा के समान समय लगता है।
यदि हमें पूर्व-प्रसंस्करण के साथ असीम स्वतंत्रता की अनुमति है, तो हम सभी शाखाओं के लिए अनुकूलित डिवाइड-एंड-कॉनकोर एल्गोरिदम को बेहतर तरीके से हल करते हैं। यह सबसे खराब स्थिति में समय लेता है , लेकिन यह अतिरिक्त श्रृंखला विधियों द्वारा ~ इष्टतम होना चाहिए।O(2|A|)
मैं उपरोक्त एल्गोरिदम के लिए अधिक सटीक मूल्यों की गणना पर काम कर रहा हूं।