Euklidovský algoritmus - Euclidean algorithm

v matematika, Euklidovský algoritmus,[poznámka 1] nebo Euklidův algoritmus, je efektivní metoda pro výpočet největší společný dělitel (GCD) dvou celých čísel (čísel), což je největší číslo, které je rozděluje bez a zbytek. Je pojmenován podle starořečtiny matematik Euklid, který to poprvé popsal v jeho Elementy (c. 300 př. n. l.). Je to příklad algoritmus, podrobný postup provádění výpočtu podle dobře definovaných pravidel a je jedním z nejstarších běžně používaných algoritmů. Lze jej použít ke snížení zlomky jejich nejjednodušší forma, a je součástí mnoha dalších číselně teoretických a kryptografických výpočtů.
Euklidovský algoritmus je založen na principu, že největší společný dělitel dvou čísel se nezmění, pokud je větší číslo nahrazeno jeho rozdílem s menším číslem. Například 21 je GCD 252 a 105 (jako 252 = 21 × 12 a 105 = 21 × 5) a stejné číslo 21 je také GCD 105 a 252 - 105 = 147. Protože tato náhrada snižuje větší opakování tohoto procesu dává postupně menší dvojice čísel, dokud se obě čísla nestanou stejnými. Když k tomu dojde, jsou to GCD původních dvou čísel. Podle obrácení kroků nebo pomocí rozšířený euklidovský algoritmus, GCD lze vyjádřit jako a lineární kombinace ze dvou původních čísel, to je součet dvou čísel, každé vynásobené znakem celé číslo (například, 21 = 5 × 105 + (−2) × 252). Skutečnost, že GCD lze vždy vyjádřit tímto způsobem, je známá jako Bézoutova identita.
Verze výše popsaného euklidovského algoritmu (a Euklidova) může trvat mnoho kroků odčítání k nalezení GCD, když je jedno z daných čísel mnohem větší než druhé. Efektivnější verze algoritmu zkratky tyto kroky, místo toho nahradí větší ze dvou čísel jeho zbytkem při dělení menší ze dvou (s touto verzí se algoritmus zastaví při dosažení nulového zbytku). S tímto vylepšením algoritmus nikdy nevyžaduje více kroků než pětinásobek počtu číslic (základ 10) menšího celého čísla. To bylo prokázáno Gabriel Lamé v roce 1844 a znamená začátek roku teorie výpočetní složitosti. Další metody pro zlepšení účinnosti algoritmu byly vyvinuty ve 20. století.
Euklidovský algoritmus má mnoho teoretických i praktických aplikací. Používá se pro redukci zlomky jejich nejjednodušší forma a za provedení divize v modulární aritmetika. Výpočty využívající tento algoritmus jsou součástí kryptografické protokoly které se používají k zabezpečení Internet komunikace a způsoby rozbití těchto kryptosystémů pomocí factoring velkých složených čísel. K řešení lze použít euklidovský algoritmus Diophantine rovnice, jako je hledání čísel, která splňují více shody podle Čínská věta o zbytku, konstruovat pokračující zlomky a najít přesné racionální aproximace na reálná čísla. Nakonec může být použit jako základní nástroj pro dokazování vět v teorie čísel jako Lagrangeova věta o čtyřech čtvercích a jedinečnost hlavních faktorizací. Původní algoritmus byl popsán pouze pro přirozená čísla a geometrické délky (reálná čísla), ale algoritmus byl v 19. století zobecněn na jiné typy čísel, například Gaussova celá čísla a polynomy jedné proměnné. To vedlo k modernímu abstraktní algebraický pojmy jako Euklidovské domény.
Pozadí: největší společný dělitel
Euklidovský algoritmus vypočítá největšího společného dělitele (GCD) ze dvou přirozená čísla A a b. Největší společný dělitel G je největší přirozené číslo, které rozděluje obě A a b aniž by zbyl zbytek. Synonyma pro GCD zahrnují největší společný faktor (GCF) nejvyšší společný faktor (HCF) nejvyšší společný dělitel (HCD) a největší společné opatření (GCM). Největší společný dělitel se často píše jako gcd (A, b) nebo jednodušeji jako (A, b),[1] ačkoli druhá notace je nejednoznačná, používá se také pro pojmy jako ideál v kruh celých čísel, který úzce souvisí s GCD.
Pokud gcd (A, b) = 1, tedy A a b se říká, že jsou coprime (nebo relativně prime).[2] Tato vlastnost to neznamená A nebo b jsou sami sebou prvočísla.[3] Například ani 6 ani 35 není prvočíslo, protože oba mají dva prvočíselné faktory: 6 = 2 × 3 a 35 = 5 × 7. Přesto jsou 6 a 35 coprime. Žádné přirozené číslo kromě 1 nerozdělí 6 a 35, protože nemají společné hlavní faktory.

