असतत फूरियर रूपांतरण की कंप्यूटिंग की जटिलता?


18

एन पूर्णांक के एक वेक्टर के मानक असतत फूरियर रूपांतरण के कंप्यूटिंग की जटिलता (मानक पूर्णांक रैम पर) क्या है ?n

तेजी से फूरियर रूपांतरण के लिए शास्त्रीय एल्गोरिथ्म , अनुचित रूप से [1] कोइली और टुके के लिए जिम्मेदार ठहराया जाता है, जिसे आमतौर पर O(nlogn) समय के रूप में वर्णित किया जाता है । लेकिन इस एल्गोरिथ्म में निष्पादित अधिकांश अंकगणितीय ऑपरेशन एकता की जटिल n वीं जड़ों से शुरू होते हैं, जो (अधिकांश n ) तर्कहीन हैं, इसलिए निरंतर समय में सटीक मूल्यांकन उचित नहीं है। ऐसा ही मुद्दा भोले O(n2) -टाइम एल्गोरिथ्म (एकता की जटिल जड़ों के एक वैंडर्मोंड मैट्रिक्स द्वारा गुणा ) के साथ उठता है ।

यह भी स्पष्ट नहीं है कि डीएफटी के उत्पादन का प्रतिनिधित्व कैसे करें (किसी भी उपयोगी रूप में)। दूसरे शब्दों में, यह स्पष्ट नहीं है कि कंप्यूटिंग डीएफटी वास्तव में संभव है!

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

या साहित्य में "एफएफटी" का हर उदाहरण वास्तव में "तेज संख्या-सिद्धांत-रूपांतरित " होता है? [2]

गौसियन उन्मूलन और यूक्लिडियन सबसे छोटे रास्तों की जटिलता पर मेरे संबंधित प्रश्न देखें ।

[1] यह वास्तव में बुलाया जाना चाहिए (के कुछ उपसर्ग) गॉस-Runge-König-येट्स-Stumpf-Danielson-Lanczos-कूली-Tukey एल्गोरिथ्म।

[२] और यदि ऐसा है, तो अधिकांश पाठ्यपुस्तक केवल जटिल-संख्या एल्गोरिथ्म का ही वर्णन क्यों करती हैं?


1
मुझे लगता है कि उसकी बात यह है: सिद्धांत रूप में आपको बारे में चिंता करने की ज़रूरत नहीं है , लेकिन किसी भी कार्यान्वयन में आपको इसके बारे में चिंता करने की आवश्यकता है और त्रुटि जो हो सकती है। b
सुरेश वेंकट

1
वास्तव में यह एक अच्छा सवाल है, प्रत्येक अतिरिक्त बिट सटीक सिग्नल की शक्ति में जोड़ता है ( 2 से गुणा )। इसलिए मुझे लगता है कि यदि मध्यस्थ शब्द आकार का विस्तार किया जा सकता है तो यह सवाल सबसे उपयोगी होगा! 3dB2
बनाम

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

3
पूर्णांक गुणा पर शोनहगे और स्ट्रैसन के पेपर में विधि ए पर एक नज़र डालें। यह जटिल फूरियर रूपांतरण का उपयोग करता है के साथ बंधे परिशुद्धता। मुझे लगता है, यह नूथ वॉल में भी वर्णित है। 2.
मार्कस ब्लेसर

2
मार्कस, हारून: उत्तरों में परिवर्तित करें?
सुरेश वेंकट

जवाबों:


9

यह उत्तर लंबे पूर्णांकों के गुणन के लिए स्चन्हागे और स्ट्रैसेन द्वारा पहले एल्गोरिथ्म ("मैथोड ए") के विश्लेषण का एक प्रकार है।

मान लें कि हम लंबाई की FFT गणना करना चाहते हैं । अपने इनपुट को ऐसे स्केल करें कि सभी मान 1 से छोटे हों। पहले मान लें कि हम m -bit निश्चित बिंदु अंकगणित ( बाइनरी पॉइंट के बाद m बिट्स) के साथ गणना करते हैं । चलो δ = 2 1 / 2 - मीटर ( "जटिल") कम से कम स्थिति की इकाई हो। आज्ञा देना ω = exp ( 2 π i / K )K=2kmmδ=21/2mω=exp(2πi/K)

1) एक कर सकते हैं गणना अनुमानों ऐसा है कि | ω ' जे - ω जे | ( 2 कश्मीर - 1 ) δ के लिए सभी 0 जे कश्मीर - 1 । यह समय O ( K M ( m ) ) में किया जा सकता है जहाँ M ( m ) को m -bit संख्या को गुणा करने के लिए आवश्यक समय है । (देखें नथ वॉल्यूम २, ३ संस्करण, पृष्ठ ३० ९)।ωj|ωjωj|(2k1)δ0jK1O(KM(m))M(m)m

