www.wikidata.uk-ua.nina.az
Dvijkovij algoritm obchislennya NSD takozh vidomij yak algoritm Stajna abo dvijkovij algoritm Evklida algoritm sho obchislyuye najbilshij spilnij dilnik dvoh nevid yemnih cilih chisel Dvijkovij algoritm Evklida vikoristovuye prostishi arifmetichni operaciyi nizh zvichajnij algoritm Evklida vin zaminyuye dilennya bitovim zsuvom porivnyannyami ta vidnimannyam Hocha vpershe jogo opublikuvav izrayilskij fizik i programist Dzhozef Stajn 1967 roku 1 algoritm mig buti vidomim she v pershomu stolitti v Kitayi 2 Vizualizaciya vikoristannya dvijkovogo algoritmu Evklida dlya obchislennya najbilshogo spilnogo dilnika NSD chisel 36 i 24 Otzhe NSD rivnij 22 3 12 Zmist 1 Algoritm 2 Realizaciya 2 1 Rekursivna realizaciya na C 2 2 Iterativna realizaciya na C 3 Efektivnist 4 Div takozh 5 Posilannya 6 Podalshe chitannya 7 Zovnishni dzherelaAlgoritm red Algoritm obchislyuye NSD zastosovuyuchi taki totozhnosti NSD 0 v v tomu sho nul dilitsya na vsi chisla a v najbilshij dilnik chisla v Analogichno NSD u 0 u NSD 0 0 zazvichaj neviznacheno ale zruchno vvazhati sho NSD 0 0 0 Yaksho u i v parni to NSD u v 2 NSD u 2 v 2 tomu sho 2 spilnij dilnik Yaksho u parne a v neparne to NSD u v NSD u 2 v tomu sho 2 ne spilnij dilnik Analogichno yaksho u neparne a v parne to NSD u v NSD u v 2 Yaksho u i v neparni ta u gt v to NSD u v NSD u v 2 v yaksho zh u lt v to NSD u v NSD u v u 2 Ce kombinaciya odnogo kroku zvichajnogo algoritmu Evklida de na kozhnomu kroci zastosovuyetsya vidnimannya iz podalshim zastosuvannyam kroku 3 Riznicya dvoh neparnih chisel zavzhdi bude parnoyu tomu dilennya na dva daye cile chislo Kroki 2 4 povtoryuyut poki u ne stane rivnim v abo poki u ne stane 0 na odin krok bilshe U bud yakomu vipadku rezultat dorivnyuvatime 2k v de k kilkist spilnih dilnikiv 2 znajdenih na kroci 2 U najgirshomu vipadku algoritm potrebuye O n2 3 chasu de n kilkist bit u bilshomu z dvoh chisel Hocha kozhen krok zmenshuye hocha b odne chislo prinajmni vdvichi dlya duzhe velikih chisel vidnimannya ta zsuv potrebuyut linijnogo chasu vtim na praktici voni dovoli shvidki Rozshirenij dvijkovij algoritm obchislennya NSD analogichnij do rozshirenogo algoritmu Evklida opisav Donald Knut u drugomu tomi Mistectva programuvannya 4 5 Realizaciya red Rekursivna realizaciya na C red Realizaciya shozha na opis algoritmu zverhu Usi rekursivni vikliki krim odnogo ye hvostovoyu rekursiyeyu unsigned int gcd unsigned int u unsigned int v prosti vipadki zavershennya if u v return u if u 0 return v if v 0 return u obchislennya kilkosti dvijok if u amp 1 u parne if v amp 1 v neparne return gcd u gt gt 1 v else v parne return gcd u gt gt 1 v gt gt 1 lt lt 1 if v amp 1 u neparne v parne return gcd u v gt gt 1 zmenshennya bilshogo argumentu if u gt v return gcd u v gt gt 1 v return gcd v u gt gt 1 u Iterativna realizaciya na C red Iterativna realizaciya spochatku pozbuvayetsya spilnogo dilnika 2 zastosovuyuchi rivnist 2 potim obchislyuye NSD zastosovuyuchi rivnosti 3 i 4 unsigned int gcd unsigned int u unsigned int v int shift NSD 0 v v NSD u 0 u NSD 0 0 0 if u 0 return v if v 0 return u Nehaj shift lg K de K najbilsha stepin dvijki sho dilit u i v for shift 0 u v amp 1 0 shift u gt gt 1 v gt gt 1 while u amp 1 0 u gt gt 1 Pochinayuchi zvidsi u zavzhdi neparne do pozbudemos vsih dilnikiv 2 v v voni ne spilni zauvazhennya v ne 0 tozh cikl zavershitsya while v amp 1 0 Loop X v gt gt 1 Teper u i v neparni Yaksho potribno obminyayemo yih shob u lt v todi vstanovimo v v u parne chislo Dlya dovgih chisel obmin vsogo peremishennya vkazivnikiv i vidnimannya mozhna zrobiti na misci if u gt v unsigned int t v v u u t Obmin u i v v v u Tut v gt u while v 0 Vidnovlyuyemo spilni dilniki 2 return u lt lt shift Efektivnist red Dovedeno sho v teoriyi dvijkovij algoritm obchislennya NSD v serednomu na 60 efektivnishij nizh algoritm Evklida u terminah kilkosti bitovih operacij 6 7 8 Odnak hoch na praktici cej algoritm desho perevershuye zvichajnij algoritm Evklida jogo asimptotichna skladnist taka zh sama a realizaciya nepomirno skladnisha osoblivo vrahovuyuchi zagalnodostupnist instrukciyi cilochiselnogo dilennya na vsih suchasnih mikroprocesorah 9 10 Spravzhni komp yuteri operuyut iz kilkoma bitami odnochasno tomu navit realizaciyi dvijkovogo NSD na asembleri mayut konkuruvati z aparatnimi shemami dlya cilochiselnogo dilennya Na gipotetichnomu komp yuteri MIX rozshirenomu bitovimi zsuvami ta perevirkami na parnist Knut povidomlyav pro 20 perevagu dvijkovogo algoritmu nad zvichajnim algoritmom Evklida Dlya arifmetiki dovilnoyi tochnosti ni dvijkovij algoritm NSD ni algoritm Evklida ne ye najshvidshimi oskilki obidva voni potrebuyut kvadratichnogo chasu vid kilkosti vhidnih bit Natomist rekursivni metodi sho kombinuyut ideyi dvijkovogo algoritmu NSD j algoritmu Shonhage Shtrassena dlya shvidkogo mnozhennya cilih chisel dozvolyayut dosyagnuti blizkogo do linijnogo chasu roboti 11 Div takozh red nbsp Portal Programuvannya Algoritm Evklida Rozshirenij algoritm Evklida Najmenshe spilne kratnePosilannya red Stein J 1967 Computational problems associated with Racah algebra Journal of Computational Physics 1 3 397 405 ISSN 0021 9991 doi 10 1016 0021 9991 67 90047 2 Knuth Donald 1998 Seminumerical Algorithms The Art of Computer Programming 2 vid 3rd Addison Wesley ISBN 0 201 89684 2 Arhivovana kopiya Arhiv originalu za 5 listopada 2018 Procitovano 4 listopada 2018 Knuth 1998 s 646 answer to exercise 39 of section 4 5 2 Handbook of Applied Cryptography Arhiv originalu za 2 lyutogo 2019 Procitovano 9 veresnya 2017 Akhavi Ali Vallee Brigitte 2000 AverageBit Complexity of Euclidean Algorithms Proceedings ICALP 00 Lecture Notes Computer Science 1853 373 387 CiteSeerX 10 1 1 42 7616 Arhiv originalu za 2 zhovtnya 2006 Brent Richard P 2000 Twenty years analysis of the Binary Euclidean Algorithm Millenial Perspectives in Computer Science Proceedings of the 1999 Oxford Microsoft Symposium in honour of Professor Sir Antony Hoare Palgrave NY 41 53 Arhiv originalu za 15 kvitnya 2012 Procitovano 4 listopada 2018 proceedings edited by J Davies A W Roscoe and J Woodcock Notes on Programming Arhivovano 25 listopada 2018 u Wayback Machine by Alexander Stepanov Jon Stokes 2007 Inside the Machine An Illustrated Introduction to Microprocessors and Computer Architecture No Starch Press s 117 ISBN 978 1 59327 104 6 Arhiv originalu za 28 chervnya 2014 Procitovano 4 listopada 2018 Robert Reese J W Bruce Bryan A Jones 2009 Microcontrollers From Assembly Language to C Using the PIC24 Family Cengage Learning s 217 ISBN 1 58450 633 4 Arhiv originalu za 28 chervnya 2014 Procitovano 4 listopada 2018 Stehle Damien Zimmermann Paul 2004 A binary recursive gcd algorithm Algorithmic number theory Lecture Notes in Comput Sci 3076 Springer Berlin s 411 425 MR 2138011 doi 10 1007 978 3 540 24847 7 31 Arhiv originalu za 13 veresnya 2014 Procitovano 4 listopada 2018 Podalshe chitannya red Thomas H Cormen Charles E Leiserson Ronald L Rivest and Clifford Stein Introduction to Algorithms Second Edition MIT Press and McGraw Hill 2001 ISBN 0 262 03293 7 Problem 31 1 pg 902 Zovnishni dzherela red NIST Dictionary of Algorithms and Data Structures binary GCD algorithm Arhivovano 13 zhovtnya 2018 u Wayback Machine Cut the Knot Binary Euclid s Algorithm Arhivovano 13 zhovtnya 2018 u Wayback Machine na cut the knot Analysis of the Binary Euclidean Algorithm Arhivovano 21 bereznya 2012 u Wayback Machine 1976 stattya Richard Brent vklyuchaye variant z vikoristannyam zsuviv vlivo Dynamics of the Binary Euclidean Algorithm Functional Analysis and Operators 1998 stattya Brigitte Vallee Otrimano z https uk wikipedia org w index php title Dvijkovij algoritm obchislennya najbilshogo spilnogo dilnika amp oldid 39621682