तेज मैट्रिक्स गुणन के लिए मेमोरी की आवश्यकता


12

मान लीजिए कि हम मैट्रिसेस को गुणा करना चाहते हैं । धीमी मैट्रिक्स गुणा एल्गोरिथ्म समय में चलता है और मेमोरी का उपयोग करता है । सबसे तेज मैट्रिक्स गुणा समय में चलता है , जहां रैखिक बीजगणित स्थिर है, लेकिन इसकी स्मृति जटिलता के बारे में क्या जाना जाता है?n×nO(n3)O(n2)nω+o(1)ω

ऐसा लगता है कि यह एक प्राथमिकता हो सकती है कि तेज मैट्रिक्स गुणा मेमोरी का उपभोग करता है । क्या कोई गारंटी है कि इसे मेमोरी में किया जा सकता है ? क्या यह मामला है कि वर्तमान में ज्ञात मैट्रिक्स गुणन एल्गोरिदम मेमोरी का उपयोग करते हैं?nωO(n2)O(n2)

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

जवाबों:


16

अंतरिक्ष का उपयोग सभी स्ट्रैसेन जैसे एल्गोरिदम के लिए सबसे अधिक है (अर्थात जो ऊपरी रूप से मैट्रिक्स गुणन के क्रम को बीजगणित पर आधारित करते हैं)। कोपरस्मिथ-विनोग्राद एल्गोरिथ्म की अंतरिक्ष जटिलता देखेंO(n2)

हालाँकि, मैंने अपने पिछले उत्तर में महसूस किया कि मैंने यह नहीं बताया कि अंतरिक्ष उपयोग ... इसलिए यहाँ कुछ हाथ से लहराता है। इस बात पर विचार करें कि स्ट्रैसन जैसा एल्गोरिथ्म क्या करता है। यह मैट्रिक्स गुणा के लिए एक निश्चित एल्गोरिथ्म से शुरू होता है जो कुछ निरंतर लिए गुणन का उपयोग करता है । विशेष रूप से, यह एल्गोरिथ्म (जो भी हो) WLOG लिखा जा सकता है ताकि:O(n2)K×KKcc<3

  1. यह गणना करता है विभिन्न मैट्रिक्स जो पहले मैट्रिक्स के गुणा प्रविष्टियों विभिन्न scalars और द्वारा मैट्रिक्स दूसरा मैट्रिक्स से इसी तरह के रूप में,एल 1 , , एल के सीके सी आर 1 , , आर के सी बीKcL1,,LKcAKcR1,,RKcB

  2. यह उन रैखिक संयोजनों गुणा करता है , फिरLiRi

  3. की यह पलता प्रविष्टियों विभिन्न scalars द्वारा, फिर प्राप्त करने के लिए entrywise अप इन सभी मैट्रिक्स कहते हैं एक बीLiRiAB

(यह एक तथाकथित "बिलिनियर" एल्गोरिथ्म है, लेकिन यह पता चलता है कि प्रत्येक "बीजगणितीय" मैट्रिक्स गुणन एल्गोरिथ्म को इस तरह से लिखा जा सकता है।) प्रत्येक , इस एल्गोरिथ्म को केवल स्टोर करना होगा। मौजूदा उत्पाद एल मैंआर मैं और के वर्तमान मूल्य एक बी , किसी भी बिंदु पर स्मृति में (शुरू में सब-शून्य करने के लिए सेट) इसलिए स्थान उपयोग है हे ( कश्मीर 2 )i=1,,KcLiRiABO(K2)

इस परिमित एल्गोरिथ्म को देखते हुए यह तो मनमाने ढंग से करने के लिए बढ़ा दिया गया है मैट्रिक्स, में बड़े मैट्रिक्स तोड़कर कश्मीर × कश्मीर आयाम के ब्लॉक कश्मीर - 1 × कश्मीर - 1 , लागू करने के परिमित कश्मीर × कश्मीर ब्लॉक करने के लिए एल्गोरिथ्म जब भी दो ब्लॉक को गुणा करने की आवश्यकता होती है, मैट्रिसेस और पुनरावर्ती रूप से एल्गोरिथ्म को कॉल करना। प्रत्यावर्तन के प्रत्येक स्तर में, हम केवल रखने की जरूरत हे ( कश्मीर 2 ) स्मृति में क्षेत्र तत्वों (भंडारण हे ( 1 )K×KK×KK1×K1K×KO(K2)O(1)विभिन्न मैट्रिक्स)। के लिए स्थान उपयोग मान लिया जाये कि कश्मीर - 1 × कश्मीर - 1 आव्यूह गुणन है एस ( - 1 ) , इस पुनरावर्ती एल्गोरिदम के स्थान उपयोग है एस ( ) एस ( - 1 ) + हे ( कश्मीर 2 ) , जो S ( 1 ) = 2 K 2 के लिएK×KK1×K1S(1)S()S(1)+O(K2)S(1)=2K2को हल करती S()O(K2)


