Algoritmu d'Euclides

De testwiki
Saltar a navegación Saltar a la gueta

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

AB y CD los segmentos conmensurables.
Exemplu del algoritmu orixinal de Euclides.

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.

Plantía:Cita

En llinguaxe modernu, l'algoritmu descríbese como sigue:

  1. 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.
  2. 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.
  3. 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 a ente b (númberos enteros), llógrase un cociente q y un residuu r. Ye posible demostrar que'l máximu común divisor de a y b ye'l mesmu que'l de b y r(Sía c el máximu común divisor de a y b,.Como a=bq+r y c estrema a a y a b estrema tamién a r. Si esistiera otru númberu mayor que c qu'estrema a b y a r, tamién estremaría a a , polo que c nun sería'l mcd de a y b, 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 a y 0 ye precisamente a. Pa fines práuticos, la notación mcd(a,b) significa máximu común divisor de a y b.

Según lo antes mentáu, pa calcular el máximu común divisor de 2366 y 273 puede prosiguir de la siguiente manera:

Pasu Operación Significáu
1 2366 estremáu ente 273 ye 8 y sobren 182 mcd(2366,273)=mcd(273,182)
2 273 estremáu ente 182 ye 1 y sobren 91 mcd(273,182)=mcd(182,91)
3 182 estremáu ente 91 ye 2 y arrayadura 0 mcd(182,91)=mcd(91,0)

La secuencia d'igualdaes mcd(2366,273)=mcd(273,182)=mcd(182,91)=mcd(91,0) impliquen que mcd(2366,273)=mcd(91,0). Puesto que mcd(91,0)=91, entós conclúyese que mcd(2366,273)=91. 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 a y b, síguense les siguientes regles:

  1. Si b=0 entós mcd(a,b)=a y l'algoritmu termina #

N'otru casu, mcd(a,b)=mcd(b,r) onde r ye'l restu d'estremar a ente b. Pa calcular mcd(b,r) utilícense estes mesmes regles

Asuma que llamamos a=r0 y b=r1. Aplicando estes regles llógrase la siguiente secuencia d'operaciones:

Pasu Operación Significáu
1 r0 estremáu ente r1 ye q1 y sobren r2 mcd(r0,r1)=mcd(r1,r2)
2 r1 estremáu ente r2 ye q2 y sobren r3 mcd(r1,r2)=mcd(r2,r3)
3 r2 estremáu ente r3 ye q3 y sobren r4 mcd(r2,r3)=mcd(r3,r4)
n rn1 estremáu ente rn ye qn y sobren rn+1 mcd(rn1,rn)=mcd(rn,rn+1)
n+1 rn estremáu ente rn+1 ye qn+1 y arrayadura 0 mcd(rn,rn+1)=mcd(rn+1,0)

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 rn+1 (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 P(x)=x5+2x3+x y Q(x)=x41 l'algoritmu d'Euclides suxer la siguiente secuencia d'operaciones:

Pasu Operación Significáu
1 x5+2x3+x estremáu ente x41 ye x y arrayadura 2x3+2x mcd(x5+2x3+x,x41)=mcd(x41,2x3+2x)
2 x41 estremáu ente 2x3+2x ye 12x y arrayadura x21 mcd(x41,2x3+2x)=mcd(2x3+2x,x21)
3 2x3+2x estremáu ente x21 ye 2x y arrayadura 0 mcd(2x3+2x,x21)=mcd(x21,0)

D'esta manera conclúyese que'l so máximu común divisor ye x21.

Descripción formal

Puede espresase esti algoritmu de manera más formal usando pseudocódigo. Nesti casu la espresión "xmody" significa "la residuu d'estremar x ente y" (vease Aritmética modular). Plantía:Algoritmu Vale la pena notar qu'esti algoritmu nun ye eficiente ser implementáu direutamente nun ordenador, yá que riquiría memorizar tolos valores de ri.

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 a y b, espresalo como la mínima combinación llinial d'esos númberos, esto ye, atopar númberos enteros s y t tales que mcd(a,b)=as+bt. 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:

  1. Usar l'algoritmu tradicional de Euclides. En cada pasu, en llugar de "a estremáu ente b ye q y de restu r" escríbese la ecuación a=bq+r (vease algoritmu de la división).
  2. Esténase'l restu de cada ecuación.
  3. 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 2×2 úsase la siguiente fórmula (vease Productu de matrices): Plantía:Ecuación Supóngase que s'utiliza l'algoritmu d'Euclides tradicional pa calcular los valores qi y ri qu'ende se describen. Per cada valor qi calculáu puede formase la matriz Qi=[011qi]. Usando la ecuación Plantía:Eqnref de manera repitida puede calculase el productu de les primeres i matrices d'esti tipu: Plantía:Ecuación

Resulta ser que los valores si y ti tienen la propiedá de que ri=asi+bti, esto ye, espresen a ri como una combinación llinial de a y b. Particularmente, como mcd(a,b)=rn+1 entós tiense mcd(a,b)=asn+1+btn+1, 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 Qi××Q3×Q2×Q1 nesi mesmu orde. La matriz Q1 apaez nel estremu derechu y la matriz Qi nel esquierdu.

Tornando al primer exemplu, la socesión de cocientes ye q1=8, q2=1 y q3=2. Entós puede calculase Plantía:Ecuación Utilizando'l primera renglón d'esta matriz puede lleese que 91=2366(1)+273(9), 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 si y ti cola multiplicación de matrices: Plantía:Ecuación D'esta manera si+1=si1qisi y amás ti+1=ti1qiti. Polo tanto l'algoritmu en pseudocódigo puede espresase como sigue: Plantía:Algoritmu

Aplicaciones

Simplificar fracciones

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

Por casu, si deseyar amenorgar 166249, primero úsase l'algoritmu d'Euclides p'atopar mcd(166,249)=83. Fáense les divisiones 166÷83=2 y 249÷83=3. Depués entós conclúyese que 166249=23.

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 ab como fracción continua. Esto debe a que si a=bq+r y r0, entós Plantía:Ecuación

Por casu, p'atopar el máximu común divisor de 93164 y 5826 l'algoritmu xenera la siguiente secuencia de divisiones:

Pasu Operación Significáu
1 93164 estremáu ente 5826 ye 15 y sobren 5774 93164=5826×15+5774
2 5826 estremáu ente 5774 ye 1 y sobren 52 5826=5774×1+52
3 5774 estremáu ente 52 ye 111 y sobren 2 5774=52×111+2
4 52 estremáu ente 2 ye 26 y arrayadura 0 52=2×26+0

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

  1. 931645826=15+158265774
  2. 58265774=1+1577452
  3. 577452=111+1522
  4. 522=26

Si sustitúi la segunda ecuación na primera, llógrase Plantía:Ecuación

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

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


Inversos módulu m

Plantía:AP Dicimos que dos númberos enteros son congruentes módulu m (anque tamién puede xeneralizase pa cualesquier otru dominiu euclídeo) si al estremalos ente m 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 a ye congruente con b módulu m escríbese ab(modm), nel exemplu anterior tiense 712(mod5). Supóngase que se conocen los valores de a, b y m, pero que se desconoz el valor x na siguiente congruencia: Plantía:Ecuacion Basta atopar un valor a1 que satisfaiga: a1a1(modm), pos d'esta manera al multiplicar la ecuación Plantía:Eqnref por a1 va tenese la solución deseyada: Plantía:Ecuacion Al elementu a1 llámase-y "inversu módulu m" de a. Desafortunadamente esti valor non siempres esiste. Por casu, con a=4 y m=6 nun esiste nengún númberu enteru a1 tal que a141(mod6). De fechu esti valor esiste si y namái si mcd(a,m)=1 (la esistencia de soluciones depende de la condición mcd(a,m)|b, ente que la unicidá depende de que'l mcd(a,m)=1). Entá más, si al usar l'algoritmu d'Euclides estendíu (agora con b=m) llógrase 1=as+mt, entós el valor s ye l'inversu módulu m de a. Por casu, deseyar resolver la ecuación Plantía:Ecuacion Entós col algoritmu d'Euclides estendíu llógrase que mcd(5,9)=1=5(2)+9(1). Como mcd(5,9)=1 entós 5 tien un inversu módulu 9. Entá más, como 1=5(2)+9(1), entós esi inversu ye 2. Entós Plantía:Ecuacion Ye dicir que'l valor de x ye 4.

