Vinograd algoritmi tahlili
|
Ko’paytirish
|
Qoshimcha
|
Oldindan G matritsani qayta ishlash
|
a*d
|
a(d - 1)
|
Oldindan H matritsani qayta ishlash
|
c*d
|
c(d - 1)
|
R matritsani hisoblash
|
a*b*c
|
ac(2d + d + 1)
|
Umimiy
|
(abc + ab + bc)/2
|
(a(b-2) + c(b-2)+ac(3b+2))/2
|
Strassen Matritsasini ko'paytirish
Strassen algoritmi kvadrat matritsalar bilan ishlaydi. Aslida, bu shunchalik samaraliki, ba'zida matritsani kvadratga kengaytirish mantiqiy, ammo shu bilan birga qo'shimcha elementlarni kiritish xarajatlaridan oshadigan daromad keltiradi. Strassen algoritmi 2 x 2 matritsalarni ko'paytirish uchun etti formuladan foydalanadi. Ushbu formulalar juda g'ayritabiiy va afsuski, ichida
Strassenning asl maqolasida u qanday qilib ularga kelganligi tushuntirilmagan. Shunisi e'tiborga loyiqki, formulalarning o'zlari ham, ulardan foydalanish ham matritsa elementlarining ko'payishi kommutativligini talab qilmaydi. Bu, xususan, ushbu elementlarning o'zlari matritsalar bo'lishi mumkinligini anglatadi, ya'ni Strassen algoritmi rekursiv ravishda qo'llanilishi mumkin. Strassen formulalari:
x1 = (G1,1 + C2,2) (H1,1 + H 2,2); x5 = (G1,1 + G2,2) H2,2;
x2 = (G2,1 + G2,2)H1,1; x6 = (G2,1 – G1,1)( H1,1 + H1,2);
x3 = G1,1 (H1,2 – H2,2); x7 - (G2,1 - G2,2) (H2,1 + H2,2).
X4= G2,2(H2,1 – H1,1);
Endi R matritsa elementlarini formulalar yordamida hisoblash mumkin
Ikki 2 x 2 matritsani ko'paytirganda, algoritm 7 ko'payish va 18 qo'shimchani bajaradi. Omonat ko'rinmaydi: standart algoritmlarda bitta ko'paytirish evaziga biz 14 ta qo'shimchani oldik. Umumiy holat tahlili shuni ko'rsatadiki, ikkita NxN matritsalarni ko'paytirganda ko'paytmalar soni taxminan 6N2.81 ga teng va qo'shimchalar soni 6N2.81– 6N2 ga teng. Ikki 16 x 16 matritsani ko'paytirganda Strassen algoritmi qo'shimcha 9138 qo'shimchalar tufayli 1677 ko'paytmani tejaydi.Uchala natijalarni birlashtirib, quyidagi rasmni olamiz.
|
Ko'paytirish
|
Qoshimcha
|
Standart algoritm
|
N3
|
N3 – N2
|
Vinograd algoritmi
|
(N3 + 2N2 ) /2
|
(3N3 + 4N2 -4N ) /2
|
SHtrassen algoritmi...
|
N2.81
|
6N2.81– 6N2
|
Amaliyotda Strassen algoritmi kamdan-kam qo'llaniladi: uni qo'llash rekursiyani diqqat bilan kuzatishni talab qiladi. Uning ahamiyati shundaki, bu birinchi algoritm, matritsa ko'paytirish O (N3) operatsiyalaridan kam talab qiladi. Matritsani ko'paytirish samaradorligini oshirish va undan pastroq qiymatni topish ustida ishlash
uning murakkabligini baholash davom etmoqda.
Do'stlaringiz bilan baham: |