Метод вычисления характеристического полинома матрицы

advertisement
Òàê êàê 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.
Download