किसी भी स्ट्रैसेन-स्टाइल एल्गोरिथ्म के लिए, यह मुझे सही लगता है। लेकिन ताम्रकार-Winograd भी साबित कर दिया कि करने के लिए नीचे पाने के लिए वास्तव में Strassen शैली एल्गोरिदम, करीब है और करीब सच प्रतिपादक करने के लिए हो जाता है, जिनमें से प्रत्येक की एक अनंत अनुक्रम की आवश्यकता है। वास्तव में, सीडब्ल्यू-शैली एल्गोरिदम और सीयू-शैली एल्गोरिदम दोनों ऐसे अनुक्रम प्रदान करते हैं (यद्यपि हम जहां तक ​​जानते हैं, ing तक नहीं पहुंचते हैं)। परिमेय के साथ, यह है कि इस तरह के एक अनुक्रम में प्रयोग किया जाता स्थिरांक बहुत जल्दी विकसित होगा संभव है, ताकि "" n ω कलन विधि का उपयोग हो सकते हैं ω ( एन 2 ) अंतरिक्ष। nωωnωω(n2)
जोशुआ ग्रूको

1
... लेकिन अपने तर्क से, एक हमेशा समय में एक एल्गोरिथ्म प्राप्त कर सकते हैं और अंतरिक्ष हे ( एन 2 ) किसी के लिए δ > 0O(nω+δ)O(n2)δ>0
जोशुआ ग्रूको

@Joshua, इन Strassen प्रकार एल्गोरिदम के स्मृति आवश्यकता की तरह है , जहां मैं एल्गोरिथ्म के इंडेक्स नंबर होता है और च गणना कर सका है। इसलिए, यदि आप पर इन एल्गोरिदम खोज से मैं = 0 , , कश्मीर और कश्मीर n का धीरे-धीरे बढ़ रही समारोह है, तो काम बन जाता है n ω + ( 1 ) और स्मृति है n 2 + ( 1 )f(i)n2i=0,...,knω+o(1)n2+o(1)
डेविड हैरिस

@DavidHarris: ठीक है, यकीन है कि, जब तक कि है धीरे-धीरे बढ़ रही की तुलना में काफी , अर्थात्, कश्मीर जल्दी के रूप में के रूप में अधिक से अधिक विकसित करने के लिए है - 1 । सवाल यह है कि किसी भी परिवार के लिए, एफ क्या है और कश्मीर कितनी जल्दी बढ़ता है। लेकिन इस बात की कोई गारंटी नहीं है कि कश्मीर धीरे-धीरे बढ़ेगा कुल मिलाकर n 2 + o ( 1 ) मेमोरी उपयोग ...kfkf1fkkn2+o(1)
यहोशू ग्रूचो

@Joshua। विचार यह है कि लंबाई इनपुट पर , हम पहले कश्मीर पुटीय स्ट्रैसेन-प्रकार के एल्गोरिदम पर खोज करते हैं, सत्यापित करते हैं कि क्या वे वैध हैं, और जो सबसे तेज़ है उसे चुनें। बस k को n के एक फंक्शन के रूप में चुनें ताकि f ( k ( n ) ) = n o ( 1 ) हो । के बाद से कश्मीर ( एन ) यह संकेत मिलता है कि किसी भी Strassen प्रकार एल्गोरिथ्म का चयन किया जाएगा n पर्याप्त रूप से बड़े। तो समय n ω + o ( 1) जाता हैnkknf(k(n))=no(1)k(n)n साथ ही। nω+o(1)
डेविड हैरिस

4

अधिक आम तौर पर, फास्ट मैट्रिक्स गुणन प्रति प्रोसेसर O ( n 2 / p ) मेमोरी में प्रोसेसर पर किया जा सकता है । हालाँकि, प्रोसेसर के बीच संचार तब उप-अपनाने योग्य होता है। अधिक स्मृति का उपयोग करके इष्टतम संचार प्राप्त किया जा सकता है। जहां तक ​​मुझे पता है, यह ज्ञात नहीं है कि क्या इष्टतम संचार और इष्टतम मेमोरी एक साथ प्राप्त की जा सकती है। विवरण http://dx.doi.org/10.1007/PL00008264 में हैंpO(n2/p)

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