Berlekamp-Rabin algoritme

Berlekamp-Rabin algoritmen (også Berlekamps metode ) er en sandsynlighedsmetode til at finde rødderne af polynomier over et felt med polynomisk kompleksitet. Metoden blev beskrevet af den amerikanske matematiker Alvin Berlekamp i 1970 [1] som et spin-off til faktoriseringsalgoritmen for polynomier over endelige felter og blev senere (i 1979) modificeret af Michael Rabin til tilfældet med vilkårlige endelige felter [2] . Den originale version af algoritmen foreslået af Berlekamp i 1967 [3] var ikke polynomium [4] . Den version af algoritmen, der blev offentliggjort i 1970 baseret på resultaterne af Zassenhaus arbejdede med store værdier af , hvor titelmetoden blev brugt som en hjælper [1] . På udgivelsestidspunktet var metoden almindelig i det faglige miljø, men sjældent fundet i litteraturen [4] .

Historie

Metoden blev foreslået af Alvin Berlekamp i hans arbejde med faktorisering af polynomier over endelige felter [1] . I den reduceres faktoriseringen af ​​et polynomium til irreducerbare faktorer over et felt til at finde rødderne af nogle andre polynomier over et felt . Samtidig var der i det originale arbejde intet bevis for rigtigheden af ​​algoritmen [2] . Algoritmen blev færdiggjort og generaliseret til tilfældet med vilkårlige endelige felter af Michael Rabin [2] . I 1986 beskrev René Peralta en lignende algoritme [5] der løser problemet med at finde kvadratroden i et felt [6] , og i 2000 blev Peraltas metode generaliseret til at løse kubiske ligninger [7] .

I Berlekamps algoritme er et polynomium først repræsenteret som et produkt , hvor  er produktet af polynomier af grad . Derefter reduceres faktoriseringen af ​​hvert sådant gradspolynomium til at finde rødderne af det nye gradspolynomium . Artiklen, der introducerer faktoriseringsalgoritmen, foreslog også tre metoder til at finde rødderne til et polynomium i et Galois-felt . De to første reducerer det at finde rødder i en mark til at finde rødder i en mark . Den tredje metode, som er emnet for denne artikel, løser problemet med at finde rødder i feltet , som sammen med de to andre løser faktoriseringsproblemet [1] .

Den version af faktoriseringsalgoritmen foreslået af Berlekamp i hans første papir i 1967 [3] løb i , hvor  er antallet af irreducerbare faktorer i polynomiet. Algoritmen var således ikke-polynomiel og var upraktisk, når primtallet var stort nok. I 1969 blev dette problem løst af Hans Zassenhaus , som viste, hvordan man kan reducere flaskehalsen i algoritmen til problemet med at finde rødderne til et eller andet polynomium [4] . I 1970 blev Berlekamps artikel genudgivet under hensyntagen til løsningerne fra Zassenhaus [1] .

I 1980 udførte Michael Rabin en grundig analyse af algoritmen, generaliserede den til at arbejde med endelige felter af formen og beviste, at fejlsandsynligheden for én iteration af algoritmen ikke overstiger [2] , og i 1981 Michael Ben- Eller styrket dette skøn til , hvor  — antallet af forskellige rødder af polynomiet [8] . Spørgsmålet om eksistensen af ​​en polynomiel deterministisk algoritme til at finde rødderne af et polynomium over et endeligt felt forbliver åbent - de vigtigste polynomielle faktoriseringsalgoritmer , Berlekamp-algoritmen og Cantor-Zassenhaus-algoritmen er sandsynlige. I 1981 viste Paul Camion [9] , at en sådan algoritme eksisterer for ethvert givet tal , men dette resultat er rent teoretisk, og spørgsmålet om muligheden for at konstruere de mængder, som er beskrevet af ham i praksis, forbliver åbent [10] .

I den første udgave af andet bind af "The Art of Programming " om numeriske algoritmer, skriver Donald Knuth , at lignende faktoriseringsprocedurer var kendt i 1960, men sjældent blev fundet i det offentlige domæne [4] . Et af de første offentliggjorte eksempler på brugen af ​​metoden kan findes i arbejdet af Golomb , Welsh og Hales fra 1959 om faktorisering af trinomialer over , hvor et særligt tilfælde blev overvejet [11] .

Algoritme

Udtalelse af problemet

Lad være  et ulige primtal. Overvej et polynomium over feltet af rester modulo . Det er nødvendigt at finde alle tal således, at for alle mulige [2] [12] .

Randomisering