यदि मानक पूर्णांक रैम का अर्थ है लघुगणक लागत, तो । यदि मानक पूर्णांक RAM का अर्थ है RAM, तो M ( m ) = O ( m ) । (Schönhage और Strassen "Methode ए 'में शो कैसे रैखिक समय में के गुणन को कम करने के मीटर को -बिट संख्या मीटर के गुणन हे ( लॉग मीटर ) काटा संख्या। उत्तरार्द्ध इकाई लागत पर किया जा सकता है।)M(m)=O(mlogm)M(m)=O(m)mmO(logm)

2) शास्त्रीय Cooley-Tukey FFT फॉर्म के संचालन की गणना करता है । हम का उपयोग मीटर -बिट निश्चित बिंदु गणित, इन opertions बन एक ' = टी आर यू एन सी एक टी ( ' + ω ' जे सी ' ) । हम जानते हैं कि यदि ' और ' की एक त्रुटि के लिए ऊपर ε पर हम पाते हैं एक ' की एक त्रुटि अप करने के लिए 2 ε + 2a=b+ωjcma=truncate(b+ωjc)bcϵa2ϵ+2kδ

3) प्रेरण का उपयोग करना, यह देखने के लिए कि हम त्रुटि के साथ अंतिम परिणाम प्राप्त आसान है । परिशुद्धता प्राप्त करने के लिए अंत में, मीटर कश्मीर + लॉग कश्मीर + + हे ( 1 )(2k1)2kδbmk+logk+b+O(1)

4) इस प्रकार अंतिम चलने का समय O(KkM(k+b))

यह फ़्लोटिंग पॉइंट नंबरों के साथ भी काम करना चाहिए: 1) अभी भी निश्चित बिंदु अंकगणित के साथ किया जा सकता है, 2) फ़्लोटिंग पॉइंट नंबरों के लिए भी सही है।


निश्चित बिंदु अंकगणित में, मुझे लगता है, यह और भी तेजी से किया जा सकता है। पहले हम एफएफटी की गणना को ब्लूस्टीन की चाल का उपयोग करके बहुपद के गुणन में घटाते हैं। वांछित सटीकता प्राप्त करने के लिए आवश्यक गुणांक की लंबाई होनी चाहिए । फिर हम लंबे पूर्णांकों के गुणन को बहुपदों के गुणन को कम करते हैं। (गुणांक को एक लंबी संख्या में जोड़ते हैं और उन्हें लंबाई O ( k + b ) के शून्य से अलग करते हैं ।) पूर्णांक की लंबाई O ( K ( k + b ) ) हैO(k+b)O(k+b)O(K(k+b))


तो बिंदु (4) से, के = एन और बी = ओ (लॉग एन) सेट करना, और यह मानकर कि हम रैम शब्द पर चल रहे हैं, हमें का रनिंग टाइम मिलता है । सही? O(nlog2n)
जेफ

हाँ। दूसरा एल्गोरिथ्म भी , यह मानते हुए कि परिशुद्धता O ( k + b ) पर्याप्त है। (मुझे कोई भी बिंदु दिखाई नहीं देता है कि यह पर्याप्त क्यों नहीं है, लेकिन मैंने विवरण नहीं दिया।)O(nlogn)O(k+b)
मार्कस ब्लैसर

2
BTW, यदि O ( log n ) जितना छोटा है , तो M ( O ( log n ) ) = 1 के बाद से पहला एल्गोरिथ्म रनिंग टाइम O ( n लॉग एन ) देता है । bO(logn)O(nlogn)M(O(logn))=1
मार्कस ब्लैसर

मैं "द डिज़ाइन एंड एनालिसिस ऑफ़ अल्गोरिद्म" पर अहो, हॉपक्रॉफ्ट और उल्मैन की किताब को देखने के लिए हुआ था और वे बिट मॉडल और संबंधित मुद्दों में कुछ विस्तार से एल्गोरिथ्म पर चर्चा करते हैं।
चंद्रा चकुरी

लेकिन जहां तक ​​मुझे याद है, वे केवल बिट-मॉडल में "संख्या-सिद्धांतवादी एफएफटी" पर चर्चा करते हैं।
मार्कस ब्लैसर

8

यह पूर्ण उत्तर नहीं है, लेकिन मैं आपको कुछ प्रासंगिक पत्रों की ओर संकेत कर सकता हूं और यह भी आंशिक रूप से समझा सकता हूं कि साहित्य से आपके विशिष्ट प्रश्न का उत्तर निकालना इतना आसान क्यों नहीं है।

मुझे पूछने से शुरू करें, आप इस प्रश्न का उत्तर क्यों जानना चाहते हैं? आमतौर पर, जो लोग इस तरह के मुद्दे के बारे में खुद को देखभाल करते हैं, वे वास्तव में व्यावहारिक अनुप्रयोग के लिए उच्च-प्रदर्शन एफएफटी को लागू करने का सामना करते हैं। ऐसे लोग अपने विशेष हार्डवेयर और सॉफ्टवेयर बाधाओं के तहत प्रदर्शन को अधिकतम करने की तुलना में कुछ आदर्श कम्प्यूटेशनल मॉडल में एसिम्प्टोटिक जटिलता के बारे में कम परवाह करते हैं। उदाहरण के लिए, वेस्ट में फास्टेस्ट फूरियर ट्रांसफॉर्म के डेवलपर्स अपने पेपर में लिखते हैं:

