Euklidesen algoritmo

Euklidesen algoritmoa, matematikan, bi zenbakiren zatitzaile komunetako handiena () kalkulatzeko erabiltzen den metodo bat da. Euklidesek deskribatu zuen lehenengo aldiz bere Elementuak obran (K.a. 300). Euklidesen algoritmo hedatuarekin, gainera, zatitzaile komunetako handiena emandako bi zenbakien konbinazio lineal moduan adierazteko koefizienteak kalkula daitezke. Algoritmoa hainbat arlotan aplikatzen da; aljebran, zenbaki-teorian eta informatikan, esaterako.

Euklidesen jatorrizko algoritmoa 

Grekoek matematikari buruz zuten ikuspuntuaren arabera, zenbakiak magnitude geometrikoak dira. Geometria grekoak bi segmenturen neurgarritasuna aztertzen zuen: bi segmentu (zenbaki) AB eta CD neurgarriak dira hirugarren PQ segmentu bat existitzen bada zein aurreko bien barruan egokitzen den n zenbaki osoa adina aldiz, hau da, PQ-k AB eta CD segmentuak neurtzen baditu.

Edozein segmentu bikote ez da neurgarria; pitagorikoek aurkitu zuten moduan, karratuaren diagonala eta aldea ez dira neurgarriak. Bi segmentu neurgarriak direnean, haien arteko neurri komun handiena topatu nahi izaten da.

Euklidesek bere Elementuak lanaren VII liburuko 2. proposizioan bi segmenturen (zenbakiren) neurri komun handiena topatzeko metodo bat deskribatzen du, zenbakiak haien artean lehenak ez diren kasurako.

Metodoa termino geometrikoetan azaldu zen garai hartan. Gaur egungo hizkuntza modernoan algoritmoa horrela deskribatzen da:

 Izan bitez AB eta CD bi segmentu, non AB>CD betetzen den. AB-ri CD kentzen diogu behin eta berriz posiblea den bitartean. Amaieran hondarrik geratzen ez bada, orduan CD da neurri komun handiena.
 EA hondarra geratzen bada, CD baino txikiagoa izango da eta prozesua errepika daiteke; CD-ri EA kenduko zaio behin eta berriz posiblea den bitartean. Azkenean hondarrik gelditzen ez bada, EA izango da neurri komuna. Bestela, EA baino txikiagoa den FC hondar berria lortuko da.
 Prozesua errepikatu behar da hondarrik geratuko ez den arte. Lortutako azken hondarra da neurri komun handiena.

Euklidesen algoritmoa 
Zatiketa Euklidearraren definizioaren arabera, bi zenbaki oso  eta  izanik, , beste bi zenbaki oso  eta  existitzen dira eta bakarrak dira non
 
betetzen den,  izanik eta -ren balio absolutua  den. Hau da,  zenbaki osoa  zenbaki osoaz zatitzean  zatidura eta  hondarra lortzen dira.

Euklidesen algoritmoa zatiketa euklidearrean oinarritzen da eta bi zenbaki osoren zatitzaile komunetako handiena kalkulatzeko balio du.  eta  bi zenbakiren zatitzaile komunetako handiena adierazteko erabiltzen den notazioa  da.

Euklidesen algoritmoaren oinarrizko printzipioa  da. Bertatik ondorioztatzen da  dela. Hortaz, Euklidesen algoritmoa erabiliz  eta  bi zenbakiren  zatitzaile komunetako handiena horrela kalkulatzen da:
  bada  da.
 Bestela,  da,  izanik  eta -ren arteko zatiketa euklidearraren hondarra.
Demagun  eta  notazioaz adierazten direla.  kalkulatzeko prozedura orokorra honakoa da:

Hondarra txikituz doanez, azkenean 0 hondarra lortuko da eta prozedura amaituko da.  eta  zenbakien zatitzaile komunetako handiena  ez den azken hondarra da: .

Adibidea.

 eta  izanik,  horrela kalkulatzen da:

 sekuentziaren bidez, honakoa ondorioztatzen da:  eta  denez,  da.

Orokortasuna 

Euklidesen algoritmoak ez du zenbaki arruntetarako soilik balio; hondarra uzten duen zatiketa bat dagoen beste kasuetara ere orokor daiteke. Koefiziente arrazionalak dituzten polinomioen arteko zatiketa euklidearra ere definitu daitekeenez, haien arteko zatitzaile komunetako handiena kalkula daiteke.

Adibidea.

Euklidesen algoritmoaren bidez  eta  polinomioen arteko zatitzaile komunetako handiena horrela kalkulatzen da:

Hortaz,  eta  polinomioen zatitzaile komunetako handiena  dela ondorioztatzen da.

Deskribapen formala 
Algoritmoa modu formalagoan adierazteko sasikodea erabil daiteke. Kasu honetan, "" adierazpenaren esanahia " zati  eragiketarekin lortutako hondarra" da (ikus Aritmetika modular).