Lad . At finde alle rødderne af et sådant polynomium svarer til at opdele det i lineære faktorer. For at finde en sådan partition er det nok at lære at opdele polynomiet i to vilkårlige faktorer og derefter køre rekursivt ind i dem. For at gøre dette introducerer vi et polynomium , hvor  er et tilfældigt tal fra . Hvis et sådant polynomium kan repræsenteres som et produkt , så betyder det i form af det oprindelige polynomium at , hvilket giver en faktorisering af det oprindelige polynomium [1] [12] .

Klassificering af elementer

Ifølge Euler-kriteriet er nøjagtigt en af ​​følgende egenskaber opfyldt for ethvert monomer [1] :

  1. Monomialet er lig med hvis ,
  2. Monomialet deler hvis  er en kvadratisk restmodulo ,
  3. Monomialet deler if  er en kvadratisk ikke-rest modulo dette.

Således, hvis det ikke er deleligt med , som kan kontrolleres separat, så er det lig med produktet af de største fælles divisorer og [12] .

Berlekamp metode

Ovenstående fører til følgende algoritme [1] :

  1. Polynomiets koefficienter beregnes eksplicit ,
  2. Beregn resten af ​​divisionen ved successiv kvadrering og tag resten af ​​,
  3. Binær eksponentiering beregner resten af ​​divisionen ved at bruge polynomier beregnet i sidste trin,
  4. Hvis , så giver ovenstående en ikke-triviel faktorisering,
  5. Ellers er alle rødder rester eller ikke-rester på samme tid, og det er værd at prøve en anden værdi .

Hvis det også divideres med et eller andet polynomium , der ikke har rødder i , så vil der ved beregning med og fås en opdeling af det kvadratfrie polynomium i ikke-trivielle faktorer, så algoritmen giver dig mulighed for at finde alle rødderne af evt. polynomier over , og ikke kun dem, der er opdelt i et produkt af monomer [12] .

Udtræk af kvadratroden

Lad det være nødvendigt at løse en sammenligning , hvis løsninger er elementerne og hhv. At finde dem svarer til at faktorisere et polynomium over et felt . I dette særlige tilfælde er problemet forenklet, da det for løsningen er nok kun at beregne . For det resulterende polynomium vil præcis et af udsagn være sandt:

  1. GCD er , hvilket indebærer, at og er kvadratiske ikke-rester på samme tid,
  2. GCD er , hvilket indebærer, at begge tal er kvadratiske rester,
  3. GCD er lig med en monomial , hvilket indebærer, at præcis ét tal ud af to er en kvadratisk rest.

I det tredje tilfælde skal den resulterende monomial være lig med eller , eller . Dette gør det muligt at skrive løsningen som [1] .

Eksempel

Lad os løse sammenligningen . For at gøre dette skal du faktorisere . Lad os overveje de mulige værdier :

  1. Lad . Så hvorfra . Begge numre er ikke-rester, og du skal tage et andet .
  1. Lad . Så hvorfra . Derfor , derfor .

Verifikation viser det og er gyldigt .

Begrundelse for metoden

Algoritmen finder en opdeling i ikke-trivielle faktorer i alle tilfælde, bortset fra dem, hvor alle tal er rester eller ikke-rester på samme tid. Ifølge teorien om cyklotomi [1] kan sandsynligheden for en sådan hændelse for det tilfælde, hvor de selv er både rester eller ikke-rester på samme tid (det vil sige, når det ikke er egnet til vores procedure) estimeres som [8] , hvor  er antallet af forskellige tal blandt [1] . Således overstiger sandsynligheden for algoritmefejl ikke .

Anvendelse til faktorisering af polynomier

Det er kendt fra teorien om endelige felter , at hvis graden af ​​et irreducerbart polynomium er , så er et sådant polynomium en divisor og er ikke en divisor for .

Således sekventielt overvejer polynomier hvor og for , Vi kan opdele polynomiet i faktorer af formen , hvor  er produktet af alle irreducible polynomier af grad , der deler polynomiet . Ved at kende graden af ​​, kan vi bestemme antallet af sådanne polynomier lig med . Lad . Hvis vi betragter polynomiet , hvor , så skal rækkefølgen af ​​et sådant polynomium i feltet dividere tallet . Hvis ikke deleligt med , Så er polynomiet deleligt med men ikke med .

Baseret på dette foreslog Zassenhaus at lede efter divisorer af et polynomium på formen , hvor  er en tilstrækkelig stor divisor , for eksempel . I et bestemt tilfælde opnås præcis Berlekamp-metoden som beskrevet ovenfor [4] .

Åbningstider

