स्ट्रैसेन एल्गोरिदम: Difference between revisions
No edit summary |
No edit summary |
||
Line 7: | Line 7: | ||
== इतिहास == | == इतिहास == | ||
वोल्कर स्ट्रैसन ने | वोल्कर स्ट्रैसन ने प्रथम बार इस एल्गोरिदम को 1969 में प्रकाशित किया और इस प्रकार यह प्रमाणित हुआ कि <math>n^3</math> सामान्य आव्यूह गुणन एल्गोरिथ्म इष्टतम नहीं था।<ref>{{cite journal |last=Strassen |first=Volker |title=गाऊसी उन्मूलन इष्टतम नहीं है|journal=Numer. Math. |volume=13 |issue= 4 |pages=354–356 |year=1969 |doi=10.1007/BF02165411 |s2cid=121656251 }}</ref> स्ट्रैसेन एल्गोरिदम के प्रकाशन के परिणामस्वरूप आव्यूह गुणन के संबंध में अधिक शोध हुआ, जिससे असम्बद्ध रूप से निचली सीमाएं और कम्प्यूटेशनल ऊपरी सीमाएं उत्तम हुईं। | ||
== एल्गोरिथम == | == एल्गोरिथम == | ||
[[Image:Strassen algorithm.svg|thumb|800px|केंद्र। सरल [[मैट्रिक्स गुणन| | [[Image:Strassen algorithm.svg|thumb|800px|केंद्र। सरल [[मैट्रिक्स गुणन|आव्यूह गुणन]] के लिए बाएं कॉलम के प्रत्येक 1 के लिए गुणन की आवश्यकता होती है। प्रत्येक अन्य कॉलम (M1-M7) स्ट्रैसेन एल्गोरिथ्म में 7 गुणन में से का प्रतिनिधित्व करता है। कॉलम M1-M7 का योग बाईं ओर पूर्ण आव्यूहगुणन के समान परिणाम देता है।<!-- Feel free to rewrite this description so it actually makes sense. -->]]होने देना <math>A</math>, <math>B</math> वलयके ऊपर दो [[वर्ग मैट्रिक्स|वर्ग]] आव्यूहबनें (गणित) <math>\mathcal{R}</math>, उदाहरण के लिए आव्यूह जिनकी प्रविष्टियाँ पूर्णांक या वास्तविक संख्याएँ हैं। आव्यूहगुणन का लक्ष्य आव्यूहउत्पाद की गणना करना है <math>C = AB</math>. एल्गोरिथम की निम्नलिखित व्याख्या मानती है कि इन सभी आव्यूहों के आकार दो की घात हैं (अर्थात्, <math>A, \, B, \, C \in \operatorname{Matr}_{2^n \times 2^n} (\mathcal{R})</math>), किन्तु यह केवल वैचारिक रूप से आवश्यक है - यदि आव्यूह<math>A</math>, <math>B</math> प्रकार के नहीं हैं <math>2^n \times 2^n</math>, दो की घात के आकार वाले आव्यूहप्राप्त करने के लिए लुप्त पंक्तियों और स्तंभों को शून्य से भरा जा सकता है - चूँकि एल्गोरिथ्म के वास्तविक कार्यान्वयन व्यवहार में ऐसा नहीं करते हैं। | ||
स्ट्रैसेन एल्गोरिथम विभाजन <math>A</math>, <math>B</math> और <math>C</math> समान आकार के [[ब्लॉक मैट्रिक्स|ब्लॉक]] | स्ट्रैसेन एल्गोरिथम विभाजन <math>A</math>, <math>B</math> और <math>C</math> समान आकार के [[ब्लॉक मैट्रिक्स|ब्लॉक]] आव्यूह में | ||
:<math> | :<math> | ||
A = | A = | ||
Line 79: | Line 79: | ||
स्ट्रैसेन के एल्गोरिदम का व्यावहारिक कार्यान्वयन छोटे पर्याप्त सबमैट्रिस के लिए आव्यूहगुणन के मानक तरीकों पर स्विच करता है, जिसके लिए वे एल्गोरिदम अधिक कुशल होते हैं। वह विशेष क्रॉसओवर बिंदु जिसके लिए स्ट्रैसेन का एल्गोरिदम अधिक कुशल है, विशिष्ट कार्यान्वयन और हार्डवेयर पर निर्भर करता है। पहले के लेखकों ने अनुमान लगाया था कि अनुकूलित कार्यान्वयन के लिए स्ट्रैसेन का एल्गोरिदम 32 से 128 तक की चौड़ाई वाले आव्यूहके लिए तेज़ है।<ref>{{Citation | last1=Skiena | first1=Steven S. | title=The Algorithm Design Manual | publisher=[[Springer-Verlag]] | location=Berlin, New York | isbn=978-0-387-94860-7 | year=1998 | chapter=§8.2.3 Matrix multiplication}}.</ref> चूँकि, यह देखा गया है कि यह क्रॉसओवर पॉइंट हाल के वर्षों में बढ़ रहा है, और 2010 के अध्ययन में पाया गया कि स्ट्रैसेन के एल्गोरिथ्म का भी चरण प्रायः वर्तमान आर्किटेक्चर पर अत्यधिक अनुकूलित पारंपरिक गुणन की तुलना में फायदेमंद नहीं होता है, जब तक कि आव्यूहका आकार अधिक न हो जाए 1000 या अधिक, और यहां तक कि कई हजार के आव्यूहआकार के लिए भी लाभ सामान्यतः सीमांत (लगभग 10% या उससे कम) होता है।<ref name="dalberto"/> हालिया अध्ययन (2016) में 512 जितने छोटे आव्यूहके लिए लाभ और लगभग 20% का लाभ देखा गया।<ref name="huang et al."/> | स्ट्रैसेन के एल्गोरिदम का व्यावहारिक कार्यान्वयन छोटे पर्याप्त सबमैट्रिस के लिए आव्यूहगुणन के मानक तरीकों पर स्विच करता है, जिसके लिए वे एल्गोरिदम अधिक कुशल होते हैं। वह विशेष क्रॉसओवर बिंदु जिसके लिए स्ट्रैसेन का एल्गोरिदम अधिक कुशल है, विशिष्ट कार्यान्वयन और हार्डवेयर पर निर्भर करता है। पहले के लेखकों ने अनुमान लगाया था कि अनुकूलित कार्यान्वयन के लिए स्ट्रैसेन का एल्गोरिदम 32 से 128 तक की चौड़ाई वाले आव्यूहके लिए तेज़ है।<ref>{{Citation | last1=Skiena | first1=Steven S. | title=The Algorithm Design Manual | publisher=[[Springer-Verlag]] | location=Berlin, New York | isbn=978-0-387-94860-7 | year=1998 | chapter=§8.2.3 Matrix multiplication}}.</ref> चूँकि, यह देखा गया है कि यह क्रॉसओवर पॉइंट हाल के वर्षों में बढ़ रहा है, और 2010 के अध्ययन में पाया गया कि स्ट्रैसेन के एल्गोरिथ्म का भी चरण प्रायः वर्तमान आर्किटेक्चर पर अत्यधिक अनुकूलित पारंपरिक गुणन की तुलना में फायदेमंद नहीं होता है, जब तक कि आव्यूहका आकार अधिक न हो जाए 1000 या अधिक, और यहां तक कि कई हजार के आव्यूहआकार के लिए भी लाभ सामान्यतः सीमांत (लगभग 10% या उससे कम) होता है।<ref name="dalberto"/> हालिया अध्ययन (2016) में 512 जितने छोटे आव्यूहके लिए लाभ और लगभग 20% का लाभ देखा गया।<ref name="huang et al."/> | ||
== विनोग्राड | == विनोग्राड रूप == | ||
विनोग्राड द्वारा | विनोग्राड द्वारा शोध किये गए निम्नलिखित रूप का उपयोग करके आव्यूह परिवर्धन की संख्या को कम करना संभव है: | ||
<math> | <math> | ||
Line 97: | Line 97: | ||
\end{bmatrix} | \end{bmatrix} | ||
</math> | </math> | ||
जहां | |||
जहां u = (c - a)(C - D), v = (c + d)(C - A), w = aA + (c + d - a)(A + D - C) है। इससे आव्यूह में जोड़ और घटाव की संख्या 18 से घटकर 15 हो जाती है। आव्यूह गुणन की संख्या अभी भी 7 है, और स्पर्शोन्मुख समिष्टता समान है।{{sfnp|Knuth|1997|p=500}} | |||
== स्पर्शोन्मुख जटिलता == | == स्पर्शोन्मुख जटिलता == | ||
उपरोक्त एल्गोरिदम की रूपरेखा से पता चला है कि आव्यूहके उप-ब्लॉकों के लिए पारंपरिक 8, मैट्रिक्स-आव्यूहगुणन के अतिरिक्त, केवल 7 से ही छुटकारा पाया जा सकता है। दूसरी ओर, किसी को ब्लॉकों का जोड़ और घटाव करना पड़ता है, चूँकि यह समग्र | उपरोक्त एल्गोरिदम की रूपरेखा से पता चला है कि आव्यूहके उप-ब्लॉकों के लिए पारंपरिक 8, मैट्रिक्स-आव्यूहगुणन के अतिरिक्त, केवल 7 से ही छुटकारा पाया जा सकता है। दूसरी ओर, किसी को ब्लॉकों का जोड़ और घटाव करना पड़ता है, चूँकि यह समग्र समिष्टता के लिए कोई चिंता का विषय नहीं है: आकार के आव्यूहजोड़ना <math>N/2</math> केवल आवश्यकता है <math>(N/2)^2</math> संचालन जबकि गुणन काफी हद तक अधिक महंगा है (परंपरागत रूप से)। <math>2 (N/2)^3</math> जोड़ या गुणन संक्रियाएँ)। | ||
फिर सवाल यह है कि स्ट्रैसेन के एल्गोरिदम के लिए वास्तव में कितने ऑपरेशनों की आवश्यकता होती है, और इसकी तुलना मानक आव्यूहगुणन से कैसे की जाती है जो लगभग लेता है <math>2 N^3</math> (कहाँ <math>N = 2^n</math>) अंकगणितीय संक्रियाएं, अर्थात स्पर्शोन्मुख | फिर सवाल यह है कि स्ट्रैसेन के एल्गोरिदम के लिए वास्तव में कितने ऑपरेशनों की आवश्यकता होती है, और इसकी तुलना मानक आव्यूहगुणन से कैसे की जाती है जो लगभग लेता है <math>2 N^3</math> (कहाँ <math>N = 2^n</math>) अंकगणितीय संक्रियाएं, अर्थात स्पर्शोन्मुख समिष्टता <math>\Theta (N^3)</math>. | ||
स्ट्रैसेन एल्गोरिथ्म में आवश्यक जोड़ और गुणन की संख्या की गणना निम्नानुसार की जा सकती है: चलो <math>f(n)</math> a के लिए परिचालनों की संख्या हो <math>2^n \times 2^n</math> आव्यूह। फिर स्ट्रैसेन एल्गोरिथम के पुनरावर्ती अनुप्रयोग द्वारा, हम इसे देखते हैं <math>f(n) = 7 f(n-1) + l 4^n</math>, कुछ स्थिरांक के लिए <math>l</math> यह एल्गोरिथम के प्रत्येक अनुप्रयोग में किए गए परिवर्धन की संख्या पर निर्भर करता है। इस तरह <math>f(n) = (7 + o(1))^n</math>, अर्थात, आकार के आव्यूहों को गुणा करने के लिए स्पर्शोन्मुख | स्ट्रैसेन एल्गोरिथ्म में आवश्यक जोड़ और गुणन की संख्या की गणना निम्नानुसार की जा सकती है: चलो <math>f(n)</math> a के लिए परिचालनों की संख्या हो <math>2^n \times 2^n</math> आव्यूह। फिर स्ट्रैसेन एल्गोरिथम के पुनरावर्ती अनुप्रयोग द्वारा, हम इसे देखते हैं <math>f(n) = 7 f(n-1) + l 4^n</math>, कुछ स्थिरांक के लिए <math>l</math> यह एल्गोरिथम के प्रत्येक अनुप्रयोग में किए गए परिवर्धन की संख्या पर निर्भर करता है। इस तरह <math>f(n) = (7 + o(1))^n</math>, अर्थात, आकार के आव्यूहों को गुणा करने के लिए स्पर्शोन्मुख समिष्टता <math>N = 2^n</math> स्ट्रैसेन एल्गोरिथ्म का उपयोग करना है <math>O([7+o(1)]^n) = O(N^{\log_{2}7+o(1)}) \approx O(N^{2.8074})</math>. चूँकि, अंकगणितीय परिचालनों की संख्या में कमी कुछ हद तक कम [[संख्यात्मक स्थिरता]] की कीमत पर आती है,<ref>{{cite journal|last=Webb|first=Miller|title=कम्प्यूटेशनल जटिलता और संख्यात्मक स्थिरता|journal=SIAM J. Comput.|year=1975|volume=4|issue=2|pages=97–107 |doi=10.1137/0204009 }}</ref> और एल्गोरिथ्म को भी अनुभवहीन एल्गोरिदम की तुलना में काफी अधिक मेमोरी की आवश्यकता होती है। दोनों प्रारंभिक आव्यूहमें उनके आयामों को 2 की अगली शक्ति तक विस्तारित किया जाना चाहिए, जिसके परिणामस्वरूप चार गुना तक तत्व संग्रहीत होते हैं, और सात सहायक आव्यूहमें प्रत्येक विस्तारित में चौथाई तत्व होते हैं। | ||
स्ट्रैसेन के एल्गोरिदम की तुलना आव्यूहगुणन करने के सरल तरीके से करने की आवश्यकता है जिसके लिए उप-ब्लॉक के 7 गुणन के अतिरिक्त 8 की आवश्यकता होगी। इसके बाद मानक दृष्टिकोण से अपेक्षित | स्ट्रैसेन के एल्गोरिदम की तुलना आव्यूहगुणन करने के सरल तरीके से करने की आवश्यकता है जिसके लिए उप-ब्लॉक के 7 गुणन के अतिरिक्त 8 की आवश्यकता होगी। इसके बाद मानक दृष्टिकोण से अपेक्षित समिष्टता उत्पन्न हो जाएगी: <math>O(8^{\log_{2}n}) = O(N^{\log_{2}8}) = O(N^3)</math>. इन दो एल्गोरिदम की तुलना से पता चलता है कि स्पर्शोन्मुख रूप से, स्ट्रैसेन का एल्गोरिदम तेज़ है: आकार उपस्थित है <math>N_\text{threshold}</math> ताकि बड़े आव्यूहको पारंपरिक तरीके की तुलना में स्ट्रैसेन के एल्गोरिदम के साथ अधिक कुशलता से गुणा किया जा सके। चूँकि, एसिम्प्टोटिक कथन का अर्थ यह नहीं है कि स्ट्रैसेन का एल्गोरिथ्म हमेशा छोटे आव्यूहके लिए भी तेज़ होता है, और व्यवहार में यह वास्तव में मामला नहीं है: छोटे आव्यूहके लिए, आव्यूहब्लॉक के अतिरिक्त परिवर्धन की लागत संख्या में बचत से अधिक है गुणन. ऐसे अन्य कारक भी हैं जिन्हें ऊपर दिए गए विश्लेषण में सम्मिलित नहीं किया गया है, जैसे कि मेमोरी से प्रोसेसर पर डेटा लोड करने के मध्य आज के हार्डवेयर की लागत में अंतर और इस डेटा पर वास्तव में संचालन करने की लागत। इस प्रकार के विचारों के परिणामस्वरूप, स्ट्रैसेन का एल्गोरिदम सामान्यतः केवल बड़े आव्यूहपर उपयोग किया जाता है। इस प्रकार का प्रभाव वैकल्पिक एल्गोरिदम के साथ और भी अधिक स्पष्ट होता है जैसे कि [[कॉपरस्मिथ-विनोग्राड एल्गोरिदम]] द्वारा: जबकि स्पर्शोन्मुख रूप से और भी तेज़, क्रॉस-ओवर बिंदु <math>N_\text{threshold}</math> इतना बड़ा है कि एल्गोरिथ्म का उपयोग सामान्यतः व्यवहार में आने वाले आव्यूहपर नहीं किया जाता है। | ||
=== | === श्रेणी या द्विरेखीय समिष्टता === | ||
द्विरेखीय | द्विरेखीय समिष्टता या [[द्विरेखीय मानचित्र]] की श्रेणी आव्यूह गुणन की स्पर्शोन्मुख समिष्टता में महत्वपूर्ण अवधारणा है। द्विरेखीय मानचित्र की श्रेणी <math>\phi:\mathbf A \times \mathbf B \rightarrow \mathbf C</math> क्षेत्र F को इस प्रकार परिभाषित किया गया है (कुछ सीमा तक संकेतन का दुरुपयोग) | ||
:<math>R(\phi/\mathbf F) = \min \left\{r\left|\exists f_i\in \mathbf A^*,g_i\in\mathbf B^*,w_i\in\mathbf C , \forall \mathbf a\in\mathbf A, \mathbf b\in\mathbf B, \phi(\mathbf a,\mathbf b) = \sum_{i=1}^r f_i(\mathbf a)g_i(\mathbf b)w_i \right.\right\}</math> | :<math>R(\phi/\mathbf F) = \min \left\{r\left|\exists f_i\in \mathbf A^*,g_i\in\mathbf B^*,w_i\in\mathbf C , \forall \mathbf a\in\mathbf A, \mathbf b\in\mathbf B, \phi(\mathbf a,\mathbf b) = \sum_{i=1}^r f_i(\mathbf a)g_i(\mathbf b)w_i \right.\right\}</math> | ||
दूसरे शब्दों में, | दूसरे शब्दों में, द्विरेखीय मानचित्र की श्रेणी उसकी सबसे छोटी द्विरेखीय गणना की लंबाई है।<ref>{{cite book |last1=Burgisser |last2=Clausen |last3=Shokrollahi |title=बीजगणितीय जटिलता सिद्धांत|publisher=Springer-Verlag |year=1997 |isbn=3-540-60582-7 }}</ref> स्ट्रैसेन के एल्गोरिदम के अस्तित्व से ज्ञात होता है कि श्रेणी <math>2 \times 2</math> आव्यूह गुणन सात से अधिक नहीं है। इसे देखने के लिए, आइए हम इस एल्गोरिदम को (मानक एल्गोरिदम के साथ) ऐसे द्विरेखीय गणना के रूप में व्यक्त करें। आव्यूह की स्थिति में, दोहरे स्थान A* और B* में अदिश '''डबल-डॉट उत्पाद''' द्वारा प्रेरित क्षेत्र F में मानचित्र सम्मिलित होते हैं, (अर्थात इस स्थिति में [[हैडामर्ड उत्पाद (मैट्रिसेस)|हैडामर्ड उत्पाद]] की सभी प्रविष्टियों का योग होता है।) | ||
{| class = "wikitable" | {| class = "wikitable" | ||
| || colspan="3" | | | || colspan="3" | मानक एल्गोरिदम || ||colspan="3" | स्ट्रैसेन एल्गोरिथ्म | ||
|- | |- | ||
|| <math>i</math> || <math>f_i (\mathbf{a})</math> || <math>g_i (\mathbf{b})</math> || <math>w_i</math> || || <math>f_i (\mathbf{a})</math> || <math>g_i (\mathbf{b})</math> || <math>w_i</math> | || <math>i</math> || <math>f_i (\mathbf{a})</math> || <math>g_i (\mathbf{b})</math> || <math>w_i</math> || || <math>f_i (\mathbf{a})</math> || <math>g_i (\mathbf{b})</math> || <math>w_i</math> | ||
Line 193: | Line 194: | ||
|colspan="3"|<math>\mathbf a\mathbf b = \sum_{i=1}^7 f_i(\mathbf a)g_i(\mathbf b)w_i</math> | |colspan="3"|<math>\mathbf a\mathbf b = \sum_{i=1}^7 f_i(\mathbf a)g_i(\mathbf b)w_i</math> | ||
|} | |} | ||
यह दिखाया जा सकता है कि प्रारंभिक गुणन की कुल संख्या <math>L</math> | यह दिखाया जा सकता है कि प्रारंभिक गुणन की कुल संख्या आव्यूह गुणन के लिए आवश्यक <math>L</math> श्रेणी के साथ बंधा हुआ है <math>R</math>, अर्थात। <math>L = \Theta(R)</math>, या अधिक विशेष रूप से, चूंकि स्थिरांक <math>R / 2 \le L \le R</math> ज्ञात हैं। श्रेणी की उपयोगी संपत्ति यह है कि यह [[टेंसर उत्पाद|टेंसर उत्पादों]] के लिए उपगुणक है, और यह किसी को यह दिखाने में सक्षम बनाता है <math>2^n \times 2^n \times 2^n</math> आव्यूह गुणन इससे अधिक नहीं पूर्ण किया जा सकता है <math>7n</math> किसी के लिए प्राथमिक गुणन <math>n</math> है। (यह <math>n</math>-फोल्ड टेंसर उत्पाद का <math>2 \times 2 \times 2</math> स्वयं के साथ आव्यूह गुणन मानचित्र - <math>n</math>-वें टेंसर पावर-दिखाए गए एल्गोरिदम में पुनरावर्ती चरण द्वारा अनुभूत किया जाता है।) | ||
===कैश व्यवहार=== | ===कैश व्यवहार=== | ||
स्ट्रैसेन का एल्गोरिदम [[कैश-विस्मृत एल्गोरिथ्म]] है। इसके [[सीपीयू कैश]] व्यवहार एल्गोरिदम के विश्लेषण से | स्ट्रैसेन का एल्गोरिदम [[कैश-विस्मृत एल्गोरिथ्म]] है। इसके [[सीपीयू कैश|कैश]] व्यवहार एल्गोरिदम के विश्लेषण से ज्ञात होता है कि ऐसा हुआ है: | ||
:<math>\Theta \left(1 + \frac{n^2}{b} + \frac{n^{\log_2 7}}{b\sqrt{M}} \right)</math> | :<math>\Theta \left(1 + \frac{n^2}{b} + \frac{n^{\log_2 7}}{b\sqrt{M}} \right)</math> | ||
कैश अपने निष्पादन के | कैश अपने निष्पादन के समय छूट जाता है, आकार का आदर्श कैश मान <math>M</math> लिया जाता है (अर्थात साथ <math>M / b</math> लंबाई की रेखाएँ <math>b</math> है)।<ref name="prokop">{{cite conference |first1=M. |last1=Frigo |first2=C. E. |last2=Leiserson |authorlink2=Charles Leiserson |first3=H. |last3=Prokop |authorlink3=Harald Prokop |first4=S. |last4=Ramachandran |title=कैश-विस्मृत एल्गोरिदम|conference=Proc. IEEE Symp. on Foundations of Computer Science (FOCS) |pages=285–297 |year=1999 |url=http://supertech.csail.mit.edu/papers/FrigoLePr99.pdf}}</ref>{{rp|13}} | ||
== कार्यान्वयन संबंधी विचार == | == कार्यान्वयन संबंधी विचार == | ||
उपरोक्त विवरण में कहा गया है कि आव्यूहवर्गाकार हैं, और आकार दो की घात है, और यदि आवश्यक हो तो पैडिंग का उपयोग किया जाना चाहिए। यह प्रतिबंध अदिश गुणन की सीमा तक पहुंचने तक आव्यूहको पुनरावर्ती रूप से आधे में विभाजित करने की अनुमति देता है। प्रतिबंध स्पष्टीकरण और | उपरोक्त विवरण में कहा गया है कि आव्यूहवर्गाकार हैं, और आकार दो की घात है, और यदि आवश्यक हो तो पैडिंग का उपयोग किया जाना चाहिए। यह प्रतिबंध अदिश गुणन की सीमा तक पहुंचने तक आव्यूहको पुनरावर्ती रूप से आधे में विभाजित करने की अनुमति देता है। प्रतिबंध स्पष्टीकरण और समिष्टता के विश्लेषण को सरल बनाता है, किन्तु वास्तव में यह आवश्यक नहीं है;<ref>{{cite journal |last=Higham |first=Nicholas J. |title=Exploiting fast matrix multiplication within the level 3 BLAS |journal=ACM Transactions on Mathematical Software |volume=16 |issue=4 |year=1990 |pages=352–368 |url=http://www.maths.manchester.ac.uk/~higham/papers/high90s.pdf |doi=10.1145/98267.98290|hdl=1813/6900 |s2cid=5715053 |hdl-access=free }}</ref> | ||
और वास्तव में, वर्णित आव्यूहको पैडिंग करने से गणना का समय बढ़ जाएगा और पहली जगह में विधि का उपयोग करके प्राप्त काफी संकीर्ण समय की बचत को आसानी से समाप्त किया जा सकता है। | और वास्तव में, वर्णित आव्यूहको पैडिंग करने से गणना का समय बढ़ जाएगा और पहली जगह में विधि का उपयोग करके प्राप्त काफी संकीर्ण समय की बचत को आसानी से समाप्त किया जा सकता है। | ||
Revision as of 19:51, 22 July 2023
रैखिक बीजगणित में, स्ट्रैसेन एल्गोरिदम, जिसका नाम वोल्कर स्ट्रैसेन के नाम पर रखा गया है, जो आव्यूह गुणन के लिए एल्गोरिदम है। यह उत्तम एसिम्प्टोटिक समिष्टता के साथ बड़े आव्यूह के लिए मानक आव्यूह गुणन एल्गोरिदम से तीव्र है, चूँकि छोटे आव्यूह के लिए अनुभवहीन एल्गोरिदम प्रायः उत्तम होता है। स्ट्रैसन एल्गोरिदम अत्यधिक बड़े आव्यूह के लिए सबसे तीव्र ज्ञात एल्गोरिदम से धीमा है, किन्तु ऐसे गैलेक्टिक एल्गोरिदम व्यवहार में उपयोगी नहीं हैं, क्योंकि वे व्यावहारिक आकार के आव्यूहके लिए अधिक धीमे होते हैं। छोटे आव्यूह के लिए और भी तीव्र एल्गोरिदम उपस्थित हैं।
स्ट्रैसन का एल्गोरिदम किसी भी वलय के लिए कार्य करता है, जैसे कि प्लस/गुणा, किन्तु सभी सेमीरिंग्स के लिए नहीं, जैसे कि मिन-प्लस या बूलियन बीजगणित, जहां अनुभवहीन एल्गोरिदम अभी भी कार्य करता है, और तथाकथित कॉम्बिनेटरियल आव्यूह गुणन है।
इतिहास
वोल्कर स्ट्रैसन ने प्रथम बार इस एल्गोरिदम को 1969 में प्रकाशित किया और इस प्रकार यह प्रमाणित हुआ कि सामान्य आव्यूह गुणन एल्गोरिथ्म इष्टतम नहीं था।[1] स्ट्रैसेन एल्गोरिदम के प्रकाशन के परिणामस्वरूप आव्यूह गुणन के संबंध में अधिक शोध हुआ, जिससे असम्बद्ध रूप से निचली सीमाएं और कम्प्यूटेशनल ऊपरी सीमाएं उत्तम हुईं।
एल्गोरिथम
होने देना , वलयके ऊपर दो वर्ग आव्यूहबनें (गणित) , उदाहरण के लिए आव्यूह जिनकी प्रविष्टियाँ पूर्णांक या वास्तविक संख्याएँ हैं। आव्यूहगुणन का लक्ष्य आव्यूहउत्पाद की गणना करना है . एल्गोरिथम की निम्नलिखित व्याख्या मानती है कि इन सभी आव्यूहों के आकार दो की घात हैं (अर्थात्, ), किन्तु यह केवल वैचारिक रूप से आवश्यक है - यदि आव्यूह, प्रकार के नहीं हैं , दो की घात के आकार वाले आव्यूहप्राप्त करने के लिए लुप्त पंक्तियों और स्तंभों को शून्य से भरा जा सकता है - चूँकि एल्गोरिथ्म के वास्तविक कार्यान्वयन व्यवहार में ऐसा नहीं करते हैं।
स्ट्रैसेन एल्गोरिथम विभाजन , और समान आकार के ब्लॉक आव्यूह में
साथ . अनुभवहीन एल्गोरिदम होगा:
यह निर्माण गुणन की संख्या को कम नहीं करता है: गणना के लिए आव्यूहब्लॉक के 8 गुणन की अभी भी आवश्यकता है मैट्रिक्स, मानक आव्यूहगुणन का उपयोग करते समय समान संख्या में गुणन की आवश्यकता होती है।
स्ट्रैसेन एल्गोरिथ्म इसके अतिरिक्त नए आव्यूहको परिभाषित करता है:
केवल 7 गुणन का उपयोग करके (प्रत्येक के लिए )। ) के अतिरिक्त 8. अब हम व्यक्त कर सकते हैं के अनुसार :
हम इस विभाजन प्रक्रिया को तब तक दोहराते रहते हैं जब तक कि उपमात्राएं संख्याओं (वलयके तत्व) में परिवर्तित न हो जाएं ). यदि, जैसा कि ऊपर बताया गया है, मूल आव्यूहका आकार 2 की शक्ति नहीं था, तो परिणामी उत्पाद में शून्य पंक्तियाँ और स्तंभ होंगे जैसे और , और फिर इन्हें (छोटा) आव्यूहप्राप्त करने के लिए इस बिंदु पर हटा दिया जाएगा हम वास्तव में चाहते थे।
स्ट्रैसेन के एल्गोरिदम का व्यावहारिक कार्यान्वयन छोटे पर्याप्त सबमैट्रिस के लिए आव्यूहगुणन के मानक तरीकों पर स्विच करता है, जिसके लिए वे एल्गोरिदम अधिक कुशल होते हैं। वह विशेष क्रॉसओवर बिंदु जिसके लिए स्ट्रैसेन का एल्गोरिदम अधिक कुशल है, विशिष्ट कार्यान्वयन और हार्डवेयर पर निर्भर करता है। पहले के लेखकों ने अनुमान लगाया था कि अनुकूलित कार्यान्वयन के लिए स्ट्रैसेन का एल्गोरिदम 32 से 128 तक की चौड़ाई वाले आव्यूहके लिए तेज़ है।[2] चूँकि, यह देखा गया है कि यह क्रॉसओवर पॉइंट हाल के वर्षों में बढ़ रहा है, और 2010 के अध्ययन में पाया गया कि स्ट्रैसेन के एल्गोरिथ्म का भी चरण प्रायः वर्तमान आर्किटेक्चर पर अत्यधिक अनुकूलित पारंपरिक गुणन की तुलना में फायदेमंद नहीं होता है, जब तक कि आव्यूहका आकार अधिक न हो जाए 1000 या अधिक, और यहां तक कि कई हजार के आव्यूहआकार के लिए भी लाभ सामान्यतः सीमांत (लगभग 10% या उससे कम) होता है।[3] हालिया अध्ययन (2016) में 512 जितने छोटे आव्यूहके लिए लाभ और लगभग 20% का लाभ देखा गया।[4]
विनोग्राड रूप
विनोग्राड द्वारा शोध किये गए निम्नलिखित रूप का उपयोग करके आव्यूह परिवर्धन की संख्या को कम करना संभव है:
जहां u = (c - a)(C - D), v = (c + d)(C - A), w = aA + (c + d - a)(A + D - C) है। इससे आव्यूह में जोड़ और घटाव की संख्या 18 से घटकर 15 हो जाती है। आव्यूह गुणन की संख्या अभी भी 7 है, और स्पर्शोन्मुख समिष्टता समान है।[5]
स्पर्शोन्मुख जटिलता
उपरोक्त एल्गोरिदम की रूपरेखा से पता चला है कि आव्यूहके उप-ब्लॉकों के लिए पारंपरिक 8, मैट्रिक्स-आव्यूहगुणन के अतिरिक्त, केवल 7 से ही छुटकारा पाया जा सकता है। दूसरी ओर, किसी को ब्लॉकों का जोड़ और घटाव करना पड़ता है, चूँकि यह समग्र समिष्टता के लिए कोई चिंता का विषय नहीं है: आकार के आव्यूहजोड़ना केवल आवश्यकता है संचालन जबकि गुणन काफी हद तक अधिक महंगा है (परंपरागत रूप से)। जोड़ या गुणन संक्रियाएँ)।
फिर सवाल यह है कि स्ट्रैसेन के एल्गोरिदम के लिए वास्तव में कितने ऑपरेशनों की आवश्यकता होती है, और इसकी तुलना मानक आव्यूहगुणन से कैसे की जाती है जो लगभग लेता है (कहाँ ) अंकगणितीय संक्रियाएं, अर्थात स्पर्शोन्मुख समिष्टता .
स्ट्रैसेन एल्गोरिथ्म में आवश्यक जोड़ और गुणन की संख्या की गणना निम्नानुसार की जा सकती है: चलो a के लिए परिचालनों की संख्या हो आव्यूह। फिर स्ट्रैसेन एल्गोरिथम के पुनरावर्ती अनुप्रयोग द्वारा, हम इसे देखते हैं , कुछ स्थिरांक के लिए यह एल्गोरिथम के प्रत्येक अनुप्रयोग में किए गए परिवर्धन की संख्या पर निर्भर करता है। इस तरह , अर्थात, आकार के आव्यूहों को गुणा करने के लिए स्पर्शोन्मुख समिष्टता स्ट्रैसेन एल्गोरिथ्म का उपयोग करना है . चूँकि, अंकगणितीय परिचालनों की संख्या में कमी कुछ हद तक कम संख्यात्मक स्थिरता की कीमत पर आती है,[6] और एल्गोरिथ्म को भी अनुभवहीन एल्गोरिदम की तुलना में काफी अधिक मेमोरी की आवश्यकता होती है। दोनों प्रारंभिक आव्यूहमें उनके आयामों को 2 की अगली शक्ति तक विस्तारित किया जाना चाहिए, जिसके परिणामस्वरूप चार गुना तक तत्व संग्रहीत होते हैं, और सात सहायक आव्यूहमें प्रत्येक विस्तारित में चौथाई तत्व होते हैं।
स्ट्रैसेन के एल्गोरिदम की तुलना आव्यूहगुणन करने के सरल तरीके से करने की आवश्यकता है जिसके लिए उप-ब्लॉक के 7 गुणन के अतिरिक्त 8 की आवश्यकता होगी। इसके बाद मानक दृष्टिकोण से अपेक्षित समिष्टता उत्पन्न हो जाएगी: . इन दो एल्गोरिदम की तुलना से पता चलता है कि स्पर्शोन्मुख रूप से, स्ट्रैसेन का एल्गोरिदम तेज़ है: आकार उपस्थित है ताकि बड़े आव्यूहको पारंपरिक तरीके की तुलना में स्ट्रैसेन के एल्गोरिदम के साथ अधिक कुशलता से गुणा किया जा सके। चूँकि, एसिम्प्टोटिक कथन का अर्थ यह नहीं है कि स्ट्रैसेन का एल्गोरिथ्म हमेशा छोटे आव्यूहके लिए भी तेज़ होता है, और व्यवहार में यह वास्तव में मामला नहीं है: छोटे आव्यूहके लिए, आव्यूहब्लॉक के अतिरिक्त परिवर्धन की लागत संख्या में बचत से अधिक है गुणन. ऐसे अन्य कारक भी हैं जिन्हें ऊपर दिए गए विश्लेषण में सम्मिलित नहीं किया गया है, जैसे कि मेमोरी से प्रोसेसर पर डेटा लोड करने के मध्य आज के हार्डवेयर की लागत में अंतर और इस डेटा पर वास्तव में संचालन करने की लागत। इस प्रकार के विचारों के परिणामस्वरूप, स्ट्रैसेन का एल्गोरिदम सामान्यतः केवल बड़े आव्यूहपर उपयोग किया जाता है। इस प्रकार का प्रभाव वैकल्पिक एल्गोरिदम के साथ और भी अधिक स्पष्ट होता है जैसे कि कॉपरस्मिथ-विनोग्राड एल्गोरिदम द्वारा: जबकि स्पर्शोन्मुख रूप से और भी तेज़, क्रॉस-ओवर बिंदु इतना बड़ा है कि एल्गोरिथ्म का उपयोग सामान्यतः व्यवहार में आने वाले आव्यूहपर नहीं किया जाता है।
श्रेणी या द्विरेखीय समिष्टता
द्विरेखीय समिष्टता या द्विरेखीय मानचित्र की श्रेणी आव्यूह गुणन की स्पर्शोन्मुख समिष्टता में महत्वपूर्ण अवधारणा है। द्विरेखीय मानचित्र की श्रेणी क्षेत्र F को इस प्रकार परिभाषित किया गया है (कुछ सीमा तक संकेतन का दुरुपयोग)
दूसरे शब्दों में, द्विरेखीय मानचित्र की श्रेणी उसकी सबसे छोटी द्विरेखीय गणना की लंबाई है।[7] स्ट्रैसेन के एल्गोरिदम के अस्तित्व से ज्ञात होता है कि श्रेणी आव्यूह गुणन सात से अधिक नहीं है। इसे देखने के लिए, आइए हम इस एल्गोरिदम को (मानक एल्गोरिदम के साथ) ऐसे द्विरेखीय गणना के रूप में व्यक्त करें। आव्यूह की स्थिति में, दोहरे स्थान A* और B* में अदिश डबल-डॉट उत्पाद द्वारा प्रेरित क्षेत्र F में मानचित्र सम्मिलित होते हैं, (अर्थात इस स्थिति में हैडामर्ड उत्पाद की सभी प्रविष्टियों का योग होता है।)
मानक एल्गोरिदम | स्ट्रैसेन एल्गोरिथ्म | ||||||
1 | |||||||
2 | |||||||
3 | |||||||
4 | |||||||
5 | |||||||
6 | |||||||
7 | |||||||
8 | |||||||
यह दिखाया जा सकता है कि प्रारंभिक गुणन की कुल संख्या आव्यूह गुणन के लिए आवश्यक श्रेणी के साथ बंधा हुआ है , अर्थात। , या अधिक विशेष रूप से, चूंकि स्थिरांक ज्ञात हैं। श्रेणी की उपयोगी संपत्ति यह है कि यह टेंसर उत्पादों के लिए उपगुणक है, और यह किसी को यह दिखाने में सक्षम बनाता है आव्यूह गुणन इससे अधिक नहीं पूर्ण किया जा सकता है किसी के लिए प्राथमिक गुणन है। (यह -फोल्ड टेंसर उत्पाद का स्वयं के साथ आव्यूह गुणन मानचित्र - -वें टेंसर पावर-दिखाए गए एल्गोरिदम में पुनरावर्ती चरण द्वारा अनुभूत किया जाता है।)
कैश व्यवहार
स्ट्रैसेन का एल्गोरिदम कैश-विस्मृत एल्गोरिथ्म है। इसके कैश व्यवहार एल्गोरिदम के विश्लेषण से ज्ञात होता है कि ऐसा हुआ है:
कैश अपने निष्पादन के समय छूट जाता है, आकार का आदर्श कैश मान लिया जाता है (अर्थात साथ लंबाई की रेखाएँ है)।[8]: 13
कार्यान्वयन संबंधी विचार
उपरोक्त विवरण में कहा गया है कि आव्यूहवर्गाकार हैं, और आकार दो की घात है, और यदि आवश्यक हो तो पैडिंग का उपयोग किया जाना चाहिए। यह प्रतिबंध अदिश गुणन की सीमा तक पहुंचने तक आव्यूहको पुनरावर्ती रूप से आधे में विभाजित करने की अनुमति देता है। प्रतिबंध स्पष्टीकरण और समिष्टता के विश्लेषण को सरल बनाता है, किन्तु वास्तव में यह आवश्यक नहीं है;[9] और वास्तव में, वर्णित आव्यूहको पैडिंग करने से गणना का समय बढ़ जाएगा और पहली जगह में विधि का उपयोग करके प्राप्त काफी संकीर्ण समय की बचत को आसानी से समाप्त किया जा सकता है।
अच्छा कार्यान्वयन निम्नलिखित का पालन करेगा:
- स्केलर की सीमा तक स्ट्रैसन एल्गोरिदम का उपयोग करना आवश्यक या वांछनीय नहीं है। पारंपरिक आव्यूहगुणन की तुलना में, एल्गोरिथ्म काफी कुछ जोड़ता है जोड़/घटाव में कार्यभार; इसलिए निश्चित आकार से नीचे, पारंपरिक गुणन का उपयोग करना उत्तम होगा। इस प्रकार, उदाहरण के लिए, ए गद्देदार होने की जरूरत नहीं है , चूँकि इसे निम्न में विभाजित किया जा सकता है फिर आव्यूहऔर पारंपरिक गुणन का उपयोग उस स्तर पर किया जा सकता है।
- यह विधि वास्तव में किसी भी आयाम के वर्ग आव्यूहों पर लागू की जा सकती है।[3] यदि आयाम सम है, तो वे वर्णित के अनुसार आधे में विभाजित हो जाते हैं। यदि आयाम विषम है, तो पहले पंक्ति और कॉलम द्वारा शून्य पैडिंग लागू की जाती है। इस तरह की पैडिंग को तुरंत और आलस्य से लागू किया जा सकता है, और परिणाम बनते ही अतिरिक्त पंक्तियों और स्तंभों को हटा दिया जाता है। उदाहरण के लिए, मान लीजिए आव्यूहहैं . उन्हें विभाजित किया जा सकता है ताकि ऊपरी-बाएँ भाग हो और निचला-दायाँ है . जहां भी संचालन के लिए इसकी आवश्यकता होती है, वहां के आयाम शून्य गद्देदार हैं पहला। उदाहरण के लिए, ध्यान दें कि उत्पाद इसका उपयोग केवल आउटपुट की निचली पंक्ति में किया जाता है, इसलिए इसे केवल होना आवश्यक है ऊँची पंक्तियाँ; और इस प्रकार बायाँ कारक इसे उत्पन्न करने के लिए केवल आवश्यकता होती है ऊँची पंक्तियाँ; तदनुसार, उस राशि को पैड करने की कोई आवश्यकता नहीं है पंक्तियाँ; इसे केवल पैड करना आवश्यक है को मिलान करने के लिए कॉलम .
इसके अतिरिक्त, आव्यूहों का वर्गाकार होना आवश्यक नहीं है। गैर-वर्ग आव्यूहों को समान तरीकों का उपयोग करके आधे में विभाजित किया जा सकता है, जिससे छोटे गैर-वर्ग आव्यूह प्राप्त होते हैं। यदि आव्यूहपर्याप्त रूप से गैर-वर्ग हैं तो सरल तरीकों का उपयोग करके प्रारंभिक ऑपरेशन को अधिक वर्ग उत्पादों में कम करना सार्थक होगा जो अनिवार्य रूप से हैं , उदाहरण के लिए:
- आकार का उत्पाद 20 अलग-अलग के रूप में किया जा सकता है संचालन, परिणाम बनाने के लिए व्यवस्थित;
- आकार का उत्पाद 10 अलग-अलग के रूप में किया जा सकता है संचालन, परिणाम बनाने के लिए संक्षेपित।
ये तकनीकें कार्यान्वयन को और अधिक जटिल बना देंगी, केवल दो वर्ग की शक्ति तक पैडिंग करने की तुलना में; चूँकि, यह उचित धारणा है कि पारंपरिक गुणन के अतिरिक्त स्ट्रैसेन का कार्यान्वयन करने वाला कोई भी व्यक्ति, कार्यान्वयन की सरलता की तुलना में कम्प्यूटेशनल दक्षता को अधिक प्राथमिकता देगा।
व्यवहार में, स्ट्रैसेन के एल्गोरिदम को छोटे आव्यूहके लिए भी पारंपरिक गुणन की तुलना में उत्तम प्रदर्शन प्राप्त करने के लिए लागू किया जा सकता है, ऐसे आव्यूहके लिए जो बिल्कुल भी वर्गाकार नहीं हैं, और उच्च प्रदर्शन वाले पारंपरिक गुणन के लिए पहले से ही आवश्यक बफ़र्स से परे कार्यक्षेत्र की आवश्यकता के बिना।[4]
यह भी देखें
- गणितीय संक्रियाओं की कम्प्यूटेशनल जटिलता
- गॉस-जॉर्डन उन्मूलन
- कॉपरस्मिथ-विनोग्राड एल्गोरिथम
- Z-ऑर्डर (वक्र)|Z-ऑर्डर आव्यूहप्रतिनिधित्व
- करात्सुबा एल्गोरिदम, एन-अंकीय पूर्णांकों को गुणा करने के लिए के अतिरिक्त अंदर समय
- समान गुणन एल्गोरिथ्म#Complex_number_multiplication 4 के अतिरिक्त 3 वास्तविक गुणन का उपयोग करके दो जटिल संख्याओं को गुणा करता है
- टूम-कुक गुणन|टूम-कुक एल्गोरिदम, करात्सुबा एल्गोरिदम का तेज़ सामान्यीकरण जो समय में 2 से अधिक ब्लॉकों में पुनरावर्ती विभाजन और जीत अपघटन की अनुमति देता है
संदर्भ
- ↑ Strassen, Volker (1969). "गाऊसी उन्मूलन इष्टतम नहीं है". Numer. Math. 13 (4): 354–356. doi:10.1007/BF02165411. S2CID 121656251.
- ↑ Skiena, Steven S. (1998), "§8.2.3 Matrix multiplication", The Algorithm Design Manual, Berlin, New York: Springer-Verlag, ISBN 978-0-387-94860-7.
- ↑ 3.0 3.1 D'Alberto, Paolo; Nicolau, Alexandru (2005). एटलस के प्रदर्शन को बढ़ावा देने के लिए रिकर्सन का उपयोग करना (PDF). Sixth Int'l Symp. on High Performance Computing.
- ↑ 4.0 4.1 Huang, Jianyu; Smith, Tyler M.; Henry, Greg M.; van de Geijn, Robert A. (13 Nov 2016). स्ट्रैसेन का एल्गोरिदम पुनः लोड किया गया. SC16: The International Conference for High Performance Computing, Networking, Storage and Analysis. IEEE Press. pp. 690–701. doi:10.1109/SC.2016.58. ISBN 9781467388153. Retrieved 1 Nov 2022.
- ↑ Knuth (1997), p. 500.
- ↑ Webb, Miller (1975). "कम्प्यूटेशनल जटिलता और संख्यात्मक स्थिरता". SIAM J. Comput. 4 (2): 97–107. doi:10.1137/0204009.
- ↑ Burgisser; Clausen; Shokrollahi (1997). बीजगणितीय जटिलता सिद्धांत. Springer-Verlag. ISBN 3-540-60582-7.
- ↑ Frigo, M.; Leiserson, C. E.; Prokop, H.; Ramachandran, S. (1999). कैश-विस्मृत एल्गोरिदम (PDF). Proc. IEEE Symp. on Foundations of Computer Science (FOCS). pp. 285–297.
- ↑ Higham, Nicholas J. (1990). "Exploiting fast matrix multiplication within the level 3 BLAS" (PDF). ACM Transactions on Mathematical Software. 16 (4): 352–368. doi:10.1145/98267.98290. hdl:1813/6900. S2CID 5715053.
- Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein. Introduction to Algorithms, Second Edition. MIT Press and McGraw-Hill, 2001. ISBN 0-262-03293-7. Chapter 28: Section 28.2: Strassen's algorithm for matrix multiplication, pp. 735–741.
- Knuth, Donald (1997). The Art of Computer Programming, Seminumerical Algorithms. Vol. II (3rd ed.). Addison-Wesley. ISBN 0-201-89684-2.
बाहरी संबंध
- Weisstein, Eric W. "Strassen's Formulas". MathWorld. (also includes formulas for fast matrix inversion)
- Tyler J. Earnest, Strassen's Algorithm on the Cell Broadband Engine