यह महत्वपूर्ण है कि, आपके द्वारा प्रदान की गई परिभाषा में , मैट्रिक्स एक परिमित क्षेत्र में रहता है, जहाँ अभाज्य है , कहते हैं । यह आपको Euler के प्रमेय का उपयोग करने की अनुमति देता है डबल- घातांक की गणना करने के लिए जो कि समय में मैट्रिक्स में दिखाई देता है ।
अन्यथा, यह मुश्किल भी factorising बिना मैट्रिक्स गुणांक की गणना करने लगता है । m a q eZmmओ ( लॉग ( एम एन ))aqemodmएक क्ष मैं ≡ एक क्ष मैंO(log(mn)M(logm))m
aqi≡aqi(modφ(m))(modm)
m
यदि अभाज्य है या कुशलतापूर्वक फैक्टर किया जा सकता है, तो सबसे अधिक मामले की जटिलता उन गुणा की संख्या पर हावी है, जो आपको मैट्रिक्स गुणा । उदाहरण के लिए, स्मिथ सामान्य फॉर्म अप्रोच, जिसका मैंने पार्टनर पोस्ट में उल्लेख किया है, यह निर्धारित समय में गणना करेगा यदि आप "धीमी गति" का उपयोग करते हैं; गुणन एल्गोरिदम । 2. को 2.373 चुना जा सकता है।O ( n ω ) O ( n ω)mO(nω) * ωO(nωlog2mlog(mn))∗ω
जब से आपको मैट्रिक्स के गुणांकों को दोगुना-बढ़ाना होगा, आपको मूर बनाम वांडरमॉन्ड में एक धीमी गति से गिरावट आती है । आप गुणनखंडों कर सकते हैं जब यह धीमी गति से नीचे बस पर polylogarithmic है । यदि नहीं, तो प्रस्तुत एल्गोरिथ्म आपको पर डबल-मॉड्यूलर-एक्सपेंशनशिप में कुक कमी देता है ।एम जेड एमmmZm
नोट *: पूर्णांक गुणन के लिए तेज एल्गोरिदम आपको साथ को बदलने की अनुमति देता है ।एम ( लॉग एम लॉग लॉग एम )log2mM(logmloglogm)
अद्यतन : प्राप्त करने की संभावना पर ।O(nlogan)
मेरे पास इसके लिए कोई निश्चित उत्तर नहीं है, लेकिन मुझे कुछ ऐसी जानकारी मिली, जो आपकी खोज को और कस सकती है।
संरचित मैट्रिसेस के लिए एल्गोरिदम जो समय में निर्धारकों की तरह मात्राओं की गणना करते हैं, उन्हें साहित्य में "सुपरफास्ट" कहा जाता है। सभी ज्ञात "सुपरफास्ट" संरचित मैट्रिसेस के लिए एल्गोरिदम (वैंडर्मोंडे, टोप्लेट्ज़, हैंकेल) कम "विस्थापन रैंक" के रूप में जाने जाने वाले इस मैट्रिस की एक सामान्य संपत्ति पर भरोसा करते हैं। इस पुस्तक के पहले अध्याय (खुली पहुंच वाले पृष्ठ), या इस लेख में [ACM] , [PDF] पर चर्चा करें ।O(nlogan)
मैंने जो पढ़ा है, उससे मूर मैट्रिक्स , यदि आप मैट्रिक्स , को खोजने में सक्षम थे , जैसे कि नया मैट्रिक्स (या वैकल्पिक रूप से ) निम्नलिखित संरचना हैM A B L ( M ) = A M - M B L ( M ) = M - A M Bm×nMABL(M)=AM−MBL(M)=M−AMB
L(M)=∑k=1rgkhTk
, और रैंक छोटा है (या तो स्थिर है या घिरा हुआ है , तो आप मौजूदा तकनीकों को लागू कर सकते हैं (पुस्तक के अध्याय 5, खुले- पहुँच पृष्ठों) को त्रिकोणीय करने के लिए और, इसलिए, का उपयोग करके, गणना करें । ऊपर, , । अगर आपको पूरी बात पढ़ने के लिए ऊपर की किताब नहीं मिल रही है, तो इस लेख में इन तरीकों के बारे में बहुत सारी जानकारी है।o ( मिr>0M det M O ( n log 2 n ) g k h ko(min{m,n})MdetMO(nlog2n)gkhk
दुर्भाग्य से, मैं मूर मैट्रिक्स (वैंडर्मोंडे है) के लिए एक कम-विस्थापन-रैंक संरचना नहीं पा सका है। यहां मुख्य जटिलता दोहरे घातीय के "गैर-रैखिक" प्रकृति से उत्पन्न होती है। यदि यह मदद करता है, तो वैंडर्मोंडे, कैची, टोप्लेट्ज़, हेंकेल के मामलों को पुस्तक में काम किया जाता है।