मैट्रिक्स श्रृंखला गुणन और घातांक


13

यदि मेरे पास क्रमशः दो आयाम और , तो क्रमशः और , और गणना करना चाहते हैं , यह पहले रूप में अभिव्यक्ति को फिर से लिखने के लिए अधिक कुशल है। और केवल तब संख्यात्मक रूप से मूल्यांकन करते हैं, क्योंकि आयाम लेकिन आयाम ।B 1000 × 2 2 × 1000 ( A B ) 5000 A ( B A ) 4999 B A B 1000 × 1000 B A 2 × 2AB1000×22×1000(AB)5000A(BA)4999BAB1000×1000BA2×2

मैं इस समस्या का एक सामान्यीकृत संस्करण हल करना चाहता हूं। एक अभिव्यक्ति युक्त अनुकूलन करने के लिए एक यथोचित कुशल एल्गोरिथ्म (क्रूर बल नहीं) है:

  • ज्ञात आयामों के फ्री मैट्रिक्स चर
  • मनमाने उपमहाद्वीपों के उत्पाद
  • प्राकृतिक शक्ति के लिए उठाए गए मनमाने उपसंहार

... इतना है कि यह ठोस मैट्रिक्स मूल्यों के साथ मुक्त मैट्रिक्स चर को प्रतिस्थापित करने के बाद संख्यात्मक रूप से मूल्यांकन करने के लिए कम से कम काम लेता है?

मैट्रिक्स श्रृंखला गुणा समस्या मेरी समस्या का एक विशेष मामला है।


संपादित करें:

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

एक शक्ति के लिए उठाए गए प्रत्येक उत्पाद के लिए, , कारकों के प्रत्येक चक्रीय क्रमांकन पर विचार करें:(A1A2…Ak)n

  • (A1A2…Ak)n
  • A1(A2…AkA1)n−1A2…Ak
  • A1A2(A3…AkA1A2)n−1A3…Ak
  • ...
  • A1A2…Ak−1(AkA1A2…Ak−1)n−1Ak

... फिर से। प्रत्येक शक्ति को स्क्वर्टिंग (स्पष्ट रूप से) द्वारा घातांक का उपयोग करके गणना की जानी है, और अन्य सभी उत्पादों की गणना मैट्रिक्स श्रृंखला गुणन एल्गोरिथम द्वारा लौटे इष्टतम क्रम का उपयोग करके की जानी है।


संपादित करें:

मेरे पिछले संपादन में उल्लिखित विचार अभी भी कुछ हद तक गैर-अपनाने योग्य है। एल्गोरिथ्म स्क्वैरिंग द्वारा प्रतिपादक वास्तव में या के रूप के भावों का मूल्यांकन करता है , जहाँ आवश्यक रूप से पहचान मैट्रिक्स नहीं है। लेकिन मेरे एल्गोरिथ्म के साथ एल्गोरिथ्म के वर्ग द्वारा घातांक उपयोग करने की संभावना पर विचार नहीं करता नहीं पहचान मैट्रिक्स के बराबर।KAnAnKKK


@ gnasher729: क्षमा करें, मुझे अधिक स्पष्ट होना चाहिए था। मैं सभी संभावनाओं को पाटना नहीं चाहता, ठीक उसी कारण से आप ब्रूट बल द्वारा मैट्रिक्स श्रृंखला गुणन को हल नहीं करना चाहेंगे। मैंने सिर्फ उसी के अनुसार प्रश्न संपादित किया।
— पियोन

ध्यान दें कि आपके द्वारा चतुराई से फैक्टर एक्सप्रेशन भी यह रूप में फैक्टर करने के लिए अधिक चतुर है । बिंदु है, आपको संभवतः तेजी से घातांक के लिए मैट्रिक्स श्रृंखला गुणन और अन्य मानक एल्गोरिथ्म के बीच मिश्रण करना होगा। A(BA)4999B
A(BA)2∗(2∗1249+1)+1B
— अपिवट चनावेबुल २४'१

