Algoritmu d'Euclides

El algoritmu d'Euclides ye un métodu antiguo y eficiente pa calcular el máximu común divisor (MCD). Foi orixinalmente descritu por Euclides na so obra Elementos. El algoritmu d'Euclides estendíu ye un llixeru cambéu que dexa amás espresar al máximu común divisor como una combinación llinial. Esti algoritmu tien aplicaciones en diverses árees como álxebra, teoría de númberos y ciencies de la computación, ente otres. Con unos llixeros cambeos suel ser utilizáu n'ordenadores electrónicos por cuenta de la so gran eficiencia.

 Algoritmu orixinal de Euclides 
lang=ast|thumb|AB y CD los segmentos conmensurables.
Na concepción griega de la matemática, los númberos entendíense como magnitúes xeométriques. Una tema recurrente na xeometría griega ye'l de la conmensurabilidad de dos segmentos: dos segmentos (númberos) AB y CD son conmensurables cuando esiste un tercer segmentu PQ que cabo esautamente un númberu enteru de vegaes nos primeros dos; esto ye, PQ «mide» (mensura: midida) a los segmentos AB y CD.

Non cualquier par de segmentos ye conmensurable, como atoparon los pitagóricos cuando establecen que'l llau y la diagonal d'un cuadráu nun son conmensurables, pero nel casu de dos segmentos conmensurables deseyar topar la mayor midida común posible.

Euclides describe na proposición VI I.2 de los sos Elementos un métodu que dexa topar la mayor midida común posible de dos númberos (segmentos) que nun sían primos ente sigo, anque d'alcuerdu a la dómina tal métodu esplicar en términos xeométricos, lo que s'ilustra na siguiente trescripción.

En llinguaxe modernu, l'algoritmu descríbese como sigue:
 Daos dos segmentos AB y CD (con AB>CD), restamos CD de AB tantes vegaes como seya posible. Si nun hai residuu, entós CD ye la máxima midida común.
 Si llógrase un residuu EA, ésti ye menor que CD y podemos repitir el procesu: restamos EA tantes vegaes como seya posible de CD. Si a la fin nun queda una residuu, EA ye la midida común. En casu contrariu llogramos una nueva residuu FC menor a EA.
 El procesu repitir hasta qu'en dalgún momentu nun se llogra residuu. Entós la última residuu llograda ye la mayor midida común.

El fechu de que los segmentos son conmesurables ye clave p'asegurar que'l procesu termina tarde o aína

 Algoritmu d'Euclides tradicional 
Al estremar  ente  (númberos enteros), llógrase un cociente  y un residuu . Ye posible demostrar que'l máximu común divisor de  y  ye'l mesmu que'l de  y (Sía c el máximu común divisor de  y ,.Como  y  estrema a  y a  estrema tamién a . Si esistiera otru númberu mayor que  qu'estrema a  y a , tamién estremaría a  , polo que  nun sería'l mcd de  y , lo que contradiz la hipótesis). Ésti ye'l fundamentu principal del algoritmu. Tamién ye importante tener en cuenta que'l máximu común divisor de cualquier númberu  y  ye precisamente . Pa fines práuticos, la notación  significa máximu común divisor de  y .

Según lo antes mentáu, pa calcular el máximu común divisor de 2366 y 273 puede prosiguir de la siguiente manera:
PasuOperaciónSignificáu12366 estremáu ente 273 ye 8 y sobren 1822273 estremáu ente 182 ye 1 y sobren 913182 estremáu ente 91 ye 2 y arrayadura 0
La secuencia d'igualdaes  impliquen que . Puesto que , entós conclúyese que . Este mesmu procedimientu puede aplicase a cualesquier dos númberos naturales. Polo xeneral, si deseyar atopar el máximu común divisor de dos númberos naturales  y , síguense les siguientes regles:
 Si  entós  y l'algoritmu termina #
N'otru casu,  onde  ye'l restu d'estremar  ente . Pa calcular  utilícense estes mesmes regles

Asuma que llamamos  y . Aplicando estes regles llógrase la siguiente secuencia d'operaciones:
PasuOperaciónSignificáu1 estremáu ente  ye  y sobren 2 estremáu ente  ye  y sobren 3 estremáu ente  ye  y sobren  estremáu ente  ye  y sobren  estremáu ente  ye  y arrayadura 
Como la socesión de residuos va menguando, a la fin una residuu tien que ser cero y ye nesi momentu cuando l'algoritmu termina. El máximu común divisor ye precisamente  (la última residuu que nun ye cero).

 Xeneralización 
En realidá l'algoritmu d'Euclides funciona non yá pa los númberos naturales, sinón pa cualesquier elementos nos qu'esista una "división con residuu". A esti tipu de divisiones llámase-yos divisiones euclidianes y a los conxuntos onde puede definise dicha división llámase-yos dominios euclídeos. Por casu, el conxuntu de los númberos enteros y el de los polinomios con coeficientes racionales son dominios euclídeos porque podemos definir una división con residuu (vease División polinomial). D'esta manera, puede calculase el máximu común divisor de dos númberos enteros o de dos polinomios.