Nechat G = gcd (A, b). Od té doby A a b jsou oba násobky G, lze je psát A = mg a b = ng, a neexistuje větší počet G > G pro které to platí. Přirozená čísla m a n musí být coprime, protože z něho by mohl být vyloučen jakýkoli společný faktor m a n dělat G větší. Tedy jakékoli jiné číslo C který rozděluje obojí A a b musí také rozdělit G. Největší společný dělitel G z A a b je jedinečný (pozitivní) společný dělitel A a b to je dělitelné jakýmkoli jiným společným dělitelem C.[4]
GCD lze vizualizovat následujícím způsobem.[5] Zvažte obdélníkovou oblast A podle ba jakýkoli společný dělitel C který rozděluje obojí A a b přesně. Strany obdélníku lze rozdělit na segmenty délky C, který rozděluje obdélník na mřížku čtverců délky strany C. Největší společný dělitel G je největší hodnota C pro které je to možné. Pro ilustraci lze obdélníkovou oblast 24 x 60 rozdělit na mřížku: čtverce 1 x 1, 2 x 2 čtverce, 3 x 3 čtverce, 4 x 4 čtverce, 6 x -6 čtverců nebo 12 x 12 čtverců. Proto je 12 největším společným dělitelem 24 a 60. Obdélníková oblast 24 x 60 může být rozdělena do mřížky čtverců 12 x 12, se dvěma čtverci podél jednoho okraje (24/12 = 2) a pěti čtverce podél druhé (60/12 = 5).
GCD dvou čísel A a b je součin hlavních faktorů sdílených dvěma čísly, kde lze použít stejný primární faktor vícekrát, ale pouze za předpokladu, že součin těchto faktorů rozděluje oba A a b.[6] Například protože 1386 lze započítat do 2 × 3 × 3 × 7 × 11 a 3213 lze započítat do 3 × 3 × 3 × 7 × 17, největší společný dělitel 1386 a 3213 se rovná 63 = 3 × 3 × 7, produkt jejich sdílených hlavních faktorů. Pokud dvě čísla nemají společné hlavní faktory, jejich největší společný dělitel je 1 (zde se získá jako instance prázdný produkt ), jinými slovy, jsou coprime. Klíčovou výhodou euklidovského algoritmu je, že dokáže efektivně najít GCD, aniž by bylo nutné počítat hlavní faktory.[7][8] Faktorizace velkých celých čísel se považuje za výpočetně velmi obtížný problém a bezpečnost mnoha široce používaných kryptografické protokoly je založen na jeho neproveditelnosti.[9]
Jiná definice GCD je užitečná zejména v pokročilé matematice teorie prstenů.[10] Největší společný dělitel G dvou nenulových čísel A a b je také jejich nejmenší kladná integrální lineární kombinace, tj. nejmenší kladné číslo formuláře ua + vb kde u a proti jsou celá čísla. Sada všech integrálních lineárních kombinací A a b je ve skutečnosti stejný jako množina všech násobků G (mg, kde m je celé číslo). V moderním matematickém jazyce ideál generováno uživatelem A a b je ideál generovanýG sám (ideál generovaný jediným prvkem se nazývá a hlavní ideál a všechny ideály celých čísel jsou hlavními ideály). Některé vlastnosti GCD jsou ve skutečnosti snadněji vidět s tímto popisem, například skutečnost, že jakýkoli společný dělitel A a b také rozděluje GCD (rozděluje obě podmínky ua + vb). Ekvivalence této definice GCD s ostatními definicemi je popsána níže.
GCD tří nebo více čísel se rovná součinu hlavních faktorů společných všem číslům,[11] ale lze jej také vypočítat opakovaným odebíráním GCD dvojic čísel.[12] Například,
- gcd (A, b, C) = gcd (A, gcd (b, C)) = gcd (gcd (A, b), C) = gcd (gcd (A, C), b).
Euclidův algoritmus, který počítá GCD dvou celých čísel, tedy stačí k výpočtu GCD libovolně mnoha celých čísel.
Popis
Postup
Euklidovský algoritmus probíhá v sérii kroků, takže výstup každého kroku je použit jako vstup pro další. Nechat k být celé číslo, které počítá kroky algoritmu, počínaje nulou. Počáteční krok tedy odpovídá k = 0, další krok odpovídá k = 1 atd.
Každý krok začíná dvěma nezápornými zbytky rk−1 a rk−2. Vzhledem k tomu, že algoritmus zajišťuje, že se zbytky neustále snižují s každým krokem, rk−1 je menší než jeho předchůdce rk−2. Cílem kth step step is to find a kvocient qk a zbytek rk které splňují rovnici
a které mají 0 ≤ rk < rk−1. Jinými slovy, násobky menšího počtu rk−1 jsou odečteny od většího počtu rk−2 až do konce rk je menší než rk−1.
V počátečním kroku (k = 0), zbytek r−2 a r−1 rovnat se A a b, čísla, pro která je hledána GCD. V dalším kroku (k = 1), zbytek stejný b a zbytek r0 počátečního kroku atd. Algoritmus lze tedy zapsat jako posloupnost rovnic
Li A je menší než b, první krok algoritmu zamění čísla. Například pokud A < b, počáteční kvocient q0 se rovná nule a zbytek r0 je A. Tím pádem, rk je menší než jeho předchůdce rk−1 pro všechny k ≥ 0.
Protože zbytky se snižují s každým krokem, ale nikdy nemohou být záporné, zbytek rN musí se nakonec rovnat nule, kdy se algoritmus zastaví.[13] Poslední nenulový zbytek rN−1 je největším společným dělitelem A a b. Číslo N nemůže být nekonečný, protože mezi počátečním zbytkem existuje pouze konečný počet nezáporných celých čísel r0 a nula.
Doklad o platnosti
Platnost euklidovského algoritmu lze prokázat dvoustupňovým argumentem.[14] V prvním kroku konečný nenulový zbytek rN−1 je zobrazen, aby rozdělil oba A a b. Jelikož se jedná o společného dělitele, musí být menší nebo roven největšímu společnému děliteli G. Ve druhém kroku se ukazuje, že jakýkoli společný dělitel A a b, počítaje v to G, musí rozdělit rN−1; proto, G musí být menší nebo rovno rN−1. Tyto dva závěry jsou rozporuplné, pokud rN−1 = G.
To prokázat rN−1 rozděluje obě A a b (první krok), rN−1 rozděluje jeho předchůdce rN−2
- rN−2 = qN rN−1
od posledního zbytku rN je nula. rN−1 také dělí svého dalšího předchůdce rN−3
- rN−3 = qN−1 rN−2 + rN−1
protože rozděluje oba termíny na pravé straně rovnice. Opakující se stejný argument, rN−1 rozděluje všechny předchozí zbytky, včetně A a b. Žádný z předchozích zbytků rN−2, rN−3atd. rozdělit A a b, protože zanechávají zbytek. Od té doby rN−1 je společným dělitelem A a b, rN−1 ≤ G.
Ve druhém kroku jakékoli přirozené číslo C který rozděluje obojí A a b (jinými slovy, jakýkoli společný dělitel A a b) rozděluje zbytky rk. Podle definice, A a b lze napsat jako násobky C : A = mc a b = nc, kde m a n jsou přirozená čísla. Proto, C rozděluje počáteční zbytek r0, od té doby r0 = A − q0b = mc − q0nc = (m − q0n)C. Obdobný argument to ukazuje C také rozděluje následující zbytky r1, r2atd. Proto největší společný dělitel G musí se rozdělit rN−1, což z toho vyplývá G ≤ rN−1. Protože první část argumentu ukázala opak (rN−1 ≤ G), z toho vyplývá, že G = rN−1. Tím pádem, G je největším společným dělitelem ze všech následujících párů:[15][16]
- G = gcd (A, b) = gcd (b, r0) = gcd (r0, r1) =… = Gcd (rN−2, rN−1) = rN−1.
Pracoval příklad