@ बेलिसका: वास्तव में, यह ठीक यही है कि मैं क्या करना चाहता हूं: संयुक्त समस्या के लिए एकल एल्गोरिथ्म में स्क्वैरिंग करके मैट्रिक्स श्रृंखला गुणन और घातांक को मिलाएं। लेकिन कुछ pesky मुद्दे हैं। को देखते हुए , मैं एल्गोरिथ्म को आगे , इत्यादि से कैसे रोक सकता हूं ? A(BA)n−1BAB(AB)n−2ABABA(BA)n−3BAB
— पियोन

हम मैट्रिक्स एक्सपेंशनशिप के लिए Eigen वेक्टर के आधार को बदलते हैं और जब सभी मैट्रिक्स में 1 शक्ति होती है तो हम मैट्रिक्स श्रृंखला गुणन का उपयोग कर सकते हैं।
— दीप जोशी

@DeepJoshi क्षमा करें, मुझे आपकी टिप्पणी बहुत पसंद आई। लेकिन, अगर मैं आपके विचार को सही ढंग से समझता हूं, तो मुझे डर है कि यह सामान्य स्थिति में काम नहीं करेगा, क्योंकि मैट्रिक्स के ईगेंसपेस के आयामों को n तक जोड़ने की आवश्यकता नहीं है । दूसरे शब्दों में, यह हमेशा ऐसा नहीं होता है कि हर वेक्टर को आइजनवेक्टर के रैखिक संयोजन के रूप में व्यक्त किया जा सकता है। n×nn
— पियून

जवाबों:


3

अस्वीकरण: निम्नलिखित विधि कठोरता से इष्टतम साबित नहीं हुई है। एक अनौपचारिक प्रमाण प्रदान किया जाता है।

उत्पाद के वर्ग पर विचार करते समय समस्या सबसे कुशल ऑर्डरिंग को कम करती है।

उदाहरण के लिए, जब जैसे को देखकर , हम केवल करने के लिए बेहतर हल की जरूरत है ( एक बी सी ) 2 को यह फैलता है के बाद से एक बी सी ए बी सी । A B C को फिर से सम्‍मिलित करके कोई उपयोगी आदेश सूचना नहीं जोड़ी गई है । यहाँ अंतर्ज्ञान यह है कि चूंकि इष्टतम ऑर्डरिंग की समस्या को नीचे-ऊपर हल किया जा सकता है, इसलिए समान मैट्रिस का उपयोग करने वाले अधिक तत्वों से युक्त उच्च क्रम अप्रासंगिक हैं।(ABC)50(ABC)2ABCABCABC

का सबसे अच्छा आदेश ढूँढना मैट्रिक्स चेन गुणा समस्या को कम कर देता है। एक इष्टतम आदेश खोजने के बाद, आदेश में ट्रिपलेट (n-tuple आम तौर पर) के लिए घातांक लागू करें।ABCABC

उदाहरण के लिए, यदि वर्ग के लिए इष्टतम आदेश , तो प्रारंभिक समस्या का समाधान A ( B ( C A ) ) 49 B C है ।A(B(CA))BCA(B(CA))49BC

