Algoritme de Euclides
En matemàtiques, el algoritme de Euclides, o algoritme euclidiano, és un método eficient per a calcular el màxim comú divisor (MCD) de dos número entero, el número més gran que els dividix a abdós sense deixar restant. Du el nom de l'antic matemàtic grec Euclides, qui ho va descriure per primera volta en Elements (ca. 300 a. C.). És un eixemple d'un algoritme, un procediment passe a pas per a realisar un càlcul d'acort en regles ben definides, i és un dels algoritmes més antics que se seguixen utilisant. Es pot usar per a reduir fracciones a la seua forma més simple i és part de molts atres càlculs teòric-numèrics i criptográficos.
L'algoritme euclidiano es basa en el principi de que el màxim comú divisor de dos números no canvia si el número més gran es reemplaça per la seua diferència en el número més menut. Per eixemple, 21 és el MCD de 252 i 105 (ya que 252 = 21 × 12 i 105 = 21 × 5), i el mateix número 21 també és el MCD de 105 i 252 − 105 = 147. Ya que esta tongada reduïx el més gran dels dos números, en repetir este procés s'obtenen parells de números successivament més menuts fins que els dos números es tornen iguals. Quan això ocorre, són el MCD dels dos números originals. Al invertir els passos o usar l'algoritme de Euclides estés, el MCD es pot expressar com una combinació llineal dels dos números originals, és dir, la suma dels dos números, cada u multiplicat per un número entero (per eixemple, 21 = 5 × 105 + (−2) × 252). El fet de que el MCD sempre es puga expressar d'esta manera es coneix com l'identitat de Bézout.
La versió de l'algoritme euclidiano descrita anteriorment (i per Euclides) pot requerir molts passos de resta per a trobar el MCD quan un dels números donats és molt més gran que l'atre. Una versió més eficient de l'algoritme acurta estos passos, en el seu lloc es reemplaça el més gran dels números pel seu restant en dividir-ho pel més chicotet dels dos (en esta versió, l'algoritme es deté en alcançar un restant zero). En esta millora, l'algoritme mai requerix més passos que cinc voltes el número de dígits (base 10) de l'número entero més menut. Açò va ser demostrat per Gabriel Lamé en 1844 (teorema de Lamé),[1][2] i marca el començ de la teoria de la complexitat informàtica. Es varen desenrollar métodos adicionals per a millorar l'eficiència de l'algoritme en el XX.
L'algoritme euclidiano té moltes aplicacions teòriques i pràctiques. S'utilisa per a reduir fracciones a la seua forma més simple i per a realisar divisions en aritmètica modular. Els càlculs que utilisen este algoritme formen part dels protocols criptográficos que s'usen per a protegir les comunicacions d'Internet, i en els métodos per a trencar estos sistemes criptográficos per mig de la factorización de grans número compuesto. L'algoritme euclidiano es pot usar per a resoldre equacions diofánticas, com trobar números que satisfacen múltiples congruència d'acort en el teorema chinenca del restant, per a construir fraccions contínues i per a trobar aproximacions racionals precises a número real. Finalment, es pot utilisar com una ferramenta bàsica per a demostrar teoremes en la teoria de números, com el teorema dels quatre quadrats de Lagrange i l'unicitat de les factorización primeres.
Algoritme original de Euclides
[editar | editar còdic]En la concepció grega de la matemàtica, els números s'entenien com a magnituts geomètriques. Un tema recurrent en la geometria grega és el de la conmensurabilidad de dos segments: dos segments (números) AB i CD són conmensurables quan existix un tercer segment PQ que cap exactament un número entero de voltes en els primers dos; és dir, PQ «medix» (mensura: mida) als segments AB i CD.
No qualsevol parell de segments és conmensurable, com varen trobar els pitagórico quan establixen que el costat i la diagonal d'un quadrat no són conmensurables, pero en el cas de dos segments conmensurables es desija trobar la major mida comuna possible.
Euclides descriu en la proposició I.2 en el seu Llibre VII dels seus Elements un método que permet trobar la major mida comuna possible de dos números (segments) que no siguen primers entre sí, encara que d'acort a l'época tal método s'explica en térmens geomètrics, lo que s'ilustra en la següent transcripció.
En llenguage modern, l'algoritme es descriu com seguix:
- Donats dos segments AB i CD (en AB>CD), restem CD de AB tantes voltes com siga possible. Si no hi ha residu, llavors CD és la màxima mida comuna.
- Si s'obté un residu EA, est és menor que CD i podem repetir el procés: restem EA tantes voltes com siga possible de CD. Si al final no queda un residu, EA és la mida comuna. En cas contrari obtenim un nou residu FC menor a EA.
- El procés es repetix fins que en algun moment no s'obté residu. Llavors l'últim residu obtingut és la major mida comuna.
El fet de que els segments són conmesurables és clau per a assegurar que el procés termina tart o primerenc.
Algoritme de Euclides tradicional
[editar | editar còdic]Al dividir entre (número entero), s'obté un cocient i un restant . És possible demostrar que el màxim comú divisor de i és el mateix que el de i . Siga c el màxim comú divisor de i , com i dividix a i a , dividix també a . Si existira un atre número major que que dividix a i a , també dividiria a , per lo que no seria el mcd de i , lo que contradiu l'hipòtesis). Est és el fonament principal de l'algoritme. També és important tindre en conte que el màxim comú divisor de qualsevol número i és precisament . Per a fins pràctics, la notació significa màxim comú divisor de i .
Segons lo abans mencionat, per a calcular el màxim comú divisor de 2366 i 273 es pot proseguir de la següent manera:
| Pas | Operació | Significat |
|---|---|---|
| 1 | 2366 dividit entre 273 és 8 i sobren 182 | |
| 2 | 273 dividit entre 182 és 1 i sobren 91 | |
| 3 | 182 dividit entre 91 és 2 i sobra 0 |
La seqüència d'igualtats impliquen que . Ya que , llavors es conclou que . Este mateix procediment es pot aplicar a qualssevol dos número natural. En general, si es desija trobar el màxim comú divisor de dos número natural i , se seguixen les següents regles:
- Si llavors i l'algoritme termina
- En un atre cas, a on és el restant de dividir entre . Per a calcular s'utilisen estes mateixes regles
Assumixca que cridem i . Aplicant estes regles s'obté la següent seqüència d'operacions:
| Pas | Operació | Significat |
|---|---|---|
| 1 | dividit entre és i sobren | |
| 2 | dividit entre és i sobren | |
| 3 | dividit entre és i sobren | |
| dividit entre és i sobren | ||
| dividit entre és i sobra |
Com la successió de residus va disminuint, al final un residu té que ser zero i és en eixe moment quan l'algoritme termina. El màxim comú divisor és precisament (l'últim residu que no és zero).
Generalisació
[editar | editar còdic]En realitat, l'algoritme de Euclides funciona no només per als número natural, sino per a qualsevol element en el que existixca una "divisió en residu". A este tipo de divisions se'ls crida divisions euclidianas i als conjunts a on es pot definir dita divisió se'ls crida dominis euclídeos. Per eixemple, el conjunt dels número entero i el dels polinomis en coeficients racionals són dominis euclídeos perque podem definir una divisió en residu (vore Divisió polinomial). D'esta manera, es pot calcular el màxim comú divisor de dos número entero o de dos polinomis.
Per eixemple, per a calcular el màxim comú divisor dels polinomis i l'algoritme de Euclides sugerix la següent seqüència d'operacions:
| Pas | Operació | Significat |
|---|---|---|
| 1 | dividit entre és i sobra | |
| 2 | dividit entre és i sobra | |
| 3 | dividit entre és i sobra 0 |
D'esta manera es conclou que el seu màxim comú divisor és .
Descripció formal
[editar | editar còdic]Es pot expressar este algoritme de manera més formal usant pseudocódigo. En este cas l'expressió "" significa "el residu de dividir entre " (vore Aritmètica modular).
Val la pena notar que este algoritme no és eficient ser implementat directament en una computadora, ya que requeriria memorisar tots els valors de .
Algoritme de Euclides estés
[editar | editar còdic]L'algoritme de Euclides estés permet, ademés de trobar un màxim comú divisor de dos número entero i , expressar-ho com la mínima combinació llineal d'eixos números, és dir, trobar número entero i tals que . Açò es generalisa també cap a qualsevol domini euclidiano.
Fonaments
[editar | editar còdic]Existixen vàries maneres d'explicar l'algoritme de Euclides estés, una de les més comunes consistix en la següent:
- Usar l'algoritme tradicional de Euclides. En cada pas, en lloc de " dividit entre és i de restant " s'escriu l'equació (vore algoritme de la divisió).
- Es rebuja el restant de cada equació.
- Se substituïx el restant de l'última equació en la penúltima, i la penúltima en la antepenúltima i aixina successivament fins a aplegar a la primera equació, i en tot pas s'expressa cada restant com a combinació llineal.
No obstant, en benefici de la comprensió i memorisació d'este algoritme, és convenient conéixer la següent caracterisació. Per a multiplicar dos matrius de tamany s'usa la següent fòrmula (vore Producte de matrius):
(1)
Suponga's que s'utilisa l'algoritme de Euclides tradicional per a calcular els valors i que ahí es descriuen. Per cada valor calculat es pot formar la matriu . Usant l'equació () de manera repetida es pot calcular el producte de les primeres matrius d'este tipo:
Resulta ser que els valors i tenen la propietat de que , és dir, expressen a com una combinació llineal de i . Particularment, com llavors es té , la qual cosa és la solució del problema. Esta propietat no deuria ser sorprenent, puix esta multiplicació de matrius equival al método abans descrit a on es substituye cada equació en l'anterior. És important calcular en eixe mateix orde. La matriu apareix en l'extrem dret i la matriu en l'esquerre.
Retornant al primer eixemple, la successió de cocients és , i . Llavors es pot calcular
Utilisant el primer rengló d'esta matriu es pot llegir que , és dir, s'ha trobat la manera d'expressar al màxim comú divisor de 2366 i 273 com una combinació llineal.
Descripció formal
[editar | editar còdic]Per a expressar l'algoritme de Euclides estés és convenient notar la manera en que es calculen els valors i en la multiplicació de matrius:
D'esta manera i ademés . Per lo tant l'algoritme en pseudocódigo es pot expressar com seguix:
Aplicacions
[editar | editar còdic]Simplificar fraccions
[editar | editar còdic]Al moment de fer càlculs en fraccions, és de gran importància saber cóm simplificar-les. Per eixemple, la fracció és equivalent en (vore Número racional). De manera més general, sempre que . Per a reduir una fracció qualsevol , només es necessita dividir i entre el seu màxim comú divisor.
Per eixemple, si es desija reduir , primer s'usa l'algoritme de Euclides per a trobar . Es fan les divisions i . Després llavors es conclou que .
Fraccions contínues
[editar | editar còdic]La successió de divisions que s'efectuen en seguir l'algoritme de Euclides pot ser utilisada per a expressar una fracció qualsevol com fracció contínua. Açò es deu a que si i , llavors
(3)
Per eixemple, per a trobar el màxim comú divisor de i l'algoritme genera la següent seqüència de divisions:
| Pas | Operació | Significat |
|---|---|---|
| 1 | 93164 dividit entre 5826 és 15 i sobren 5774 | |
| 2 | 5826 dividit entre 5774 és 1 i sobren 52 | |
| 3 | 5774 dividit entre 52 és 111 i sobren 2 | |
| 4 | 52 dividit entre 2 és 26 i sobra 0 |
Totes estes equacions les podem fer paregudes a l'equació ():
Si se substituïx la segona equació en la primera, s'obté
Si es repetix este procés de substitució llavors s'obté l'expressió desijada:
De manera més general, la fracció contínua trobada en este algoritme sempre és de la forma
Inversos mòdul m
[editar | editar còdic]- Artícul principal → invers multiplicativo (aritmètica modular).
Es diu que dos número entero són congruents mòdul (encara que també es pot generalisar per a qualsevol atre domini euclídeo) si en dividir-los entre obtenim el mateix residu (vore Congruència). Per eixemple, 7 és congruent en 12 mòdul 5 perque en dividir 7 entre 5 i 12 entre 5, en abdós casos obtenim el mateix residu (que és 2). Quan és congruent en mòdul s'escriu , en l'eixemple anterior es té . Suponga's que es coneixen els valors de , i , pero que es desconeix el valor en la següent congruència: Plantilla:Ecuacion Basta trobar un valor que satisfaça: , puix d'esta manera en multiplicar l'equació () per es tindrà la solució desijada: Plantilla:Ecuacion A l'element se li crida "invers mòdul " de . Desafortunadament este valor no sempre existix. Per eixemple, en i no existix cap número entero tal que . De fet este valor existix si i només si (l'existència de solucions depén de la condició , mentres que l'unicitat depén de que el ). Més encara, si en usar l'algoritme de Euclides estés (ara en ) s'obté , llavors el valor és l'invers mòdul de .
Per eixemple, es desija resoldre l'equació Plantilla:Ecuacion Llavors en l'algoritme de Euclides estés s'obté que . Com llavors 5 té un invers mòdul . Més encara, com , llavors eixe invers és 2. Llavors Plantilla:Ecuacion És dir que el valor de és .
Complexitat de l'algoritme
[editar | editar còdic]La teorema de Lamé afirma que el cas pijor per a este algoritme és quan se li demana calcular el màxim comú divisor de dos números consecutius de la successió de Fibonacci. Per eixemple, si es desija calcular el màxim comú divisor de i s'obté la següent seqüència d'operacions:
| Pas | Operació | Significat |
|---|---|---|
| 1 | 89 dividit entre 55 és 1 i sobren 34 | |
| 2 | 55 dividit entre 34 és 1 i sobren 21 | |
| 3 | 34 dividit entre 21 és 1 i sobren 13 | |
| 4 | 21 dividit entre 13 és 1 i sobren 8 | |
| 5 | 13 dividit entre 8 és 1 i sobren 5 | |
| 6 | 8 dividit entre 5 és 1 i sobren 3 | |
| 7 | 5 dividit entre 3 és 1 i sobren 2 | |
| 8 | 3 dividit entre 2 és 1 i sobren 1 | |
| 9 | 2 dividit entre 1 és 2 i sobra 0 |
En este eixemple s'observa que en estos dos números de dos dígits decimals, es necessita fer 9 divisions. En general, el número de divisions efectuades per l'algoritme mai supera 5 voltes el número de dígits que tenen estos números. En térmens de complexitat computacional, açò significa que es requerixen divisions per a calcular el màxim comú divisor de i a on .
El número promig de divisions efectuades per l'algoritme es va estar investigant des de 1968, pero solament fins a a penes l'any 2002, Brigitte Vallée va demostrar que si els dos números es poden representar en bits, llavors el número promig de divisions necessàries és .
No obstant, no n'hi ha prou en saber el número de divisions. Cal recordar que l'algoritme de Euclides funciona tant per a polinomis com per a número entero, i en general, qualsevol domini Euclídeo. En cada cas, la complexitat de l'algoritme depén del número de divisions efectuades i del cost de cada divisió. En el cas dels polinomis, el número de divisions és a on és el grau dels polinomis.
Implementació en pseudocódigo
[editar | editar còdic]En general, els algoritmes Plantilla:Algref i Plantilla:Algref no són molt apropiats per a implementar-se directament en un llenguage de programació, especialment perque consumixen molta memòria. Si no es necessiten els valors intermijos, i només es desija calcular el màxim comú divisor de dos número entero, convé usar estes variants:
Sobre la notació amprada:
- significa "assigne a la variable el valor actual de ". En llenguages com C, Java, C#, Python i Visual Basic açò significa simplement
x = i. En atres llenguages com Pascal es traduïx ena := b, en Maxima ésa : b, en R, S i Ocaml ésx <- i, i inclusivament s'utilisa la flechax ← icom el cas d'APL. - significa que primer s'evaluen els valors i després s'assigna , etc. En llenguages com Python, Ruby o Maxima esta instrucció té una estructura molt similar, com per eixemple en Python:
(x,i,z) = (a,b,c). En atres llenguages és necessari l'us de variables auxiliars, com per eixemple en llenguage C:aux1 = b; aux2 = c; x = a; i = aux1; z = aux2;.
- significa "el cocient de dividir entre ". A esta operació se li coneix també com la divisió truncada perque trunca la part fraccionaria del número. En molts llenguages de programació açò s'implementa simplement com
a/b. Atres maneres sóna�(Visual Basic) ,a div b(Pascal) o bea//b(Python 3). - significa "el residu de dividir entre ". A esta operació se li coneix simplement com a mòdul. En molts llenguages de programació s'implementa com
a % b, mentres que en uns atres ésa mod b(Visual Basic o Pascal) o bea rem b(Ada).
Vore també
[editar | editar còdic]Referències
[editar | editar còdic]- ↑ Lamé, Gabriel (1844). “Note sur la llimite du nom dones divisions dans la recherche du plus grand commun diviseur entre deux noms entiers” (fr). Actes de les sessions de l'Acadèmia de Ciències 19: 867-870.
- ↑ Universitat de l'Estany.Consultat el 2023-07-04.
Bibliografia
[editar | editar còdic]Enllaços externs
[editar | editar còdic]Explicació dinàmica del màxim comú divisor en este vídeo de YouTube[1]. En gaussianos[2] es poden vore explicacions i eixemples una miqueta més alvançats d'este algoritme.
Referències
[editar | editar còdic]
- Este artícul conté una traducció derivada de «Algoritmo de Euclides» de Wikipedia en castellà publicada baix la Llicència de documentació lliure de GNU i la Llicència Creative Commons Reconeiximent-CompartirIgual 4.0 Internacional.