सबसे अच्छा विकल्प हार्डवेयर विवरण पर निर्भर करता है जैसे रजिस्टरों की संख्या, विलंबता और निर्देशों की थ्रूपुट, आकार और कैश की समरूपता, प्रोसेसर पाइपलाइन की संरचना, आदि।

ये ऐसे मुद्दे हैं जो सिद्धांतकार आमतौर पर अपने हाथों से नहीं चाहते हैं, लेकिन वास्तविक कार्यान्वयन में उनका बहुत महत्व है। यदि एक सिद्धांतवादी घोषणा करता है, "मैंने रैम मॉडल में पूर्ण सर्वश्रेष्ठ असममित बिट जटिलता का अनुमान लगाया है," व्यवसायी कह सकता है, "यह अच्छा है," लेकिन ऐसा सैद्धांतिक परिणाम उसके या उसके उद्देश्यों के लिए बेकार हो सकता है।

ऐसा कहने के बाद, मुझे लगता है कि आपका सबसे अच्छा दांव संख्यात्मक विश्लेषण साहित्य को देखना है। उदाहरण के लिए, Tasche और Zeuner ने FFT एल्गोरिथ्म की संख्यात्मक स्थिरता पर बारीकी से विचार किया है। यह अभी भी वास्तव में आप क्या चाहते हैं नहीं किया जा सकता क्योंकि चिकित्सकों के बीच आम सहमति है कि संख्यात्मक परिशुद्धता की दी गई राशि प्राप्त करने के लिए हो रहा है, सबसे अच्छा व्यावहारिक दृष्टिकोण है precompute निश्चित संख्या उच्च सटीकता के लिए "ज़ुल्फ़ कारकों" कहा जाता है। यदि आप केवल एक एफएफटी कर रहे हैं , तो यह सबसे तेज़ तरीका नहीं है, क्योंकि आपको बड़ी संख्या में एफएफटी अभिकलन पर अपने एक बार के प्री-कॉम्पीप्यूटेशन की लागत को बढ़ाने की आवश्यकता नहीं है। फिर भी, सबसे खराब स्थिति वाली राउंडऑफ़ त्रुटि का उनका विश्लेषण अभी भी आपके प्रश्न के लिए प्रासंगिक होना चाहिए।


मुझे यकीन है कि लोगों को यह जानने में दिलचस्पी होगी कि क्या वे अतिरिक्त सटीक परिशुद्धता कह सकते हैं यदि वे वर्तमान एल्गोरिदम पर 100 अतिरिक्त गुणा कहने पर 1024 अंक एफएफटी (डब्ल्यूएलएएन में ओएफडीएम) कर सकते हैं । 11024100
बनाम

1
मैं सही और ईमानदार छात्रवृत्ति के हित में, एक विशुद्ध सैद्धांतिक प्रश्न के रूप में दिलचस्पी लेता हूं। यह पढ़ने के लिए काफी आम है "और यहां हम एक एफएफटी का उपयोग करते हैं, जैसा कि सभी जानते हैं कि ओ (एन लॉग एन) समय में चलता है" अन्यथा विशुद्ध रूप से दहनशील एल्गोरिथ्म के बीच में है, अन्यथा सूचक ट्रैवर्सल्स और ओ (लॉग एन) के संदर्भ में विश्लेषण किया गया है ) -बिट पूर्णांक अंकगणित। अगर, वास्तव में, पूर्णांक कन्वर्जन एफ (एन लॉग एन) समय में एफएफटी के मामूली संस्करण का उपयोग करके किया जा सकता है, तो यह शायद क्षम्य है लेकिन फिर भी मैला है। यदि नहीं, तो एल्गोरिथम को लागू करने की कोशिश करने वाला कोई भी गरीब विद्वान गलत जवाब नहीं मिलने वाला है।
जेफ

और निश्चित रूप से, मुझे अपने प्रश्न के उत्तर की उम्मीद नहीं है कि अभ्यास में कोई प्रभाव पड़ेगा।
जेफ

2
जेफ, जहां तक ​​ईमानदार छात्रवृत्ति का सवाल है, क्या यह कहना पर्याप्त नहीं है कि एफएफटी को ओ (एन लॉग एन) रिंग संचालन की आवश्यकता है? यह FFT एल्गोरिथ्म की जटिलता को मापने का प्राकृतिक तरीका है। मैं सब कुछ गणना के एक विशेष मॉडल में परिवर्तित करने की प्रेरणा नहीं देखता हूं। क्या कुछ प्रमेय आप यह साबित करने की कोशिश कर रहे हैं कि सटीकता के बिट्स की संख्या पर नज़र रखना महत्वपूर्ण है? अपने गरीब schmuck के लिए के रूप में, मैं खरीद नहीं है कि वह "गलत जवाब मिल जाएगा।" किसी भी वास्तविक कार्यान्वयन में, आप जो सवाल यहां पूछ रहे हैं, वह प्रमुख चिंता की संभावना नहीं है।
टिमोथी चाउ

O(nlogn)
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.