सारांश में:
1) को सुलझाने में पहला कदम हल करने के लिए है ( एक 1 एक 2 ⋯ एक एन ) 2 । 2) सॉल्विंग ( A 1 A 2 Sol A n ) 2 को मैट्रिक्स चैन मल्टीप्लिकेशन समस्या के उदाहरण के रूप में जाना जाता है। 3) एन-टपल आदेश का उपयोग करते हुए जी (2) हम में से कुछ स्वाद के रूप में) के लिए (1 समाधान दे देंगे में समाधान से एक 1 ⋅ एक(A1A2⋯An)m(A1A2⋯An)2
(A1A2⋯An)2
G (ध्यान दें कि (2) को सुलझाने से किसी भी अन्य समूहों में अच्छी तरह से लागू किया जाना चाहिए)।A1⋅A2⋅Gm−1⋅An

अनौपचारिक प्रमाण
दो मैट्रिस, का उपयोग करते हुए सबसे सरल मामले को ध्यान में रखते हुए , हम ध्यान दें कि ए और बी में क्रमशः एक्स × वाई और वाई × एक्स का आयाम है। ए और बी का उपयोग करने वाले किसी भी उत्पाद में निम्न आयाम हैं:(AB)nABX×YY×XAB

Y × X Y × Y X × XX×Y
Y×X
Y×Y
X×X

हम या तो या वाई ≤ एक्स ।X<YY≤X

मान 1 ए): ए बी में आयाम एक्स × एक्स है , और यह ऑर्डर नीचे-अप दृष्टिकोण से इष्टतम होने की गारंटी है। ए और बी का कोई अन्य विन्यास या तो समान रूप से अच्छा है, या इससे भी बदतर है। इस प्रकार, समस्या को जानबूझकर ( ए बी ) एन के रूप में हल किया गया है ।X<Y
ABX×XAB(AB)n

धारणा 1b): बी एक आयाम है Y × वाई । यह ए और बी से जुड़े सभी उत्पादों के लिए इष्टतम आदेश है । इस प्रकार, समाधान को जानबूझकर ए ( बी ए ) एन - 1 बी के रूप में पाया जाता है ।Y≤X
BAY×YABA(BA)n−1B

यह सबूत को समाप्त करता है, और हमने केवल , स्क्वायर समस्या में पाए गए दो आदेशों पर ध्यान दिया है।ABAB

अधिक मैट्रिस का उपयोग करना, तर्क समान है। शायद एक प्रेरक प्रमाण संभव है? सामान्य विचार यह है कि वर्ग के लिए एमसीएम को हल करने के लिए सभी शामिल मैट्रिसेस के साथ संचालन के लिए इष्टतम आकार मिलेगा।

मामले का अध्ययन:

julia> a=rand(1000,2);
julia> b=rand(2,1000);
julia> c=rand(1000,100);
julia> d=rand(100,1000);
julia> e=rand(1000,1000);

julia> @time (a*b*c*d*e)^30;
  0.395549 seconds (26 allocations: 77.058 MB, 1.58% gc time)

# Here I use an MCM solver to find out the optimal ordering for the square problem
julia> Using MatrixChainMultiply
julia> matrixchainmultiply("SOLVE_SQUARED", a,b,c,d,e,a,b,c,d,e)
Operation: SOLVE_SQUARED(A...) = begin  # none, line 1:
    A[1] * (((((A[2] * A[3]) * (A[4] * (A[5] * A[6]))) * (A[7] * A[8])) * A[9]) * A[10])
  end
Cost: 6800800

# Use the ordering found, note that exponentiation is applied to the group of 5 elements
julia> @time a*(((((b*c)*(d*(e*a)))^29*(b*c))*d)*e);
  0.009990 seconds (21 allocations: 7.684 MB)

# I also tried using the MCM for solving the problem directly
julia> @time matrixchainmultiply([30 instances of a,b,c,d,e]);
  0.094490 seconds (4.02 k allocations: 9.073 MB)

1
(ABC)2

ABCABC(ABC)n(ABC)nA(BCA)n−1BCAB(CAB)n−1C

@DavidRicherby किसी भी उपयोग का जोड़ा अनौपचारिक प्रमाण है?
— मत्तियाँ

@matteyas: कमोबेश यही बात मैंने अपने सवाल के पहले एडिट में कही थी, है ना?
— मय

ABCABC

-1

A1AnAiAjO(n3)


3
यह सबटेक्शंस को ध्यान में नहीं रखता है जो एक शक्ति के लिए उठाए गए हैं (यदि शक्ति बड़ी है तो यह बहुत अक्षम हो सकती है), और यह बेहतर गति को प्राप्त करने के लिए तेजी से घातांक का उपयोग करने के अवसर को ध्यान में नहीं रखता है , इसलिए मुझे इस पर संदेह है अभी तक एक इष्टतम जवाब नहीं है।
— डीडब्ल्यू
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.