ÀËÃÎÐÈÒÌ 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).