O (n log n) समय में चुकता हुए विरल बहुपद का योग?


18

मान लीजिए कि हमारे बहुआयामी पद है p1,...,pm ज्यादा से ज्यादा डिग्री केn ,, ऐसी है कि अशून्य गुणांक की कुल संख्या है(यानी, बहुआयामी पद विरल हैं)। मैं बहुपद कंप्यूटिंग के लिए एक कुशल एल्गोरिथ्म में रुचि रखता हूं:n>mn

ipi(x)2

चूंकि इस बहुपद में अधिकतम डिग्री है , इसलिए इनपुट और आउटपुट दोनों का आकार । मामले में हम समय में एफएफटी का उपयोग करके परिणाम की गणना कर सकते हैं । क्या यह किसी भी लिए किया जा सकता है ? अगर इससे कोई फर्क पड़ता है, तो मैं उस विशेष मामले में दिलचस्पी लेता हूं जहां गुणांक 0 और 1 हैं, और पूर्णांक पर गणना की जानी चाहिए।2nO(n)m=1O(nlogn)m<n

अपडेट करें। मुझे एहसास हुआ कि उपर्युक्त के लिए एक तेज समाधान तेजी से मैट्रिक्स गुणा में अग्रिम होगा। विशेष रूप से, अगर तो हम को पढ़ सकते हैं के गुणांक के रूप में । इस प्रकार, कंप्यूटिंग दो वैक्टरों के बाहरी उत्पाद की गणना करने के लिए मेल खाती है, और sum की गणना एक मैट्रिक्स उत्पाद की गणना करने से मेल खाती है। यदि कंप्यूटिंग के लिए समय का उपयोग कर एक समाधान है तो हम समय दो -by- मैट्रिसेस गुणा कर सकते हैंpk(x)=i=1naikxi+j=1nbkjxnjaikbkjxi+njpk(x)2pk(x)2kpk(x)2f(n,m)kpk(x)2nnf(n2,n), जिसका अर्थ है कि लिए एक बड़ी सफलता की आवश्यकता होगी। लेकिन , जहां मैट्रिक्स गुणन का वर्तमान प्रतिपादक है, संभव हो सकता है। विचार, कोई भी?f(n,m)=O(nlogn)mnf(n,m)=nω/2ω


1
हाय रसमस। मुझे लगता है कि आपने इसके लिए मुख्य साइट पर जाने का इरादा किया है। यह साइट के बारे में प्रश्नों के लिए मेटा साइट है।
सुरेश वेंकट

जवाबों:


3

