ÀËÃÎÐÈÒÌ
LUP(HÂÏ)-ÐÀÇËÎÆÅÍÈß ÌÀÒÐÈÖÛ
-------------------------------- p
procedure ÌÍÎÆ(A,m,p) -------- ------
---- -----
(m <=p<=n ) m | A
| = | L
| *| U |* | P |
-------- ------ ---- | |
-----
IF m=1
THEN
BEGIN
1. L := [1];
2. íàéòè ñòîëáåö ñ â À ñ
íåíóëåâûì ýëåìåíòîì;
P := ìàòpèöà ïåpåñòàâëÿþùàÿ
ñòîëáöû c è 1;
3. U := A*P;
4. return(L,U,P)
END
p
ELSE BEGIN -------------
5. pàçáèòü A íà 2 ìàòpèöû B è Ñ pàçìåpà |
B | m/2
m/2 * p; A=
|------------
| C
| m/2
-------------
6. (L1,U1,P1) := ÌÍÎÆ(B,m/2,p);
-1 | L1
0| | U1
|
7. D := C* P1 ; A= |- - -|*|- - - -| *
P1
|
0 I| |
D |
8. E := ïåpâûå
m/2 ñòîëáöîâ U1;
F := ïåpâûå m/2
ñòîëáöîâ D;
-1 |L1 0| |\
U1 |
9. G := D - F*E *U1; A=| -1
|*|--\-------| * P1
|F*E I| | 0 | G' |
10. G' :=ïpàâûå
p-m/2 ñòîëáöîâ G;
11. (L2,U2,P2):= ÌÍÎÆ(G',m/2,p-m/2);
| I | 0
| m/2
12. P3 := |--------- |
| 0 | P2
| p-m/2
-1 |\ U1 |
| I 0 | |\ H
| |I| 0 |
13. H := U1*P3 ; |--\-------|= | |*|0 \ ------|*|-|-----|
| 0 | G' | |
0 L2| | \ U2
| |0| P2|
|
\ 0 | |
14. L := | L1 \| 0
|
|
-1 |
\ 0|
| F*E | L2 \ |
|\
H |
15. U := |0 \ ------|
|
\ U2 |
16. P := P3 * P1;
17. return(L,U,P)
END.
Âûçîâ: ÌHÎÆ(A,n,n).
Ò å î p å ì à. Àëãîpèòì
ÌHÎÆ äëÿ ëþáîé íåâûpîæäåííîé ìàòpèöû
A âû÷èñëÿåò òàêèå ìàòpèöû L, U è P, ÷òî
A= LUP. Âpåìÿ pàáîòû
àëãîpèòìà - O(M(n)), ãäå M(n) - âpåìÿ yìíîæåíèÿ n x n ìàòpèö
(ïpè
yñëîâèè, ÷òî M(2m) >= 2^(2+e)M(m)
äëÿ íåêîòîpîãî e>0 è
âñåõ m).