Algoritmo hau ez da eraginkorra konputagailuan inplementatua izateko,  balio guztiak gordetzea eskatzen duelako.

Euklidesen algoritmo hedatua 
Bi zenbaki osoren zatitzaile komunetako handiena haien konbinazio lineal moduan idatz daiteke. Formalki,  eta  bi zenbaki oso izanik,  betetzen duten  eta  koefiziente osoak existitzen dira,  edo  izanik. Gainera,  da  eta  zenbakien konbinazio lineal moduan idatz daitekeen zenbaki oso positiborik txikiena.  eta  koefizienteak ez dira bakarrak.

Euklidesen algoritmo hedatuari esker,  kalkulatzeaz gain  eta  koefiziente osoak kalkula daitezke.

Oinarrizko printzipioak 
Euklidesen algoritmo hedatua azaltzeko, hainbat modu daude. Erabilienetako bat honako hau da:
 Euklidesen algoritmoa erabiltzea. Urrats bakoitzean,  zenbakia  zenbakiaz zatitzean,  zatidura eta  hondarra lortzen dira.  ekuazioaren bidez adierazten da.
 Ekuazio bakoitzean  hondarra askatzen da ().
 Azken ekuazioaren hondarra azken-aurrekoan ordezkatzen da, eta azken-aurrekoa azken-aurrekoaren aurrekoan eta horrela lehenengo ekuaziora iritsi arte. Urrats bakoitzean  hondarra zenbakien konbinazional lineal moduan adierazita agertuko da.

Aplikazioak

Zatikien sinplikazioa 

Zatikiekin eragitean, sinplifikazioak egitea oso garrantzitsua gertatzen da. Esaterako,  eta  zatikiak baliokideak dira (ikus Zenbaki arrazional). Izan ere,  bada,  zatikiak baliokideak dira. Oro har,  zatikia sinplifikatzeko,  eta  zenbakiak haien zatitzaile komunetako handienaz zatitu behar dira.

Adibidea.

 zatikia sinplifikatzeko,  denez,  eta  zatiketak egiten dira, eta = baliokideak direla ondorioztatzen da.

Zatiki jarraituak 
Euklidesen algoritmoa aplikatzean egiten den zatiketa euklidear sorta  zatikia zatiki jarraitu moduan adierazteko erabil daiteke. Izan ere,  eta  badira, zera betetzen da:

Adibidea.

 zatikia izanik,  Euklidesen algoritmoa erabiliz kalkulatzean, honako zatiketa euklidear sorta egiten da:

Ekuazio horiek guztiak era honetan ere idatz daitezke:
 
 
 
 
Bigarren ekuazioa lehenengoan ordezkatuz gero, honakoa lortzen da:

Gainerakoak ere ordenatuz, honako adierazpena lortzen da:

Oro har, zera baiezta daiteke:

Biderketarekiko alderantzizko modular 

Artikulu nagusia: Biderketarekiko alderantzizko modular.

Bi zenbaki oso  eta  kongruenteak dira modulu  ,  balioaz zatitzean hondar bera lortzen bada. Adibidez, 7 eta 12 kongruenteak dira modulu 5, 7 zenbakia eta 12 zenbakia 5ez zatitzean 2 hondarra lortzen delako.  eta  zenbakiak kongruenteak direla modulu  adierazteko

notazioa erabiltzen da. Aurreko adibideko kongruentzia, beraz, horrela adierazten da:

.

Demagun  eta  balioak ezagunak direla, baina honako kongruentzia betetzen duen  ezezaguna dela:

 betetzen duen  balioa aurkitu behar da. Horrela, aurreko ekuazioa -ekin biderkatuz, nahi den soluzioa lortuko da:

 balioa ren alderantzizkoa modulu  dela esaten da.

Balio hori ez da beti existitzen. Esaterako,  eta  balioetarako ez da existitzen  zenbaki osorik non  betetzen den. Izan ere,  balioa existitzeko  bete behar da, hau da, zenbakiak elkarrekiko lehenak izan behar dute. Euklidesen algoritmo hedatua erabiltzean () ,  lortzen bada, orduan  balioa ren alderantzizkoa da, modulu . Adibidez, honako ekuazio hau ebatzi nahi bada:

Orduan, Euklidesen algoritmo hedatuarekin  lortzen da.  denez, 5-ak badu alderantzizkoa modulu 9. Gainera,  denez, alderantzizko hori 2 da. Hortaz,

,

hau da,  da.

Bézouten Identitatea 

Artikulu nagusia: Bézouten identitate.

Bézouten identitateak zera dio: zeroren ezberdinak diren  eta  bi zenbaki oso eta  haien zatitzaile komun handiena izanik, honakoa betetzen duten  eta  bi zenbaki oso existitzen direla:

 eta  koefizienteak eta  haien zatitzaile komun handiena Euklidesen algoritmo hedatuaren bidez kalkula daitezke.