नॉनजरो गुणांक के साथ एक बहुपद को चुकाने में साधारण टर्म-बाय-गुणा गुणा का उपयोग करते समय O ( x 2 i ) लगता है, इसलिए यह उन बहुपद के लिए FFT को प्राथमिकता दी जानी चाहिए जहां x i < omएक्समैंहे(एक्समैं2) । यदिΣमैंएक्समैं=n, तो साथ बहुपद की संख्याएक्समैंअधिक से अधिकएक्समैं<nलॉगnΣमैंएक्समैं=nएक्समैं हैहे(nलॉगn, और इन समय लगेगाहे(एन 3 / 2 (लॉगएन) 1 / 2 )वर्ग के लिए और गठबंधन (के रूप में होगा शेष बहुआयामी पद)। यह स्पष्ट ऊपर एक सुधार हैहे(एमएनलॉग इन करेंn)बाध्य जबमीटरहैΘ(हे(n/लॉगn)हे(n3/2(लॉगn)1/2)हे(nलॉगn)Θ(n/लॉगn)


1
मैं जिस चीज में दिलचस्पी रखता हूं वह एक ऐसी विधि है जो प्रत्येक शब्द की गणना किए बिना योग की गणना करती है। प्रत्येक उत्पाद के लिए एफएफटी या टर्म-बाय-टर्म गुणा करना मेरे मन में आने वाले अनुप्रयोग के लिए बहुत धीमा होगा।
रासमस पैघ

2

पूर्ण उत्तर नहीं, लेकिन शायद सहायक।

कैविएट: यह केवल अच्छी तरह से काम करता है यदि का समर्थन छोटा है।पीमैं2

एक बहुपद के लिए , चलो एस क्यू = { मैं | एक मैं0 } अपने समर्थन और हो रों क्ष = | S क्ष | समर्थन का आकार हो। पी के अधिकांश मैं विरल होगा, अर्थात, एक छोटा सा समर्थन होगा।q=a0+a1x++anxnSq={iai0}sq=|Sq|pi

करने के लिए गुणा विरल बहुआयामी पद एल्गोरिदम रहे हैं और उत्पाद के समर्थन के आकार में अर्ध रैखिक समय में एक , देख जैसे http://arxiv.org/abs/0901.4323abab

के समर्थन (में समाहित) है एस एक + एस बी , जहां दो सेट का योग एस और टी के रूप में परिभाषित किया गया है एस + टी : = { रों + टी | रों एस , टी टी } । सभी उत्पादों की समर्थन करता है छोटा सा कर रहे हैं, कहते हैं, में रेखीय n कुल में, फिर एक बस उत्पादों की गणना और सभी एकपदीयों जोड़ सकते हैं।abSa+SbSTS+T:={s+tsS,tT}n

हालांकि यह बहुआयामी पद को खोजने के लिए बहुत आसान है और ऐसी है कि के समर्थन का आकार एक बी के समर्थन के आकार में द्विघात है एक और । इस विशेष अनुप्रयोग में, हम बहुपदों को विभाजित कर रहे हैं। तो सवाल यह है कि कितना बड़ा है एस + एस की तुलना में एस । इसके लिए सामान्य उपाय दोहरीकरण संख्या है | एस + एस | / | एस | । अनबाउंड डबलिंग नंबर के साथ सेट हैं। लेकिन आप का समर्थन करता है के रूप में बड़े दोहरीकरण संख्या के साथ सेट बाहर कर सकते हैं, तो पी मैंabababS+SS|S+S|/|S|pi, तो आप अपनी समस्या के लिए एक तेज एल्गोरिदम प्राप्त कर सकते हैं।


1
हालांकि मैं एडिटिव कॉम्बिनेटरिक्स से परिचित नहीं हूं, लेकिन मुझे लगता है कि सामान्यीकृत अंकगणितीय प्रगति और फ्रीमैन-रुजसा प्रमेय छोटे दोहरीकरण के साथ सेट के बारे में हैं ।
Tsuyoshi Ito

@ त्सुयोशी: आप सही हैं, मैं अपना उत्तर संपादित करूंगा। फिर भी, बड़े दोहरीकरण वाले जीएपी हैं।
५५०१

व्यक्तिगत रूप से मुझे नहीं लगता कि यह दृष्टिकोण आशाजनक है। फ्रीमैन-रुज़सा प्रमेय का एक (बहुत गलत) निहितार्थ है | S + + / | S | केवल विशेष मामलों में छोटा है, और इसलिए "यदि आप p_i के समर्थन के रूप में बड़े दोहरीकरण संख्या के साथ सेट को बाहर कर सकते हैं" तो बहुत बड़ा है । हालांकि, जैसा कि मैंने कहा, मैं additive combinatorics से परिचित नहीं हूं, और आपको नमक के दाने के साथ इस पर अपने शब्द लेने चाहिए।
त्सुयोशी इतो

निश्चित रूप से यह केवल तभी काम करता है जब एप्लिकेशन को ध्यान में रखा जाए (जो मुझे नहीं पता) अच्छा समर्थन देता है।
5501

तब यह समझना आसान होगा कि क्या आप अपने उत्तर में उस धारणा को अधिक स्पष्ट करते हैं। उत्तर में धारणा लिखने का वर्तमान तरीका बताता है कि आप मानते हैं कि छोटी दोहरीकरण संख्या की धारणा कोई बड़ी बात नहीं है।
त्सुयोशी इटो

2

बस प्राकृतिक सन्निकटन एल्गोरिदम को नोट करना चाहता था। यह हालांकि स्पार्सिटी का फायदा नहीं उठाता है।

आप एक यादृच्छिक अनुक्रम इस्तेमाल कर सकते हैं (σi)i[n] लेने X=iσipi(x) हम गणना कर सकता है X2 में nlogn समय FFT का उपयोग कर। फिर EX2=ipi(x)2=S और VX2=O(S)। तो तुम एक मिल सकता है1+εसमय में सन्निकटनO(ε2nlogn)


अच्छा तरीका! लेकिन क्या आपको उच्च क्षमता वाले सभी गुणांक प्राप्त करने के लिए अधिक पुनरावृत्ति की आवश्यकता नहीं है?
रासमस पग

@RasmusPagh ठीक है, तो आप शायद एक मिल जाएगा अवधि अगर आप चाहते हैं सभी गुणांक संभावना के साथ संरक्षित किये जाने वाले 1 - δlog(n/δ)1δ
थॉमस अहले
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.