Por casu, pa calcular el máximu común divisor de los polinomios  y  l'algoritmu d'Euclides suxer la siguiente secuencia d'operaciones:
PasuOperaciónSignificáu1 estremáu ente  ye  y arrayadura 2 estremáu ente  ye  y arrayadura 3 estremáu ente  ye  y arrayadura 0
D'esta manera conclúyese que'l so máximu común divisor ye .

 Descripción formal 
Puede espresase esti algoritmu de manera más formal usando pseudocódigo. Nesti casu la espresión "" significa "la residuu d'estremar  ente " (vease Aritmética modular).

Vale la pena notar qu'esti algoritmu nun ye eficiente ser implementáu direutamente nun ordenador, yá que riquiría memorizar tolos valores de .

 Algoritmu d'Euclides estendíu 
L'algoritmu d'Euclides estendíu dexa, amás d'atopar un máximu común divisor de dos númberos enteros  y , espresalo como la mínima combinación llinial d'esos númberos, esto ye, atopar númberos enteros  y  tales que . Esto xeneralízase tamién escontra cualquier dominiu euclideano.

 Fundamentos 
Esisten delles maneres d'esplicar l'algoritmu d'Euclides estendíu, una de les más comunes consiste na siguiente:
 Usar l'algoritmu tradicional de Euclides. En cada pasu, en llugar de " estremáu ente  ye  y de restu " escríbese la ecuación  (vease algoritmu de la división).
 Esténase'l restu de cada ecuación.
 Sustitúyese'l restu de la última ecuación na penúltima, y la penúltima na antepenúltima y asina socesivamente hasta llegar a la primer ecuación, y en tou pasu espresa cada restu como combinación llinial.

Sicasí, n'ares de la comprensión y memorización d'esti algoritmu, ye conveniente conocer la siguiente carauterización.
Pa multiplicar dos matrices de tamañu  úsase la siguiente fórmula (vease Productu de matrices):

Supóngase que s'utiliza l'algoritmu d'Euclides tradicional pa calcular los valores  y  qu'ende se describen. Per cada valor  calculáu puede formase la matriz . Usando la ecuación  de manera repitida puede calculase el productu de les primeres  matrices d'esti tipu:

Resulta ser que los valores  y  tienen la propiedá de que , esto ye, espresen a  como una combinación llinial de  y . Particularmente, como  entós tiense , lo cual ye la solución del problema. Esta propiedá nun tendría de ser sorprendente, pos esta multiplicación de matrices equival al métodu antes descritu onde se substituye cada ecuación na anterior. Ye importante calcular  nesi mesmu orde. La matriz  apaez nel estremu derechu y la matriz  nel esquierdu.

Tornando al primer exemplu, la socesión de cocientes ye ,  y . Entós puede calculase

Utilizando'l primera renglón d'esta matriz puede lleese que , esto ye, atopóse la manera d'espresar al máximu común divisor de 2366 y 273 como una combinación llinial.

 Descripción formal 
Pa espresar l'algoritmu d'Euclides estendíu ye conveniente notar la manera en que se calculen los valores  y  cola multiplicación de matrices:

D'esta manera  y amás . Polo tanto l'algoritmu en pseudocódigo puede espresase como sigue:

 Aplicaciones 

 Simplificar fracciones 
Al momentu de faer cálculos con fracciones, ye de gran importancia saber cómo simplificales. Por casu, la fracción  ye equivalente con  (vease Númberu racional). De manera más xeneral,  siempres que . P'amenorgar una fracción cualesquier , namái se precisa estremar  y  ente'l so máximu común divisor.

Por casu, si deseyar amenorgar , primero úsase l'algoritmu d'Euclides p'atopar . Fáense les divisiones  y . Depués entós conclúyese que .

 Fracciones continues 
La socesión de divisiones que s'efectúen al siguir algoritmu d'Euclides puede ser utilizada pa espresar una fracción cualesquier  como fracción continua. Esto debe a que si  y , entós 

Por casu, p'atopar el máximu común divisor de  y  l'algoritmu xenera la siguiente secuencia de divisiones:
PasuOperaciónSignificáu193164 estremáu ente 5826 ye 15 y sobren 577425826 estremáu ente 5774 ye 1 y sobren 5235774 estremáu ente 52 ye 111 y sobren 2452 estremáu ente 2 ye 26 y arrayadura 0

Toes estes ecuaciones podemos facer asemeyaes a la ecuación :





Si sustitúi la segunda ecuación na primera, llógrase 

Si repite esti procesu de sustitución entós llógrase la espresión deseyada:

De manera más xeneral, la fracción continua atopada con esti algoritmu siempres ye de formar

 Inversos módulu m 

Dicimos que dos númberos enteros son congruentes módulu  (anque tamién puede xeneralizase pa cualesquier otru dominiu euclídeo) si al estremalos ente  llogramos la mesma residuu (vease Congruencia). Por casu, 7 ye congruente con 12 módulu 5 porque al estremar 7 ente 5 y 12 ente 5, en dambos casos llogramos la mesma residuu (que ye 2). Cuando  ye congruente con  módulu  escríbese , nel exemplu anterior tiense . Supóngase que se conocen los valores de ,  y , pero que se desconoz el valor  na siguiente congruencia:

Basta atopar un valor  que satisfaiga: , pos d'esta manera al multiplicar la ecuación  por  va tenese la solución deseyada:

Al elementu  llámase-y "inversu módulu " de . Desafortunadamente esti valor non siempres esiste. Por casu, con  y  nun esiste nengún númberu enteru  tal que . De fechu esti valor esiste si y namái si  (la esistencia de soluciones depende de la condición , ente que la unicidá depende de que'l ). Entá más, si al usar l'algoritmu d'Euclides estendíu (agora con ) llógrase , entós el valor  ye l'inversu módulu  de . 
Por casu, deseyar resolver la ecuación

Entós col algoritmu d'Euclides estendíu llógrase que . Como  entós 5 tien un inversu módulu . Entá más, como , entós esi inversu ye 2. Entós

Ye dicir que'l valor de  ye .

 Complexidá del algoritmu 

El teorema de Lamé afirma que'l casu peor pa esti algoritmu ye cuando se-y pide calcular el máximu común divisor de dos númberos consecutivos de la socesión de Fibonacci. Por casu, si deseyar calcular el máximu común divisor de  y  llógrase la siguiente secuencia d'operaciones:

PasuOperaciónSignificáu189 estremáu ente 55 ye 1 y sobren 34255 estremáu ente 34 ye 1 y sobren 21334 estremáu ente 21 ye 1 y sobren 13421 estremáu ente 13 ye 1 y sobren 8513 estremáu ente 8 ye 1 y sobren 568 estremáu ente 5 ye 1 y sobren 375 estremáu ente 3 ye 1 y sobren 283 estremáu ente 2 ye 1 y sobren 192 estremáu ente 1 ye 2 y arrayadura 0

Nesti exemplu reparar que con estos dos númberos de dos díxitos decimales, precísase faer 9 divisiones. Polo xeneral, el númberu de divisiones efectuaes pol algoritmu nunca supera 5 vegaes el númberu de díxitos que tienen estos númberos. En términos de complexidá computacional, esto significa que se riquir  divisiones pa calcular el máximu común divisor de  y  onde .

El númberu permediu de divisiones efectuaes pol algoritmu tuvo investigándose dende 1968, pero namái hasta apenes l'añu 2002, Brigitte Vallée demostró que si los dos númberos pueden representase con  bits, entós el númberu permediu de divisiones necesaries ye .

Sicasí, nun basta con saber el númberu de divisiones. Hai que recordar que l'algoritmu d'Euclides funciona tantu pa polinomios como pa númberos enteros, y polo xeneral, cualquier dominiu Euclídeo. En cada casu, la complexidá del algoritmu depende del númberu de divisiones efectuaes y del costu de cada división. Nel casu de los polinomios, el númberu de divisiones ye  onde  ye'l grau de los polinomios.

 Implementación en pseudocódigo 
Polo xeneral, los algoritmos  y  nun son bien apoderaos pa implementase direutamente nun llinguaxe de programación, especialmente porque peracaben muncha memoria. Si nun se precisen los valores entemedios, y namái se desea calcular el máximu común divisor de dos númberos enteros, convién usar estes variantes:

Alrodiu de la notación emplegada:
  significa "asigne a la variable  el valor actual de ". En llinguaxes como C, Java, C#, Python y Visual Basic esto significa a cencielles x = y. N'otros llinguaxes como Pascal traducir en a := b, en Maxima ye a : b, en R, S y Ocaml ye x <- y, y inclusive utilízase la flecha x ← y como'l casu d'APL.
  significa que primero s'evalúen los valores  y depués asígnase , etc. En llinguaxes como Python, Ruby o Maxima esta instrucción tien una estructura bien similar, como por casu en Python: (x,y,z) = (a,b,c). N'otros llinguaxes ye necesariu l'usu de variables auxiliares, como por casu en llinguaxe C: aux1 = b; aux2 = c; x = a; y = aux1; z = aux2;.
  significa "el cociente d'estremar  ente ". A esta operación conózse-y tamién como la división truncada porque ataya la parte fraccionaria del númberu. En munchos llinguaxes de programación esto impleméntase a cencielles como a/b. Otres maneres son a\b (Visual Basic) , a div b (Pascal) o bien a//b (Python 3).
  significa "la residuu d'estremar  ente ". A esta operación conózse-y a cencielles como módulu. En munchos llinguaxes de programación impleméntase como a % b, ente que n'otros ye a mod b (Visual Basic o Pascal) o bien a rem b (Ada).

 Ver tamién 
 Implementaciones en llinguaxes na parte de discutiniu

 Referencies 

 Bibliografía 
















 Enllaces esternos 

 Divisibilidad. L'algoritmu d'Euclides.
 Algoritmu d'Euclides.


Esplicación dinámica del máximu común divisor nesti videu de YouTube.

En gaussianos pueden vese esplicaciones y exemplos un pocu más avanzaos d'esti algoritmu.

Categoría:Teoría de númberos elemental