Complexidá del algoritmu

Gráfica del númberu de divisiones efectuaes nel algoritmu d'Euclides. El colloráu indica poques operaciones, ente que los colores eventualmente más azules representen mayor númberu d'operaciones.

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 f10=55 y f11=89 llógrase la siguiente secuencia d'operaciones:

Pasu Operación Significáu
1 89 estremáu ente 55 ye 1 y sobren 34 mcd(89,55)=mcd(55,34)
2 55 estremáu ente 34 ye 1 y sobren 21 mcd(55,34)=mcd(34,21)
3 34 estremáu ente 21 ye 1 y sobren 13 mcd(34,21)=mcd(21,13)
4 21 estremáu ente 13 ye 1 y sobren 8 mcd(21,13)=mcd(13,8)
5 13 estremáu ente 8 ye 1 y sobren 5 mcd(13,8)=mcd(8,5)
6 8 estremáu ente 5 ye 1 y sobren 3 mcd(8,5)=mcd(5,3)
7 5 estremáu ente 3 ye 1 y sobren 2 mcd(5,3)=mcd(3,2)
8 3 estremáu ente 2 ye 1 y sobren 1 mcd(3,2)=mcd(2,1)
9 2 estremáu ente 1 ye 2 y arrayadura 0 mcd(2,1)=mcd(1,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 O(logn) divisiones pa calcular el máximu común divisor de n y m onde n>m.

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 n bits, entós el númberu permediu de divisiones necesaries ye π26n.

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 O(logn) onde n ye'l grau de los polinomios.

Implementación en pseudocódigo

Polo xeneral, los algoritmos Plantía:Algref y Plantía:Algref 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, convien usar estes variantes:

Plantía:Algoritmu Plantía:Algoritmu Plantía:Algoritmu Plantía:Algoritmu Plantía:Algoritmu Alrodiu de la notación emplegada:

  • xy significa "asigne a la variable x el valor actual de y". 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.
  • (x,y,z)(a,b,c) significa que primero s'evalúen los valores a,b,c y depués asígnase xa,yb,zc, 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;.
  • a÷b significa "el cociente d'estremar a ente b". 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).
  • amodb significa "la residuu d'estremar a ente b". 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

Referencies

Plantía:Llistaref

Bibliografía

Enllaces esternos

Plantía:Wikillibros

  • Esplicación dinámica del máximu común divisor nesti videu de YouTube[1].
  • En gaussianosPlantía:Enllaz rotu pueden vese esplicaciones y exemplos un pocu más avanzaos d'esti algoritmu.

Plantía:Tradubot

Plantía:Control d'autoridaes