Òàê êàê i-ûé êîýôôèöèåíò fi õàðàêòåðèñòè÷åñêîãî ïîëèíîìà åñòü ñóììà Cni îïðåäåëèòåëåé i-ãî ïîðÿäêà, òî |fi | ≤ Cni ii/2 ai , ãäå îáîçíà÷åíî a = max{|aij |, i = 1, . . . , n, j = 1, . . . , n}. Ðàññìîòðèì n! ôóíêöèþ H(i) = (n−i)!i! ii/2 ai è íàéäåì åå íàèáîëüøåå çíà÷åíèå ïðè i ∈ [1, n]. H 0 (i) = H(i)p(i), ãäå p(i) = 1/2 ln(ia2 ) + 1/2 + (n − 2i) ∞ X 1 . (i + 1 + ν)(n − i + 1 + ν) ν=1 Ìàêñèìóì ôóíêöèè H(i) ïðè i ∈ [1, n] íàõîäèòñÿ èç ðàâåíñòâà p(i) = 0. ×èñëåííûå ýêñïåðèìåíòû ïîêàçûâàþò, ÷òî â áîëüøèíñòâå ñëó÷àåâ íàèáîëüøåå çíà÷åíèå H(i), i ∈ [1, n], áóäåò ïðè i = n. Íàïðèìåð, ýòî âåðíî äëÿ n = 10 è a > 1, ïðè n = 100 è a > 5, n = 500 è a > 9, n = 1000 è a > 16.  ýòîì ñëó÷àå f ≤ nn/2 an äëÿ i ∈ [1, n] èëè kf k ≤ nk + ϕn n/2 + 1. (7) Ñðàâíèì ýêñïåðåìåíòàëüíî îöåíêè (5), (6) è (7)äëÿ ìàòðèö ïîðÿäêà 100 è ïðèâåäåì â òàáëèöå kf k, ãäå k = dlog2 ae + 1. Äëÿ îöåíêè (6) áóäåì ñîçäàâàòü ñëó÷àéíóþ ìàòðèöó ðàçëè÷íîé ïëîòíîñòè è âû÷èñëÿòü îöåíêó (6) ñ ó÷åòîì âñåõ ýëåìåíòîâ ìàòðèöû.  òàáëèöå óêàçàíî êîëè÷åñòâî áèò, ïîêðûâàþùåå ñîîòâåòñòâóþùóþ îöåíêó. n=100 (5) (6) (7) k, áèò \ pl, % 100 50 5 2 1 4 43*28 24*28 22*28 15*28 11*28 7*28 27*28 8 57*28 38*28 36*28 30*28 22*28 15*28 42*28 16 86*28 67*28 65*28 58*28 47*28 33*28 70*28 32 143*28 124*28 122*28 115*28 95*28 67*28 127*28 64 257*28 238*28 236*28 230*28 197*28 146*28 242*28 Ñðàâíåíèå êîëîíîê (5) è (7) ïîêàçûâàåò, ÷òî íîâàÿ îöåíêà (5) íå íàìíîãî ïðåâûøàåò îöåíêó ïîñëåäíåãî êîýôôèöèåíòà. Ëèòåðàòóðà 1. Ìàëàøîíîê Ã.È. A computation of the characteristic polynomial of an endomorphism of a free module // Çàïèñêè íàó÷íûõ ñåìèíàðîâ ÏÎÌÈ. 1999. Ò. 258. Ñ. 101-114. 2. Ïåðåñëàâöåâà Î.Í. Îöåíêà ÷èñëà áèò-óìíîæåíèé â àëãîðèòìàõ âû÷èñëåíèÿ îïðåäåëèòåëÿ, õàðàêòåðèñòè÷åñêîãî ïîëèíîìà è ïðèñîåäèí¼ííîé ìàòðèöû //XI Äåðæàâèíñêèå ÷òåíèÿ. Òàìáîâ, 2006. Ñ. 79-83. 3 . Ñåéôóëëèí Ò.Ð. Âû÷èñëåíèå îïðåäåëèòåëÿ, ïðèñîåäèí¼ííîé ìàòðèöû è õàðàêòåðèñòè÷åñêîãî ïîëèíîìà áåç äåëåíèÿ // Êèáåðíåòèêà è ñèñòåìíûé àíàëèç. 2002. N.5. Ñ.18-42. Ìåòîä âû÷èñëåíèÿ õàðàêòåðèñòè÷åñêîãî ïîëèíîìà ìàòðèöû c Î.Í.Ïåðåñëàâöåâà Ïóñòü A êîììóòàòèâíîå êîëüöî, A = aij êâàäðàòíàÿ ìàòðèöà ïîðÿäêà n ñ ýëåìåíòàìè aij ∈ A, i = 1, . . . , n, j = 1, . . . , n; En åäèíè÷íàÿ ìàòðèöà ïîðÿäêà n. Òîãäà F (x) = det(A − xEn ) õàðàêòåðèñòè÷åñêèé ïîëèíîì ìàòðèöû A. Áóäåì èñïîëüçîâàòü ñëåäóþùèå îáîçíà÷åíèÿ. Ap,q r,s ïîäìàòðèöà ìàòðèöû A, ñòîÿùàÿ íà ïåðåñå÷åíèè ñòðîê p, . . . , q è ñòîëáöîâ r, . . . , s, Ap,q ÷àñòü r-òîãî ñòîëáöà ìàòðèöû A, ñòîÿùàÿ íà ïåðåñår ÷åíèè r-òîãî ñòîëáöà ìàòðèöû A è ñòðîê p, . . . , q , Ar = A1,r 1,r . Äàííûé àëãîðèòì åñòü âèäîèçìåíåíèå àëãîðèòìà Ìàëàøîíêà [2].  îñíîâå àëãîðèòìà ëåæèò âû÷èñëåíèå êâàçèòðåóãîëüíîé ìàòðèöû. Äëÿ êàæäîãî t = 1, . . . , n − 2 ðàññìîòðèì ìàòðèöû Et 0 0 Et 0 0 et = 0 , Lt = 0 αt , 1 0 0 L (1) t t 0 −v α En−t−1 0 v t En−t−1 Et 0 Dt = , ãäå αt ∈ A, αt 6= 0, v t ∈ An−t−1 . 0 αt En−t e t ALt Dt−1 ïîäîáíà ìàòðèöå A. Òîãäà ìàòðèöà L  àëãîðèòìå íà êàæäîì øàãå t (t = 1, . . . , n − 2) âûáèðàåì αt è v t òàê, ÷òî âû÷èñëÿåòñÿ ìàòðèöà, ó êîòîðîé ýëåìåíòû t-ãî ñòîëáöà ïîä "âòîðîé"äèàãîíàëüþ ðàâíû íóëþ. Ïðè ýòîì âñå âû÷èñëåíèÿ ïðîèñõîäÿò â èñõîäíîì êîëüöå êîýôôèöèåíòîâ, è âñå äåëåíèÿ ÿâëÿþòñÿ òî÷íûìè. e n−2 · · · L e 1 AL1 D−1 · · · Ln−2 D−1 e n−2 · · · L e 1 AL1 · Ðàññìîòðèì ìàòðèöó Au = L = (L 1 n−2 −1 −1 −1 Ln−2 )(D1 . . . Dn−2 ) = BD , ãäå äèàãîíàëüíàÿ ìàòðèöà D = diag(1, α1 , α1 α2 , . . . , α1 α2 · · · αn−2 , α1 α2 · · · αn−2 ). (2) Ìàòðèöà Au ïîäîáíà ìàòðèöå A. Ñëåäîâàòåëüíî, õàðàêòåðèñòè÷åñêèé ïîëèíîì ìàòðèöû A F (x) = (−1)n det(BD−1 − xEn ) = (−1)n det(B − xD)/ det D. (3) Àëãîðèòì ñîñòîèò èç 2 ýòàïîâ: 1. Âû÷èñëåíèå êâàçèòðåóãîëüíîé ìàòðèöû - Èíèöèàëèçàöèÿ: B [1] = A. - Äëÿ t = 1, 2, . . . , n − 2 âû÷èñëÿþòñÿ ïîñëåäîâàòåëüíî ìàòðèöû e t B [t] Lt , B [t+1] = L ãäå αt = (B [t] )t+1 äëÿ t = 1, 2 è αt = (B [t] )t+1 /(B [t] )t−1 vt = t t t−2 äëÿ t = 3, . . . , n − 2; e (B [t] )t+2,n äëÿ t = 1, 2 è v t = (B [t] )tt+2,n /(B [t] )t−1 t t−2 äëÿ t = 3, . . . , n − 2; ìàòðèöû Lt è Lt îïðåäåëåíû ôîðìóëàìè (1). Ïîñëåäíåé âû÷èñëÿåòñÿ êâàçèòðåóãîëüíàÿ ìàòðèöà B = B [n−1] . - Âû÷èñëÿåòñÿ äèàãîíàëüíàÿ ìàòðèöà D ïî ôîðìóëå (2). 2. Âû÷èñëåíèå õàðàêòåðèñòè÷åñêîãî ïîëèíîìà ìàòðèöû A - Âû÷èñëÿåòñÿ äåòåðìèíàíò dn = det(xD − B) êâàçèòðåóãîëüíîé ìàòðèöû ïî ôîðìóëå Õåññåíáåðãà: Q Pn−1 n dn = bnn dn−1 + i=1 bin (−b ) di−1 , ãäå íà÷àëüíîå çíà÷åíèå d0 = 1, xD − B = jj−1 j=i+1 (bij ), i, j = 1, . . . , n. Ôîðìà ïîëó÷àåòñÿ ïðîñòûì ðàçëîæåíèåì îïðåäåëèòåëÿ ïî ïîñëåäíåìó ñòîëáöó. di îáîçíà÷àåò îïðåäåëèòåëü ïîäìàòðèöû ïîðÿäêà i, ñòîÿùåé â ëåâîì âåðõíåì óãëó. - Âû÷èñëÿåòñÿ õàðàêòåðèñòè÷åñêèé ïîëèíîì ìàòðèöû A F (x) = (−1)n det(xD − B)/ det(D). Åñëè íà íåêîòîðîì øàãå t αt = 0 è v t = 0, òî íóæíî ïîëîæèòü B [t+1] = B [t] . Ýòî îçíà÷àåò, ÷òî t-òûé øàã äîëæåí áûòü ïðîïóùåí. Åñëè æå αt = 0, v t 6= 0 è (B[t])it 6= 0 äëÿ íåêîòîðîãî i ≥ t + 2, òî ïîëîæèì αt = (B [t] )it (äëÿ t ≤ 2), αt = (B [t] )it /(B [t] )t−1 t−2 (äëÿ t > 2) è e t Pi,t+1 B [t] Pi,t+1 Lt , B [t+1] = L ãäå Pi,j îáîçíà÷àåò ìàòðèöó ïåðåñòàíîâêè, ïîëó÷åííóþ èç åäèíè÷íîé ìàòðèöû En ïîñëå ïåðåñòàíîâêè ñòðîê ñ íîìåðàìè i è j . Íàéäåì îöåíêó ñëîæíîñòè àëãîðèòìà. Íà t-ì øàãå àëãîðèòìà âû÷èñëÿåòñÿ ìàòðèöà B [t+1] = e Lt B [t] Lt , ïðè ýòîì âûïîëíÿåòñÿ (n − t − 1)(n − t) + n(n − t) ñëîæåíèé è âû÷èòàíèé, 2(n − t − 1)(n − t) + n(n − t) óìíîæåíèé è n − t äåëåíèé. Ïîýòîìó àñèìïòîòè÷åñêèå ñëîæíîñòè îïåðàöèé ïðè âû÷èñëåíèè ìàòðèöû B [n−1] ñëåäóþùèå: òðåáóåòñÿ âûïîëíèòü 5/6n3 + O(n2 ) îïåðàöèé ñëîæåíèÿ è âû÷èòàíèÿ, 7/6n3 +O(n2 ) îïåðàöèé óìíîæåíèÿ è 1/2n2 îïåðàöèé äåëåíèÿ. Ïðè íàõîæäåíèè ìàòðèöû D íåîáõîäèìî âûïîëíèòü n − 2 îïåðàöèè óìíîæåíèÿ. Íà ýòàïå 2 òðåáóåòñÿ âûïîëíèòü 1/6n3 + O(n2 ) îïåðàöèé ñëîæåíèÿ è âû÷èòàíèÿ, 1/6n3 + O(n2 ) îïåðàöèé óìíîæåíèÿ è n îïåðàöèé äåëåíèÿ. Âñåãî n3 + O(n2 ) àääèòèâíûõ îïåðàöèé è 4/3n3 + O(n2 ) ìóëüòèïëèêàòèâíûõ îïåðàöèé, ò.å. 7/3n3 + O(n2 ) êîëüöåâûõ îïåðàöèé. Îöåíèì áèòîâóþ ñëîæíîñòü îïåðàöèè óìíîæåíèÿ. Ïðè âû÷èñëåíèè ìàòðèö B [t] êîëè÷åñòâî áèò â åå ýëåìåíòàõ íà øàãå t ðàñòåò ýêñïîíåíöèàëüíî êàê 2t . Ñëåäîâàòåëüíî, ÷èñëî áèò-óìíîæåíèé îïèñûâàåòñÿ íå ïîëèíîìîì, à ýêñïîíåíöèàëüíîé ôóíêöèåé. Ïðèìåð. A= 1 4 2 −3 2 2 −2 2 3 0 −3 0 −4 1 −1 −2 1 3 2 −1 0 3 −2 −1 3 Èíèöèàëèçàöèÿ: B [1] = A. 1 4 0 0 0 8 −5 −42 9 38 −2 1 10 −552 −128 0 3 −14 −84 280 2 [2] t = 1 α = 4, v = −3 , B = 2 t = 2 α = −42, v = 1 8 4 −5 B [3] = 0 −42 0 0 0 0 9 38 −3 0 −16 4 −4 −2 1 10 11 −6 0 3 −14 5 6 . , 108 123 230 −7152 −23104 t = 3 α = −7152, v = (−23104), 1 8 108 3576 4 −5 123 −19116 230 62984 B [4] = 0 −42 0 0 −7152 1472160 0 0 0 −20167391 [4] B=B . . 0 3 −14 −84 −985824 . Äèàãîíàëüíàÿ ìàòðèöà D = diag(1, 4, −168, 300384, 300384), det D = −65341885. det(xD − B) = −65341885x5 + 74140898x3 + 130683770x2 − 31447258x − 40819243. Õàðàêòåðèñòè÷åñêèé ïîëèíîì ìàòðèöû A F (x) = (−1)5 det(xD − B)/ det D = −x5 + 34x3 + 2x2 − 362x + 213. Ëèòåðàòóðà 1. Ìàëàøîíîê Ã.È. Ìàòðè÷íûå ìåòîäû âû÷èñëåíèé â êîììóòàòèâíûõ êîëüöàõ. Òàìáîâ: Èçä-âî ÒÃÓ, 2002. 2. Ìàëàøîíîê Ã.È. A computation of the characteristic polynomial of an endomorphism of a free module // Çàïèñêè íàó÷íûõ ñåìèíàðîâ ÏÎÌÈ. 1999. Ò. 258. Ñ. 101-114. 3. Ïåðåñëàâöåâà Î.Í. Âû÷èñëèòåëüíûå ýêñïåðèìåíòû ñ àëãîðèòìàìè âû÷èñëåíèÿ õàðàêòåðèñòè÷åñêèõ ïîëèíîìîâ ìàòðèö // Âåñòíèê Òàìáîâñêîãî Óíèâåðñèòåòà. Ñåðèÿ: Åñòåñòâåííûå è òåõíè÷åñêèå íàóêè. Òàìáîâ, 2007. Ò. 12. Âûï.1. Ñ.126-128. Ðåàëèçàöèÿ àëãîðèòìà Êàðàöóáû è îöåíêè ñëîæíîñòè c À.Î.Ëàïàåâ Ïðîâåäåì îöåíêó ñëîæíîñòè àëãîðèòìà Êàðàöóáû [1]. Ïóñòü ìàøèííîå ñëîâî ñîäåðæèò r áèò, p = 2r , ÷èñëà u = (u1 , u2 , ..., un ) è v = (v1 , v2 , ..., vn ) ñîñòîÿò èç n = 2k ìàøèííûõ ñëîâ, è ïðîèçâîäèòñÿ èõ óìíîæåíèå ïî ñëåäóþùåé ñõåìå: n n (ap 2 + b)(cp 2 + d) = n = acpn + ((a + b)(c + d) − ac − bd)p 2 + bd, ãäå a = (u1 , ..., u n2 ), b = (u n2 +1 , ..., un ), c = (v1 , ..., v n2 ), d = (v n2 +1 , ..., vn ) . Îáîçíà÷èì q(n) ÷èñëî îïåðàöèé óìíîæåíèÿ ìàøèííûõ ñëîâ â òàêîé ñõåìå. Òîãäà q(n) = 3q( n2 ) è q(2) = 3, îòñþäà íàõîäèì q(n) = nlog2 3 . Îáîçíà÷èì ÷åðåç s(n) ÷èñëî îïåðàöèé ñëîæåíèÿ. Òîãäà s(n) = 3s( n2 ) + 5n è s(2) = 10. Îòñþäà s(n) = 10nlog2 3 − 10n. Îáùåå êîëè÷åñòâî îïåðàöèé ñëîæåíèÿ è óìíîæåíèÿ â àëãîðèòìå Êàðàöóáû ñîñòàâëÿåò 11nlog2 3 − 10n.  ðàáîòå [1] ïðèâåäåíà ñõåìà ðåàëèçàöèè àëãîðèòìà Êàðàöóáû. Ïðîãðàììà áûëà íàïèñàíà íà ÿçûêå Java. Ïðîâîäèëîñü ñðàâíåíèå äâóõ ìåòîäîâ óìíîæåíèÿ: ñòàíäàðòíîãî óìíîæåíèÿ ÷èñåë òèïà BigInteger è àëãîðèòìà Êàðàöóáû. Ýêñïåðèìåíò ñòàâèëñÿ íà ÝÂÌ Intel Xeon 3000, ÎÑ RedHat Linux Enterprise 9.0.  òàáëèöå ïðèâåäåíû ðåçóëüòàòû ýêñïåðèìåíòà. Ðàçìåð ÷èñåë Ñòàíäàðòíîå óìíîæåíèå, ms Àëãîðèòì Êàðàöóáû, ms 64 0.074286 0.071259 128 0.293707 0.203316 256 1.168254 0.592347 512 4.665816 1.929762 Ðèñ. 1. Çàâèñèìîñòü âðåìåíè âû÷èñëåíèÿ ïðîèçâåäåíèÿ îò ðàçìåðîâ âõîäíûõ ÷èñåë: 1 ñòàíäàðòíîå óìíîæåíèå, 2 àëãîðèòì Êàðàöóáû, 3 àëãîðèòì Êàðàöóáû (òåîðåòè÷åñêàÿ êðèâàÿ) t = (11nlog2 3 − 10n) · c, ãäå c = 4 · 10−6 Êàê âèäíî èç ãðàôèêà, òåîðåòè÷åñêèå è ýêñïåðèìåíòàëüíûå îöåíêè àëãîðèòìà Êàðàöóáû â òî÷êàõ n = 2k î÷åíü áëèçêè äðóã ê äðóãó. Ðåàëèçàöèÿ àëãîðèòìà Êàðàöóáû âûèãðûâàåò ïðè n ≥ 64.