Matrislərin optimal vurulması#9647

Matrislərin optimal vurulması

1 saniyə
128 meqabayt
Çox asan

İki matris A və B verildikdə, standart matris vurma qaydalarından istifadə edərək C = AB hesablaya bilərik:

prb1521

Matris A-nın sütunlarının sayı matris B-nin sətirlərinin sayı ilə eyni olmalıdır. Tutaq ki, matris A ölçüsü m × n, matris B ölçüsü n × p-dir. Onda matris C ölçüsü m × p olacaq və onun hesablanması üçün m * n * p vurma əməliyyatı yerinə yetirilməlidir.

prb1521_4.gif

Məsələn, əgər A ölçüsü 10 × 20, B ölçüsü 20 × 15-dirsə, onda matris C-nin hesablanması üçün 10 × 20 × 15 = 3000 vurma əməliyyatı yerinə yetirilməlidir.

prb1521_3.gif

Bir neçə matrisin vurulması bir neçə üsulla həyata keçirilə bilər. Məsələn, əgər bizdə X, Y və Z matrisləri varsa, XYZ-ni ya (XY)Z kimi, ya da X(YZ) kimi hesablamaq olar. Tutaq ki, X ölçüsü 5 × 10, Y ölçüsü 10 × 20, Z ölçüsü 20 × 35-dir.

prb1521.gif

Üç matrisin hər iki halda vurulması üçün lazım olan vurma əməliyyatlarının sayını hesablayın:

(XY)Z

X(YZ)

Aydındır ki, (XY)Z hesablanarkən daha az vurma əməliyyatı tələb olunur.

prb1521_2.gif

Verilmiş matrislərin vurulma ardıcıllığına görə onların vurulmasının optimal ardıcıllığını tapmaq lazımdır. Optimal ardıcıllıq, matrislərin vurulması üçün elementar vurma əməliyyatlarının sayının minimal olduğu ardıcıllıqdır.

Giriş məlumatları

Birinci sətir vurulacaq matrislərin sayı n-i (n ≤ 10) ehtiva edir. Sonra matrislərin vurulma ardıcıllığına görə ölçülərini təsvir edən n cüt tam ədəd gəlir.

Çıxış məlumatları

Bütün matrislərin vurulması üçün kifayət edən minimal vurma əməliyyatlarının sayını çıxış edin.

Nümunələr

Nümunə 1

Loading
Loading

Nümunə 2

Loading
Loading