Feragatname: Aşağıdaki yöntemin optimal olduğu kesin olarak kanıtlanmamıştır. Gayri resmi bir kanıt sağlanmıştır.
Ürünün karesi göz önüne alındığında, sorun en verimli siparişi bulmada azalır.
Örneğin, örneğin bakarken, sadece ( A B C ) 2'yi en iyi şekilde çözmemiz gerekir, çünkü bu A B C A B C'ye genişler . A B C'yi tekrar birleştirerek yararlı bir sipariş bilgisi eklenmez . Buradaki sezgi, optimal sıralama sorunu aşağıdan yukarıya çözülebildiğinden, aynı matrisleri kullanan daha fazla elemandan oluşan daha yüksek sıralamalar önemsizdir.(ABC)50(ABC)2ABCABCABC
en iyi sırasını bulmak A B C , Matris Zinciri Çarpma problemini azaltır. Optimal bir sipariş bulduktan sonra, siparişte üçlüye (genellikle n-demet) üs alma uygulayın.ABCABC
Kare için en uygun sipariş ise bir örneğin de, , başlangıç sorununa çözüm bir ( B ( Cı- A ) ) 49 B C .A(B(CA))BCA(B(CA))49BC
Özetle:
1) çözümünde ilk adım çözmektir ( A 1 bir 2 ⋯ bir n ) 2 .
2) Çözme ( A 1 A 2 ⋯ A n ) 2 en iyi Matris Zinciri Çarpma probleminin bir örneği olarak ele alınır.
3) (2) 'deki çözeltiden n-demet sırasını G kullanarak bize (1)' in A 1 ⋅ A'nın bir çeşidi olarak çözümü verecektir.(A1A2⋯An)m(A1A2⋯An)2
(A1A2⋯An)2
G (çözmeden (2) diğer grupların da uygulanması gerektiğini unutmayın).A1⋅A2⋅Gm−1⋅An
Resmi olmayan kanıt
İki matris kullanılarak yapılan en basit durum dikkate alındığında, A ve B'nin sırasıyla X × Y ve Y × X boyutlarına sahip olduğuna dikkat çekiyoruz. A ve B kullanan herhangi bir ürün aşağıdaki boyutlardan birine sahiptir:(AB)nABX×YY×XAB
Y × X Y × Y X × XX×Y
Y×X
Y×Y
X×X
Ya sahip veya Y ≤ X .X<YY≤X
Varsayım 1a): A B , X × X boyutuna sahiptir ve bu siparişin aşağıdan yukarıya bir yaklaşımdan optimal olması garanti edilir. A ve B'nin diğer herhangi bir konfigürasyonu eşit derecede iyi veya daha kötüdür. Böylece, sorun optimal olarak çözülmektedir ( A B ) n .X<Y
ABX×XAB(AB)n
Varsayım 1b): B A , Y × Y boyutuna sahiptir . Bu, A ve B içeren tüm ürünler için en uygun sipariştir . Bu nedenle, çözelti en uygun olarak bulunan bir ( B A ) n - 1 B .Y≤X
BAY×YABA(BA)n−1B
Bu, kanıtı sonuçlandırıyor ve sadece kare problemi olan bulunan iki sıralamaya baktık .ABAB
Daha fazla matris kullanan argüman benzerdir. Belki endüktif bir kanıt mümkün mü? Genel fikir, kare için MCM'yi çözmenin, dikkate alınan tüm ilgili matrislerle işlemler için en uygun boyutu bulacağıdır.
Vaka Analizi:
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)