Divize polynomials je operace divize se zbytkem v Euclidean kruhu polynomials v jedné proměnné přes nějaké pole . Naivní algoritmus, který implementuje tuto operaci, je zobecněná forma dělení sloupců , kterou lze snadno implementovat ručně.
Pro všechny polynomy a , , existují jedinečné polynomy a takové, že
,a má nižší stupeň než .
Účelem algoritmů polynomiálního dělení je najít podíl a zbytek pro daného dělitelného a nenulového dělitele [1] .
Problém dělení polynomů se zbytkem lze formulovat v následujících ekvivalentních formulacích [2] .
Polynomy stupně a stupně jsou dány jejich koeficienty. Je nutné najít kvocient a zbytek takový, aby [2]
(jeden) |
Takto definované polynomy jsou jednoznačné -- pokud předpokládáme , že rovnice ( 1 ) má dvě řešení a , pak
z čehož vyplývá, že buď , což také implikuje , nebo stupeň není menší než stupeň , což je z definice nemožné [3] .
Tento problém lze přepsat do maticového tvaru, pokud předpokládáme, že a jsou dány , a potřebujeme vypočítat tak, že [2]
(2) |
Vzhledem k tomu, že k vyřešení problému stačí najít podle prvních rovnic soustavy . Pokud vezmeme v úvahu pouze tyto rovnice, problém se stává
(3) |
Matice této soustavy rovnic je dolní trojúhelníková a Toeplitzova , složená z vedoucích koeficientů a nul a řešení soustavy je ekvivalentní nalezení její inverzní [2] .
Nechť a být polynomy získané z a obrácením posloupnosti koeficientů. Soustavu rovnic ( 3 ) lze formulovat jako
kde , a znamená, že se zbytky po dělení polynomů a tím rovnají. Dělení polynomu může být reprezentováno jako , takže zbytek se rovná polynomu získanému z prvních koeficientů , tj.
Pokud jsou polynomy a známy, pak , kde je inverzní polynom v kruhu zbytků modulo . Hledání tak může být redukováno na nalezení , takže
(čtyři) |
Tato formulace také umožňuje najít inverzní matici v systému ( 3 ):
Nechť je matice velikosti z ( 3 ). Pak je nižší trojúhelníková Toeplitzova matice, jejíž první sloupec je , kde jsou koeficienty z ( 4 ). |
Soustava ( 3 ) je ekvivalentní rovnici . V souladu s tím systém
může být reprezentováno jako , což je v případě ( 4 ) ekvivalentní systému ( 3 ). ■
Vzhledem k libovolnosti polynomu definujícího prvky nám tato skutečnost umožňuje najít inverzní hodnotu k libovolné Toeplitzově dolní trojúhelníkové matici [2] .
Rovnice může být viděna nejen modulo , ale také jako rovnost v kruhu formálních mocninných řad . Dovolit a být formální mocninné řady shodující se s polynomy a . Pokud v takových termínech najdeme formální řadu
(5) |
pak jeho koeficienty u nižších mocnin budou odpovídat požadovanému polynomu . Tento přístup nám také umožňuje uvažovat problém ( 2 ) jako systém s nekonečně rozšířenou Toeplitzovou maticí a nekonečně rozšířeným sloupcem , ve kterém je vyloučen sloupec reziduí . Vyřešení prvních řádků takového systému dá první koeficienty řady , totiž . Přitom práce s mocninnými řadami obecně, ve kterých jsou zajímavé pouze první koeficienty řady (například kvůli omezené dostupné paměti), je ekvivalentní práci s polynomy, operace, na kterých se provádějí v modulo kruh zbytků [4] . Zejména hledání prvních koeficientů je ekvivalentní řešení rovnice [2] .
V průběhu algoritmu se koeficienty u vyšších mocnin postupně nulují tak, že se od nich odečítají vynásobené nějakou mocninou s koeficienty, které pak tvoří kvocient . Na začátku je koeficient určen rovný . Pokud se rozšíříme , pak
Nahrazením získá tato rovnice tvar
podobná rovnici ( 1 ). V tomto případě je tý koeficient podle definice roven , takže stupeň bude menší než stupeň . Postup se opakuje, dokud není stupeň menší než stupeň , což bude znamenat, že další se mu rovná [3] .
PříkladNechte a . Pro dané polynomy lze dělení sloupců podle zapsat jako
Takto,
to znamená, že polynom je kvocient a a je zbytek.
V roce 1972 navrhl Malte Zieveking algoritmus pro nalezení řešení rovnice pro dané a [5] . V roce 1974 Kong Xiangzhong ukázal, že pro , algoritmus je iterací Newtonovy metody pro [6] . S tímto přístupem má iterace formu
Kde označuje derivaci funkce v bodě . Pro vyhodnocení přesnosti algoritmu lze odhadnout rozdíl
z čehož vyplývá, že pokud je dělitelný (což je ekvivalentní tomu, že první koeficienty jsou definovány správně), pak bude dělitelný . Při dané počáteční podmínce tedy každá iterace zdvojnásobí počet přesně definovaných koeficientů . Pro výpočet tedy stačí iterace . Použití rychlé Fourierovy transformace na násobení polynomů ve výše uvedeném vzorci vede ke konečné době běhu , což výrazně zlepšuje odhad pro obvyklé dlouhé násobení [7] .
PříkladNechte a . Kvůli ( 4 ) je nutné najít . Inverzní polynom se hledá následovně:
Vzhledem k vlastnostem Newtonovy metody jsou první koeficienty určeny správně. Vzhledem k tomu, že další výpočty se provádějí modulo , mohou být koeficienty při vyšších výkonech vyřazeny. Odtud
na základě kterého .
Pro hodnocení účinnosti různých metod se používá aritmetický obvod složitost - celkový počet operací sčítání, násobení, odčítání a dělení nad polem komplexních čísel , které je nutné provést při operaci algoritmu. Odhaduje se také počet paralelních kroků potřebných pro víceprocesorovou implementaci algoritmu za předpokladu, že každý procesor v kterémkoli kroku nemůže provést více než jednu operaci [7] .
Každá iterace algoritmu dělení spočívá v odečtení offsetu o nějakou částku od , což lze provést v . Protože stupeň , zpočátku rovný , klesá, dokud není menší než , lze celkovou dobu běhu algoritmu odhadnout jako , kde [2] .