Algoritmoaren konplexutasuna 
Lamé-ren teoremak baieztatzen du Euklidesen algoritmoa aplikatzean kasurik okerrena Fibonacci-ren segidako ondoz ondoko bi zenbakiren zatitzaile komunetako handiena kalkulatzean ematen dela.

Adibidea.

 eta  zenbakien zatitzaile komunetako handiena kalkulatzeko honako eragiketak egin behar dira:

Ikusten denez, bi digituko bi zenbaki horietarako 9 zatiketa egin behar izan dira. Oro har, egindako zatiketa kopurua zenbakiek duten digito kopurua bider 5 baino altuagoa ez da inoiz izango.

Konplexutasun konputazionalari dagokionez,  eta -ren  kalkulatzeko  zatiketa egin beharko dira,  izanik.

Brigitte Valleek frogatu zuen bi zenbakiak  bitetan adieraz badaitezke, orduan bataz bestean egin beharreko zatiketa kopurua  dela.

Hala ere, ez da nahikoa zatiketa kopurua ezagutzea. Aurretik aipatu den moduan, Euklidesen algoritmoak polinomioetan eta zenbaki osoetan funtzionatzen du eta, oro har, edozein eremu euklidearretan. Kasu bakoitzean, algoritmoaren konplexutasuna egin behar den zatiketa kopuruaren eta zatiketa bakoitza egitearen kostuaren mende dago. Polinomioen kasuan, egin beharreko zatiketa kopurua  da,  polinomioen gradua izanik.

Bibliografia 
 von zur Gathen, Joachim; Gerhard, Jürgen (2003). «The Euclidean Algorithm». Modern Computer Algebra
 Cambridge University Press. .
 Shoup, Victor (2008). «Euclid’s algorithm». A Computational Introduction to Number Theory and Algebra
 Cambridge University Press. .
 Johnsonbaugh, Richard (2005). «Introducción a la teoría de números». Matemáticas Discretas. México: PEARSON EDUCACIÓN. .
 Ralph P. Grimaldi (1998). «Propiedades de los números enteros: Inducción matemática». Matemáticas Discreta y Combinatoria. México: Addison Wesley Longman de México. .
 Lipschutz, Seymour; Lipson, Marc (2009). «Propiedades de los enteros». Matemáticas Discretas. McGraw-Hill. .
 Brassard, Gilles; Bratley, Paul (1997). «Análisis de algoritmos». Fundamentos de Algoritmia. Madrid: PRENTICE HALL. .
 Vallée, Brigitte (2002). «Dynamical Analysis of α-Euclidean Algorithms»
 Journal of Algorithms 44 (1). ISSN 0196-6774 , pp. 246-285.
 Cormen, Thomas; Leiserson, Charles; Rivest, Ronald; Stein, Clifford (2009). «Number-Theoretic Algorithms». Introduction to Algorithms. The MIT Press. .
 Barrera Mora, Fernando (2005). «Definiciones y resultados generales». Introducción a la Teoría de Grupos
 Publicaciones Electrónicas de la Sociedad Matemática Mexicana. .
 Cárdenas, Humberto; Lluis, Emilio; Raggi, Francisco; Tomás, Francisco (2004). «Divisibilidad». Álgebra Superior. México: Trillas. .
 Pérez Seguí, María Luisa (2006). «Divisibilidad». Teoría de Números. Instituto de Matemáticas, UNAM. .
 Sánchez Velázquez, Jesús (1998). «Algoritmos para números grandes». Introducción al análisis de algoritmos. México: Trillas. .
 Baldor, Aurelio (2008). «Máximo común divisor». Álgebra. México: Grupo Editorial Patria. .

Euklidesen algoritmoa polinomioekin 
Izan bitez f, g ∈ K[x] eta deg f ≥ deg g. Zatiketaren algoritmoa erabiliz, f = gh + r non r = 0 edo deg r < deg g den. Orduan,

 r = 0 bada, g f-ren zatitzailea da eta bien zatitzaile komun handiena g-ren multiplo monikoa da; 
 r 6= 0 bada, f eta g-ren zatitzaile komunak eta g eta r-ren zatitzaile komunak berdinak dira.

Bigarren kasuan, zatiketaren algoritmoa erabil dezakegu g eta r-rako eta lortzen dugun hondar berria 0 ez bada, r-ren maila baino txikiagoa izango du. Behin eta berriro erabiliko dugu algoritmoa hondarra 0 izan arte. Hori noizbait gertatuko da eta orduantxe erabili dugun zatitzailea moniko eginez, lortu dugu zatitzaile komun handienaren definizioa betetzen duen polinomioa. Hala dela ikusteko, polinomio horrek Bézouten identitatea betetzen dela ondorioztatzen da lehenengo. Hori Euklidesen algoritmoak ematen du, zenbakien kasuan ikusi dugun moduan. Behin identitate hori eskutan, argi dago f eta g-ren edozein zatitzailek lortu dugun polinomioa zatituko duela.

Kanpo estekak 

Algoritmoak
Zenbakien teoria
Oinarrizko matematika