Trin for trin kan køretiden for en iteration af algoritmen estimeres som følger, idet det antages, at graden af ​​polynomiet er :

  1. I betragtning af, at ifølge Newtons binomiale formel , sker overgangen fra til i ,
  2. Produktet af polynomier og at tage resten af ​​et polynomium modulo en anden udføres i , så beregningen udføres i ,
  3. I lighed med det foregående punkt udføres binær eksponentiering i ,
  4. At tage fra to polynomier ifølge Euklids algoritme udføres i .

Der kan således udføres én iteration af algoritmen for aritmetiske operationer med elementer , og at finde alle polynomiets rødder kræver et gennemsnit [8] . I det særlige tilfælde med at udtrække kvadratroden er værdien to, så køretiden estimeres som én iteration af algoritmen [12] .

Noter

  1. ↑ 1 2 3 4 5 6 7 8 9 10 11 Berlekamp ER Factoring polynomials over large finite fields  //  Mathematics of Computation. - 1970. - Bd. 24 , udg. 111 . - s. 730-732 . — ISSN 0025-5718 . - doi : 10.1090/S0025-5718-1970-0276200-X .
  2. ↑ 1 2 3 4 5 Rabin M. Probabilistic Algorithms in Finite Fields  //  SIAM Journal on Computing. - 1980. - 1. maj ( vol. 9 , udg. 2 ). - S. 273-280 . — ISSN 0097-5397 . - doi : 10.1137/0209024 . Arkiveret fra originalen den 23. juni 2019.
  3. ↑ 1 2 Berlekamp ER Factoring polynomials over finite fields  //  The Bell System Technical Journal. - 1967. - Oktober ( bind 46 , udg. 8 ). - S. 1853-1859 . — ISSN 0005-8580 . - doi : 10.1002/j.1538-7305.1967.tb03174.x . Arkiveret fra originalen den 17. februar 2019.
  4. ↑ 1 2 3 4 5 Knuth DE Kunsten at programmere computer  . - Reading, Massachusetts: Addison-Wesley Publishing Company, 1968. - Vol. 2. - S. 381-390. — 624 s. - ISBN 0-201-03802-1 . Arkiveret 3. august 2019 på Wayback Machine
  5. Sze TW Om at tage kvadratrødder uden kvadratiske ikke-rester over endelige felter  //  Mathematics of Computation. - 2011. - 3. januar ( vol. 80 , udg. 275 ). - S. 1797-1811 . — ISSN 0025-5718 . - doi : 10.1090/s0025-5718-2011-02419-1 .
  6. Peralta R. En enkel og hurtig probabilistisk algoritme til beregning af kvadratrødder modulo et primtal (Corresp.  )  // IEEE Transactions on Information Theory. - 1986. - November ( vol. 32 , udg. 6 ). - s. 846-847 . — ISSN 0018-9448 . - doi : 10.1109/TIT.1986.1057236 . Arkiveret fra originalen den 30. juni 2019.
  7. Padró C., Sáez G. At tage terningrødder i Zm  //  Applied Mathematics Letters. - 2002. - August ( bind 15 , udg. 6 ). - S. 703-708 . — ISSN 0893-9659 . - doi : 10.1016/s0893-9659(02)00031-9 .
  8. ↑ 1 2 3 Ben-Or M. Probabilistiske algoritmer i endelige felter  //  22nd Annual Symposium on Foundations of Computer Science (sfcs 1981). - 1981. - Oktober. - S. 394-398 . - doi : 10.1109/SFCS.1981.37 . Arkiveret fra originalen den 29. juli 2019.
  9. Camion P. A Deterministic Algorithm for Factorizing Polynomials of Fq [X]  //  Combinatorial Mathematics, Proceedings of the International Colloquium on Graph Theory and Combinatorics. - Elsevier, 1983. - S. 149-157 . — ISBN 9780444865120 .
  10. Grenet B., van der Hoeven J., Lecerf G. Deterministisk rodfinding over endelige felter ved hjælp af Graeffe-transformationer  //  Applicable Algebra in Engineering, Communication and Computing. - 2015. - Bd. 27 , udg. 3 . — S. 239 . — ISSN 0938-1279 . - doi : 10.1007/s00200-015-0280-5 .
  11. Golomb SW, Hales A., Welch LR On the factorization of trinomials over GF(2  )  // Shift Register Sequences. - World Scientific, 2017. - Marts. - S. 90-108. - ISBN 978-981-4632-00-3 . - doi : 10.1142/9789814632010_0005 .
  12. ↑ 1 2 3 4 5 Menezes AJ, Blake IF, Gao XH, Mullin RC, Vanstone SA Applications of Finite  Fields . - Springer USA, 1993. - S. 22-26. — 218 sider. - (Springer International Series in Engineering and Computer Science). — ISBN 9780792392828 . Arkiveret 30. juni 2019 på Wayback Machine