Pro ilustraci lze použít euklidovský algoritmus k nalezení největšího společného dělitele A = 1071 a b = 462. Pro začátek se násobky 462 odečtou od 1071, dokud zbytek nebude menší než 462. Lze odečíst dva takové násobky (q0 = 2), zbývající část 147:
- 1071 = 2 × 462 + 147.
Poté se odečtou násobky 147 od 462, dokud zbytek nebude menší než 147. Lze odečíst tři násobky (q1 = 3), zbývající 21:
- 462 = 3 × 147 + 21.
Poté se od 147 odečtou násobky 21, dokud zbytek nebude menší než 21. Lze odečíst sedm násobků (q2 = 7), nezůstane žádný zbytek:
- 147 = 7 × 21 + 0.
Protože poslední zbytek je nula, algoritmus končí 21 jako největší společný dělitel 1071 a 462. To souhlasí s gcd (1071, 462) nalezeným primární faktorizací výše. V tabulkové formě jsou tyto kroky:
Krok k | Rovnice | Kvocient a zbytek |
---|---|---|
0 | 1071 = q0 462 + r0 | q0 = 2 a r0 = 147 |
1 | 462 = q1 147 + r1 | q1 = 3 a r1 = 21 |
2 | 147 = q2 21 + r2 | q2 = 7 a r2 = 0; algoritmus končí |
Vizualizace
Euklidovský algoritmus lze vizualizovat z hlediska analogie obkladů uvedené výše pro největšího společného dělitele.[17] Předpokládejme, že chceme pokrýt A-podle-b obdélník se čtvercovými dlaždicemi přesně, kde A je větší ze dvou čísel. Nejprve se pokusíme obložit obdélník pomocí b-podle-b čtvercové dlaždice; toto však ponechává r0-podle-b zbylý obdélník až do konce, kde r0 < b. Poté se pokusíme obložit zbytkový obdélník pomocí r0-podle-r0 čtvercové dlaždice. Tím zbývá druhý zbytkový obdélník r1-podle-r0, které se pokoušíme pomocí dlaždice r1-podle-r1 čtvercové dlaždice atd. Sekvence končí, když není žádný zbytkový obdélník, tj. Když čtvercové dlaždice přesně pokrývají předchozí zbytkový obdélník. Délka stran nejmenší čtvercové dlaždice je GCD rozměrů původního obdélníku. Například nejmenší čtvercová dlaždice na sousedním obrázku je 21 x 21 (zobrazeno červeně) a 21 je GCD 1071 a 462, což je rozměry původního obdélníku (zobrazeno zeleně).
Euklidovské dělení
Na každém kroku k, euklidovský algoritmus vypočítá kvocient qk a zbytek rk ze dvou čísel rk−1 a rk−2
- rk−2 = qk rk−1 + rk
Kde rk je nezáporný a je přísně menší než absolutní hodnota z rk−1. Věta, která je základem definice Euklidovské dělení zajišťuje, že takový podíl a zbytek vždy existují a jsou jedinečné.[18]
V Euklidově původní verzi algoritmu jsou kvocient a zbytek nalezeny opakovaným odečtením; to je rk−1 je odečteno od rk−2 opakovaně až do konce rk je menší než rk−1. Potom rk a rk−1 jsou vyměněny a proces je iterován. Euklidovské dělení redukuje všechny kroky mezi dvěma burzami na jeden krok, což je tedy efektivnější. Kromě toho nejsou kvocienty nutné, lze tedy nahradit euklidovské dělení znakem modulo provoz, což dává pouze zbytek. Tak se iterace euklidovského algoritmu stává jednoduše
- rk = rk−2 mod rk−1.
Implementace
Implementace algoritmu mohou být vyjádřeny v pseudo kód. Například verze založená na rozdělení může být naprogramováno tak jako[19]
funkce gcd (a, b) zatímco b ≠ 0 t: = b b: = a mod b a: = t vrátit se A
Na začátku kth iterace, proměnná b drží poslední zbytek rk−1, zatímco proměnná A drží svého předchůdce, rk−2. Krok b := A mod b je ekvivalentní výše uvedenému vzorci rekurze rk ≡ rk−2 mod rk−1. The dočasná proměnná t drží hodnotu rk−1 zatímco další zbytek rk se počítá. Na konci iterace smyčky proměnná b drží zbytek rk, zatímco proměnná A drží svého předchůdce, rk−1.
Ve verzi založené na odčítání, která byla původní verzí Euklida, je výpočet zbytku (b: = a mod b
) je nahrazeno opakovaným odečtením.[20] Na rozdíl od verze založené na dělení, která pracuje s libovolnými celými čísly jako vstupem, verze založená na odčítání předpokládá, že vstup se skládá z kladných celých čísel a zastaví se, když A = b:
funkce gcd (a, b) zatímco a ≠ b -li a> b a: = a - b jiný b: = b - a vrátit se A
Proměnné A a b alternativní držení předchozích zbytků rk−1 a rk−2. Předpokládat, že A je větší než b na začátku iterace; pak A rovná se rk−2, od té doby rk−2 > rk−1. Během iterace smyčky, A je snížena o násobky předchozího zbytku b dokud A je menší než b. Pak A je další zbytek rk. Pak b je snížena o násobky A dokud nebude opět menší než A, dává další zbytek rk+1, a tak dále.
Rekurzivní verze[21] je založen na rovnosti GCD po sobě následujících zbytků a zastavovací podmínce gcd (rN−1, 0) = rN−1.
funkce gcd (a, b) -li b = 0 vrátit se A jiný vrátit se gcd (b, a mod b)
Pro ilustraci se gcd (1071, 462) počítá z ekvivalentu gcd (462, 1071 mod 462) = gcd (462, 147). Druhá GCD se počítá z gcd (147, 462 mod 147) = gcd (147, 21), což se zase počítá z gcd (21, 147 mod 21) = gcd (21, 0) = 21.
Metoda nejméně absolutních zbytků
V jiné verzi Euklidova algoritmu se kvocient v každém kroku zvýší o jeden, pokud je výsledný záporný zbytek menší velikosti než typický kladný zbytek.[22][23] Dříve rovnice
- rk−2 = qk rk−1 + rk
předpokládal to |rk−1| > rk > 0. Alternativní negativní zbytek Ek lze vypočítat:
- rk−2 = (qk + 1) rk−1 + Ek
-li rk−1 > 0 nebo
- rk−2 = (qk − 1) rk−1 + Ek
-li rk−1 < 0.
Li rk je nahrazen Ek. když |Ek| < |rk|, pak jeden dostane variantu euklidovského algoritmu takovou
- |rk| ≤ |rk−1| / 2
na každém kroku.
Leopold Kronecker ukázal, že tato verze vyžaduje nejméně kroků jakékoli verze Euclidova algoritmu.[22][23] Obecněji se ukázalo, že pro každé vstupní číslo A a b, počet kroků je minimální právě tehdy qk je vybrán tak, aby kde je Zlatý řez.[24]
Historický vývoj
Euklidovský algoritmus je jedním z nejstarších běžně používaných algoritmů.[25] Objevuje se v Euklidova Elementy (kolem 300 př. n. l.), konkrétně v knize 7 (propozice 1–2) a knize 10 (propozice 2–3). V knize 7 je algoritmus formulován pro celá čísla, zatímco v knize 10 je formulován pro délky úseček. (V moderním použití by se dalo říci, že to tam bylo formulováno pro reálná čísla. Ale délky, oblasti a objemy, představované v moderním použití jako reálná čísla, se neměřují ve stejných jednotkách a neexistuje přirozená jednotka délky, plochy nebo objemu; koncept reálných čísel nebyl v té době znám.) Druhý algoritmus je geometrický. GCD dvou délek A a b odpovídá největší délce G to měří A a b rovnoměrně; jinými slovy délky A a b jsou oba celočíselné násobky délky G.
Algoritmus pravděpodobně nebyl objeven Euklid, který sestavil výsledky z dřívějších matematiků v jeho Elementy.[26][27] Matematik a historik B. L. van der Waerden naznačuje, že kniha VII pochází z učebnice o teorie čísel napsaný matematiky ve škole Pythagoras.[28] Algoritmus pravděpodobně znal Eudoxus z Cnidus (asi 375 př. nl).[25][29] Algoritmus může dokonce předcházet datu Eudoxus,[30][31] soudě podle použití technického výrazu ἀνθυφαίρεσις (anthyphairesis, reciproční odečítání) v pracích Euklida a Aristotela.[32]
O staletí později byl Euklidův algoritmus objeven nezávisle jak v Indii, tak v Číně,[33] primárně řešit Diophantine rovnice které vznikly v astronomii a vytváření přesných kalendářů. Na konci 5. století, indický matematik a astronom Aryabhata popsal algoritmus jako „rozmělňovač“,[34] snad kvůli jeho účinnosti při řešení diofantických rovnic.[35] Ačkoli zvláštní případ Čínská věta o zbytku byly již popsány v čínské knize Sunzi Suanjing,[36] obecné řešení zveřejnil Qin Jiushao ve své knize z roku 1247 Shushu Jiuzhang (數 書 九章 Matematické pojednání v devíti sekcích ).[37] Nejprve byl popsán euklidovský algoritmus numericky a popularizován v Evropě ve druhém vydání Bachet Problèmes plaisants et délectables (Příjemné a příjemné problémy, 1624).[34] V Evropě se také používal k řešení diofantických rovnic a při vývoji pokračující zlomky. The rozšířený euklidovský algoritmus byl publikován anglickým matematikem Nicholas Saunderson,[38] kdo to připsal Roger Cotes jako metoda pro efektivní výpočet pokračujících zlomků.[39]
V 19. století vedl euklidovský algoritmus k vývoji nových číselných systémů, jako např Gaussova celá čísla a Eisensteinova celá čísla. V roce 1815 Carl Gauss použil euklidovský algoritmus k prokázání jedinečné faktorizace Gaussova celá čísla, ačkoli jeho práce byla poprvé publikována v roce 1832.[40] Gauss zmínil algoritmus ve svém Disquisitiones Arithmeticae (publikováno 1801), ale pouze jako metoda pro pokračující zlomky.[33] Peter Gustav Lejeune Dirichlet Zdá se, že byl první, kdo popsal euklidovský algoritmus jako základ pro většinu teorie čísel.[41] Lejeune Dirichlet poznamenal, že mnoho výsledků teorie čísel, jako je jedinečná faktorizace, by platilo pro jakýkoli jiný systém čísel, na který by mohl být použit euklidovský algoritmus.[42] Lejeune Dirichlet přednášky o teorii čísel byly editovány a rozšířeny o Richard Dedekind, který ke studiu použil Euklidův algoritmus algebraická celá čísla, nový obecný typ čísla. Například Dedekind byl první, kdo to dokázal Fermatova věta o dvou čtvercích pomocí jedinečné faktorizace gaussovských celých čísel.[43] Dedekind také definoval koncept a Euklidovská doména, číselný systém, ve kterém lze definovat zobecněnou verzi euklidovského algoritmu (jak je popsáno níže ). V závěrečných desetiletích 19. století byl euklidovský algoritmus postupně zastíněn Dedekindovou obecnější teorií ideály.[44]
„[Euklidovský algoritmus] je dědeček všech algoritmů, protože je to nejstarší netriviální algoritmus, který přežil až do současnosti.“ |
Donald Knuth, The Art of Computer Programming, sv. 2: Seminumerické algoritmy, 2. vydání (1981), s. 318. |
Další aplikace Euklidova algoritmu byly vyvinuty v 19. století. V roce 1829 Charles Sturm ukázal, že algoritmus byl užitečný v Sturmův řetěz metoda počítání skutečných kořenů polynomů v libovolném daném intervalu.[45]
Euklidovský algoritmus byl první algoritmus celočíselného vztahu, což je metoda pro hledání celočíselných vztahů mezi odpovídajícími reálnými čísly. Několik románů celočíselné relační algoritmy byly vyvinuty, například algoritmus Helaman Ferguson a R.W. Forcade (1979)[46] a Algoritmus LLL.[47][48]
V roce 1969 vyvinuli Cole a Davie hru pro dva hráče založenou na euklidovském algoritmu Euklidova hra,[49] který má optimální strategii.[50] Hráči začínají dvěma hromadami A a b kameny. Hráči se střídají střídavě m násobky menší hromady od větší. Pokud se tedy skládají dvě hromádky X a y kameny, kde X je větší než y, další hráč může zmenšit větší hromádku z X kameny X − můj kameny, pokud je nezáporné celé číslo. Vítězem se stává první hráč, který sníží jednu hromádku na nulu.[51][52]
Matematické aplikace
Bézoutova identita
Bézoutova identita uvádí, že největší společný dělitel G dvou celých čísel A a b lze reprezentovat jako lineární součet původních dvou čísel A a b.[53] Jinými slovy, vždy je možné najít celá čísla s a t takhle G = sa + tb.[54][55]
Celá čísla s a t lze vypočítat z kvocientů q0, q1atd. obrácením pořadí rovnic v Euklidově algoritmu.[56] Počínaje předposlední rovnicí, G lze vyjádřit pomocí kvocientu qN−1 a dva předchozí zbytky, rN−2 a rN−3:
- G = rN−1 = rN−3 − qN−1 rN−2 .
Tyto dva zbytky lze rovněž vyjádřit jako jejich podíly a předchozí zbytky,
- rN−2 = rN−4 − qN−2 rN−3 a
- rN−3 = rN−5 − qN−3 rN−4 .
Nahrazení těchto vzorců pro rN−2 a rN−3 do první rovnice výnosy G jako lineární součet zbytků rN−4 a rN−5. Proces nahrazování zbytků vzorci zahrnujícími jejich předchůdce může pokračovat až do původních čísel A a b jsou dosaženy:
- r2 = r0 − q2 r1
- r1 = b − q1 r0
- r0 = A − q0 b.
Po všech ostatních r0, r1, atd. byly nahrazeny, vyjadřuje se konečná rovnice G jako lineární součet A a b: G = sa + tb. Bézoutova identita, a tedy předchozí algoritmus, lze oba zobecnit na kontext Euklidovské domény.
Bézoutova identita poskytuje ještě další definici největšího společného dělitele G dvou čísel A a b.[10] Zvažte množinu všech čísel ua + vb, kde u a proti jsou libovolná dvě celá čísla. Od té doby A a b jsou oba dělitelné G, každé číslo v sadě je dělitelné G. Jinými slovy, každé číslo množiny je celočíselným násobkem G. To platí pro každého společného dělitele A a b. Na rozdíl od jiných společných dělitelů je však největším společným dělitelem člen množiny; podle Bézoutovy identity, výběr u = s a proti = t dává G. Menší společný dělitel nemůže být členem množiny, protože každý člen množiny musí být dělitelný G. Naopak jakýkoli násobek m z G lze získat výběrem u = slečna a proti = mt, kde s a t jsou celá čísla Bézoutovy identity. To lze vidět vynásobením Bézoutovy identity číslem m,
- mg = msa + mtb.
Proto množina všech čísel ua + vb je ekvivalentní množině násobků m z G. Jinými slovy, množina všech možných součtů celočíselných násobků dvou čísel (A a b) je ekvivalentní množině násobků gcd (A, b). O GCD se říká, že je generátorem ideál z A a b. Tato definice GCD vedla k moderním abstraktní algebraický koncepty a hlavní ideál (ideál generovaný jediným prvkem) a hlavní ideální doména (A doména ve kterém je každý ideál hlavním ideálem).
Pomocí tohoto výsledku lze vyřešit určité problémy.[57] Zvažte například dvě odměrky objemu A a b. Sčítáním / odčítáním u násobky prvního šálku a proti násobky druhého šálku, libovolný objem ua + vb lze měřit. Všechny tyto objemy jsou násobky G = gcd (A, b).
Rozšířený euklidovský algoritmus
Celá čísla s a t Bézoutovy identity lze efektivně vypočítat pomocí rozšířený euklidovský algoritmus. Toto rozšíření přidává do Euklidova algoritmu dvě rekurzivní rovnice[58]
- sk = sk−2 − qksk−1
- tk = tk−2 − qktk−1
s počátečními hodnotami
- s−2 = 1, t−2 = 0
- s−1 = 0, t−1 = 1.
Pomocí této rekurze jsou Bézoutova celá čísla s a t jsou dány s = sN a t = tN, kde N + 1 je krok, kterým algoritmus končí rN + 1 = 0.
Platnost tohoto přístupu lze ukázat indukcí. Předpokládejme, že vzorec rekurze je správný až po krok k - 1 algoritmu; jinými slovy, předpokládejme to
- rj = sj A + tj b
pro všechny j méně než k. The kTřetím krokem algoritmu je rovnice
- rk = rk−2 − qkrk−1.
Vzhledem k tomu, že se předpokládá, že vzorec rekurze je správný pro rk−2 a rk−1, mohou být vyjádřeny jako odpovídající s a t proměnné
- rk = (sk−2 A + tk−2 b) − qk(sk−1 A + tk−1 b).
Přeskupením této rovnice se získá rekurzní vzorec pro krok k, podle potřeby
- rk = sk A + tk b = (sk−2 − qksk−1) A + (tk−2 − qktk−1) b.
Maticová metoda
Celá čísla s a t lze také najít pomocí ekvivalentu matice metoda.[59] Posloupnost rovnic Euklidova algoritmu
lze zapsat jako součin kvocientových matic 2 ku 2, které vynásobí dvourozměrný zbytek vektoru