Division av polynom är operationen av division med en rest i den euklidiska ringen av polynom i en variabel över något fält . Den naiva algoritmen som implementerar denna operation är en generaliserad form av kolumndelning , som enkelt implementeras manuellt.
För alla polynom och , , Det finns unika polynom och sådant
,och har en lägre grad än .
Syftet med polynomdivisionsalgoritmer är att hitta kvoten och resten för en given delbar och icke-nolldelare [1] .
Problemet med att dela polynom med resten kan formuleras i följande ekvivalenta formuleringar [2] .
Polynom av grad och grad ges av deras koefficienter. Det är nödvändigt att hitta kvoten och resten så att [2]
(ett) |
Polynomen definierade på detta sätt och är unika - om vi antar att ekvationen ( 1 ) har två lösningar och , då
därav följer att antingen , vilket också innebär , eller graden är inte mindre än graden , vilket är omöjligt per definition [3] .
Detta problem kan skrivas om i matrisform, om vi antar att och är givna , och vi behöver beräkna så att [2]
(2) |
På grund av det faktum att , för att lösa problemet, räcker det att hitta genom de första ekvationerna i systemet . Om vi bara betraktar dessa ekvationer blir problemet
(3) |
Matrisen för detta ekvationssystem är lägre triangulär och Toeplitz , sammansatt av ledande koefficienter och nollor, och systemets lösning är likvärdig med att hitta dess invers [2] .
Låta och vara polynom erhållna från och genom att vända koefficientsekvensen. Ekvationssystemet ( 3 ) kan formuleras som
där , och betyder att resten efter att ha dividerat polynomen och med är lika. Delingen av ett polynom med kan representeras som , så resten är lika med polynomet som erhålls från de första koefficienterna , det vill säga,
Om polynomen och är kända, då , Där är det inversa polynomet i ringen av rester modulo . Således kan sökningen reduceras till att hitta , så att
(fyra) |
Denna formulering gör det också möjligt att hitta den inversa matrisen i systemet ( 3 ):
Låt vara storleksmatrisen från ( 3 ). Sedan är en lägre triangulär Toeplitz-matris, vars första kolumn är , var är koefficienterna från ( 4 ). |
System ( 3 ) är ekvivalent med ekvationen . Följaktligen systemet
kan representeras som , vilket i fallet ( 4 ) motsvarar system ( 3 ). ■
På grund av godtyckligheten hos polynomet som definierar elementen , tillåter detta faktum oss att hitta inversen till en godtycklig Toeplitz nedre triangulär matris [2] .
Ekvationen kan ses inte bara modulo , utan också som en likhet i ringen av formella effektserier . Låta och vara formell potensserier som sammanfaller med polynomen och . Om vi i sådana termer finner den formella serien
(5) |
då kommer dess koefficienter vid lägre potenser att motsvara det erforderliga polynomet . Detta tillvägagångssätt tillåter oss också att betrakta problem ( 2 ) som ett system med en oändligt utökad Toeplitz-matris och en oändligt utökad kolumn , i vilken kolumnen av residualer är exkluderad . Att lösa de första raderna i ett sådant system kommer att ge de första koefficienterna i serien , nämligen . Samtidigt är att arbeta med potensserier i allmänhet, där endast de första koefficienterna i serien är av intresse (till exempel på grund av begränsat tillgängligt minne), likvärdigt med att arbeta med polynom, på vilka operationer utförs i modulo ring av rester [4] . I synnerhet är sökningen efter de första koefficienterna ekvivalent med att lösa ekvationen [2] .
Under algoritmens gång nollställs koefficienterna vid högre potenser sekventiellt genom att subtrahera från den multiplicerat med någon potens med koefficienter, som sedan bildar kvoten . Inledningsvis bestäms koefficienten lika med . Om vi expanderar , alltså
Genom att ersätta , tar denna ekvation formen
liknande ekvation ( 1 ). I det här fallet är den e koefficienten , per definition , lika med , så graden kommer att vara mindre än graden . Proceduren upprepas tills graden blir mindre än graden , vilket kommer att innebära att nästa är lika med den [3] .
ExempelLåt och . För givna polynom kan kolumndelning med skrivas som
På det här sättet,
det vill säga polynomet är en kvot och a är resten.
1972 föreslog Malte Zieveking en algoritm för att hitta en lösning på en ekvation för givna och [5] . 1974 visade Kong Xiangzhong att för , algoritmen är en iteration av Newtons metod för [6] . Med detta tillvägagångssätt tar iterationen formen
Där betecknar derivatan av funktionen i punkten . För att utvärdera algoritmens noggrannhet kan man uppskatta skillnaden
av vilket det följer att om den är delbar med (vilket motsvarar det faktum att de första koefficienterna är korrekt definierade), så kommer den att vara delbar med . Med tanke på det initiala villkoret fördubblar varje iteration således antalet exakt definierade koefficienter . Därför räcker iterationer för beräkningen . Att tillämpa den snabba Fouriertransformen på multiplikationen av polynom i formeln ovan leder till den slutliga körtiden , vilket avsevärt förbättrar uppskattningen för den vanliga långa multiplikationen [7] .
ExempelLåt och . På grund av ( 4 ) är det nödvändigt att hitta . Det inversa polynomet söks på följande sätt:
På grund av egenskaperna hos Newtons metod bestäms de första koefficienterna korrekt. Eftersom ytterligare beräkningar görs modulo , kan koefficienterna vid högre potenser förkastas. Härifrån
i kraft av vilken .
För att utvärdera effektiviteten av olika metoder används den aritmetiska kretsens komplexitet - det totala antalet additions-, multiplikations-, subtraktions- och divisionsoperationer över fältet av komplexa tal som måste utföras under driften av algoritmen. Antalet parallella steg som krävs för multiprocessorimplementeringen av algoritmen uppskattas också, förutsatt att varje processor i vilket steg som helst inte kan utföra mer än en operation [7] .
Varje iteration av divisionsalgoritmen består i att subtrahera förskjutningen med något belopp från , vilket kan göras i . Eftersom graden , initialt lika med , minskar tills den blir mindre än , kan den totala körtiden för algoritmen uppskattas som , där [2] .