Äîêóìåíò âçÿò èç êýøà ïîèñêîâîé ìàøèíû. Àäðåñ
îðèãèíàëüíîãî äîêóìåíòà
: http://fpga.parallel.ru/Colamo/Gorner.htm
Äàòà èçìåíåíèÿ: Sun May 31 14:33:27 2009 Äàòà èíäåêñèðîâàíèÿ: Mon Oct 1 19:58:47 2012 Êîäèðîâêà: koi8-r |
Êëàññè÷åñêèé ïðèìåð ðåêóðñèè â àëãîðèòìå - ñõåìà Ãîðíåðà äëÿ âû÷èñëåíèÿ ÷àñòíîãî îò äåëåíèÿ ìíîãî÷ëåíà n-é ñòåïåíè îäíîé ïåðåìåííîé Pn(x) = a0xn + a1xn-1 + ... + an-1x + a íà äâó÷ëåí x - c, ñ ïîëó÷åíèåì ìíîãî÷ëåíà n-1-é ñòåïåíè Qn-1(x) = b0xn-1 + b1xn-2 + ... + bn-2x + bn-1 è îñòàòêà îò äåëåíèÿ bn (ðàâíîãî Pn(ñ)). Ïðè ýòîì ó íàñ èñêîìûå êîýôôèöèåíòû è îñòàòîê âû÷èñëÿþòñÿ ïî ðåêóððåíòíîé ôîðìóëå: bi = c bi-1 + ai.
Êàçàëîñü áû, íàì íè÷åãî íå ïîäåëàòü ñ ïîñëåäîâàòåëüíûì õàðàêòåðîì àëãîðèòìà. Îäíàêî â òîì ñëó÷àå, åñëè íàì ìîæíî âîñïîëüçîâàòüñÿ àññîöèàòèâíîñòüþ è äèñòðèáóòèâíîñòüþ ñëîæåíèÿ è óìíîæåíèÿ, òî ìû ìîæåì ðàñïàðàëëåëèòü ñõåìó Ãîðíåðà, âîñïîëüçîâàâøèñü îáû÷íîé ñõåìîé ñäâàèâàíèÿ.
Ïóñòü íàì íóæíî âû÷èñëèòü âñå ÷àñòè÷íûå ñóììû ýëåìåíòîâ yi îò 1 äî k, ãäå 1 ˜ k ˜ n. Îêàçûâàåòñÿ, ÷òî ýòî âîçìîæíî ñäåëàòü ïî ñõåìå ñäâàèâàíèÿ ïðèìåðíî çà log2n øàãîâ, âûïîëíÿÿ íà êàæäîì øàãå ïðèìåðíî ïî n/2 ñëîæåíèé. Ïðèâåä¸ì ïðèìåð âû÷èñëåíèÿ âñåõ ÷àñòíûõ ñóìì äëÿ n=8 çà 3 øàãà.
1-é øàã: âû÷èñëÿåì y1 +
y2,
y3 +
y4, y5
+ y6, y7
+ y8.
2-é øàã: âû÷èñëÿåì (y1 + y2)
+ y3 ,
(y1 + y2)
+ (y3
+ y4), (y5 + y6)
+ y7,
(y5 + y6)
+ (y7
+ y8).
3-é øàã: âû÷èñëÿåì (y1
+ y2 + y3 + y4)
+ y5,
(y1
+ y2 + y3 + y4)
+ (y5
+ y6), (y1
+ y2 + y3 + y4)
+ (y5
+ y6 + y7), (y1
+ y2 + y3 + y4)
+ (y5
+ y6 + y7 + y8)
Êàê âèäèì, âñå ÷àñòíûå ñóììû âû÷èñëåíû. Îòìå÷àåì ïðî ñåáÿ òî, ÷òî
Ïåðåïèøåì ñõåìó Ãîðíåðà â âåêòîðíîé ôîðìóëèðîâêå. Ââåä¸ì ïîñëåäîâàòåëüíîñòü âåêòîðîâ zi = ( bi, 1)T. Òîãäà ðåêóððåíòíûå ôîðìóëû ñõåìû Ãîðíåðà ïðèìóò âèä: zi = Aizi-1, ãäå Ai - òðåóãîëüíàÿ ìàòðèöà âèäà ( (c, 0)T, (ai, 1)T). Ïîñëå ïîäñòàíîâêè âñåõ ôîðìóë ìû âèäèì, ÷òî zi = AiAi-1...A1z0, òî åñòü íàì íóæíî âû÷èñëèòü âñå ÷àñòíûå ìàòðè÷íûå ïðîèçâåäåíèÿ AiAi-1...A1, ïîñëå ÷åãî óìíîæèòü èõ íà âåêòîð z0. Íî ìàòðè÷íîå óìíîæåíèå àññîöèàòèâíî, è ê âû÷èñëåíèÿì ÷àñòíûõ ïðîèçâåäåíèé ìû ìîæåì ïðèìåíèòü ñõåìó ñäâàèâàíèÿ, ïðè÷¸ì ñ óïðîùåíèÿìè - âåäü