Algoritmo de Euclides

Origem: Wikipédia, a enciclopédia livre.
Ir para: navegação, pesquisa
Animação do algoritmo de Euclides para os inteiros 252 e 105. As barras representam múltiplos de 21, o máximo divisor comum (MDC). Em cada passo, o número menor é subtraído ao maior, até um número ser reduzido a zero. O número restante é o MDC.

Em matemática, o algoritmo de Euclides[a] é um método simples e eficiente de encontrar o máximo divisor comum entre dois números inteiros diferentes de zero. É um dos algoritmos mais antigos, conhecido desde que surgiu nos Livros VII e X da obra Elementos de Euclides[1] por volta de 300 a.C.. O algoritmo não exige qualquer fatoração.

O MDC de dois números inteiros é o maior número inteiro que divide ambos sem deixar resto. O algoritmo de Euclides é baseado no princípio de que o MDC não muda se o menor número for subtraído ao maior. Por exemplo, 21 é o MDC de 252 e 105 (252 = 21 × 12; 105 = 21 × 5); já que 252 − 105 = 147, o MDC de 147 e 105 é também 21. Como o maior dos dois números é reduzido, a repetição deste processo irá gerar sucessivamente números menores, até convergir em zero. Nesse momento, o MDC é o outro número inteiro, maior que zero. Ao reverter os passos do algoritmo de Euclides, o MDC pode ser expresso como soma dos dois números originais, cada um multiplicado por um número inteiro positivo ou negativo, por exemplo, 21 = 5 × 105 + (−2) × 252. Esta importante propriedade é denominada identidade de Bézout.

A mais antiga descrição que se conhece do método usado no algoritmo de Euclides é da sua obra Elementos (c. 300 a.C.), o que o torna um dos algoritmos numéricos mais antigos ainda em uso corrente. O algoritmo original foi descrito apenas para números naturais e comprimentos geométricos, mas foi generalizado no século XIX para outras classes de números como os inteiros gaussianos e polinómios de uma variável. Isto conduziu a noções da moderna álgebra abstrata tais como os domínios euclidianos. O algoritmo de Euclides foi ainda generalizado mais a outras estruturas matemáticas, como os nós e polinómios multivariados.

O algoritmo tem muitas aplicações teóricas e práticas. Ele pode ser usado para gerar quase todas as importantes aplicações tradicionais usados em diferentes culturas em todo o mundo.[2] Ele é um elemento-chave dos algarismo de RSA, um método de criptografia de chave pública usado no comércio eletrônico. Ele é usado para resolver as equações de diofantina, tal como na descoberta de números que seja safistatório em múltiplas congruências (teorema chinês do resto) ou inverso multiplicativo de um número finito. Ele pode também ser usado para construir frações contínuas, em um método para o teorema de Sturm para descobrir raízes reais em um polinômio, e em vários algoritmos modernos em fatoração de inteiros. Finalmente, é uma ferramenta básica para obter teoremas na teoria dos números modernas, tal como teorema de Fermat-Lagrange e no teorema fundamental da aritmética.

História do desenvolvimento do algoritmo[editar | editar código-fonte]

Esta figura na obra "Escola de Atenas" de Rafael retrata muito provavelmente Euclides.

O algoritmo de Euclides é um dos mais antigos algoritmos ainda em uso.[3] Surge na sua obra Os Elementos (c. 300 a.C.), especificamente nos Livros 7 (Proposições 1–2) e 10 (Proposições 2–3). No Livro 7, o algoritmo é formulado para inteiros, enquanto no Livro 10 é formulado para comprimentos de segmentos lineares (dir-se-ia hoje que estaria formulado para números reais. Comprimentos, áreas e volumes, representados como números reais hoje em dia, não são medidos nas mesmas unidades, e não existe uma unidade natural de comprimento, área ou volume. O conceito de número real era desconhecido à época de Euclides. O último algoritmo é geométrico. O MDC de dois comprimentos a e b corresponde ao maior comprimento g que mede propriamente a e b; por outras palavras, os comprimentos a e b são o resultado da multiplicação do comprimento g por números inteiros.

O algoritmo não foi provavelmente concebido por Euclides, que compilou resultados de matemáticos anteriores nos seus Elementos.[4] [5] O matemático e historiador Bartel van der Waerden sugere que o Livro VII provém de um texto em teoria dos números escrito por matemáticos da escola de Pitágoras.[6] O algoritmo era provavelmente conhecido por Eudoxo de Cnido (cerca de 375 a.C.).[3] [7] Poderá ainda ser anterior a Eudoxo,[8] [9] a julgar pelo uso do termo técnico ἀνθυφαίρεσις (anthyphairesis, subtração recíproca) em trabalhos de Euclides e Aristóteles.[10]

Séculos mais tarde, o algoritmo de Euclides terá sido reinventado de forma independente na Índia e China,[11] sobretudo para resolver equações diofantinas que surgiram relacionadas com a Astronomia e a elaboração de calendários precisos. No final do século V, o matemático indiano e astrónomo Aryabhata descrevu o algoritmo como o "pulverizador",[12] por causa da sua eficácia a resolver equações diofantinas.[13] Embora um caso especial do teorema chinês do resto já fora descrito pelo matemático e astrónomo chinês Sun Tzu,[14] a solução geral foi publicada por Ch’in Chiu-Shao na sua obra de 1247 chamada Shushu Jiuzhang (數書九章 Tratado Matemático em Nove Partes).[15] O algoritmo de Euclides foi descrito pela primeira vez na Europa na segunda edição de Problèmes plaisants et délectables (Problemas aprazíveis e deleitáveis, 1624) de Bachet de Méziriac .[12] Na Europa, era usado para resolver equações diofantinas e desenvolvimento de frações contínuas. O algoritmo de Euclides estendido foi publicado pelo matemático inglês Nicholas Saunderson, que o atribuiu a Roger Cotes como método para calcular frações contínuas de forma eficiente.[16]

Descrição do algoritmo[editar | editar código-fonte]

Versão original (geométrica)[editar | editar código-fonte]

Representação do número de passos necessários no algoritmo de Euclides.

Na concepção grega da matemática, os números eram entendidos como magnitudes geométricas. Um tema recorrente na geometria grega era o da comensurabilidade de dois segmentos: dois segmentos (números) AB e CD são comensuráveis quando existe um terceiro segmento PQ que cabe exactamente um número inteiro de vezes nos primeiros dois, ou seja, PQ «mede» (mensura: medida) os segmentos AB e CD.

Nem todos os pares de segmentos são comensuráveis, como observaram os pitagóricos quando estabeleceram que \sqrt{2} não é um número racional, mas no caso de dois segmentos comensuráveis pretende-se determinar a maior medida comum possível.

Euclides descreveu na proposição VII.2 dos seus Elementos um método que permite determinar a maior medida comum de dois números (segmentos) que não sejam primos entre si, embora na época tal método se explicasse em termos geométricos, o que se ilustra na transcrição seguinte:

Para encontrar a máxima medida comum de dois números que não sejam primos entre si.
Euclides VII-2.svg

Sejam AB e CD os dois números que não são primos entre si. É necessário então encontrar a máxima medida comum de AB e CD.

Se CD mede AB então é uma medida comum já que CD se mede a si mesmo. É manifesto que também é a maior medida pois nada maior que CD pode medir CD. Mas se CD não mede AB então algum número restará de AB e CD, o menor sendo continuamente resto do maior e que medirá o número que o precede. Porque uma unidade não ficará pois se assim não for, AB e CD serão primos entre si [Prop. VII.1], o que é contrário ao que se supôs.

Portanto, ficará algum número que medirá o número que o precede. E seja CD a medir BE deixando EA menor que si mesmo e seja EA medindo DF deixando FC menor que si mesmo e seja FC medida de AE. Então, como FC mede AE e AE mede DF, FC será então medida de DF. E também se mede a si mesmo. Portanto também medirá todo o segmento CD. e CD mede BE. Então CF mede BE e também mede EA. Assim mede todo o segmento BA e também mede CD. Isto é, CF mede tanto AB como CD, pelo que é uma medida comum de AB e CD.

Afirmo que também é a maior medida comum possível porque se não o fosse, então um número maior que CF mede os números AB e CD. Seja este G. Dado que G mede CD e CD mede BE, G também mede BE. Além disso, mede todo o segmento BA pelo que mede também o resíduo AE. E AE mede DF pelo que G também mede DF. Mede ainda todo o segmento DC pelo que mede também o resíduo CF, ou seja, o maior mede o menor, o que é impossível.

Portanto, nenhum número maior que CF pode medir os números AB e CD. Então CF é a maior medida comum de AB e CD, o que era o que se queria demonstrar.

Numa linguagem mais moderna, o algoritmo poderia ser descrito da seguinte forma:

  1. Dados dois segmentos AB e CD (com AB>CD), retira-se CD de AB tantas vezes quanto possível. Se não houver resto, então CD é a máxima medida comum.
  2. Se se obtém um resto EF, este é menor que CD e podemos repetir o processo: retira-se EF tantas vezes quanto possível de CD. Se no final não restar nada, EF é a medida comum. No caso contrário obtém-se um novo resíduo GH menor que EF.
  3. O processo repete-se até não haver nenhum resto. O último resto obtido é a maior medida comum.

O facto de os segmentos serem comesuráveis é a chave para assegurar que o processo termina sempre, como se prova de seguida.

Demonstração da terminação e exatidão do algoritmo[editar | editar código-fonte]

A própria definição da série (a_n) por divisão euclidiana mostra que, para qualquer n tal que a_{n+1} é não nulo, existe um inteiro q_{n+2} tal que :  a_{n}=q_{n+2}\times a_{n+1}+a_{n+2}

e ainda 0\leq a_{n+2}<a_{n+1}. A série de inteiros naturais (a_n) é portanto estritamente decrescente, e atingirá o valor 0 num número finito de passos. A existência de um último resto não nulo está assim estabelecida.

Seja N+1 o índice deste último resto não nulo. Para mostrarar que a_{N+1} é o MDC procurado, note-se que a relação anterior se escreve como a_N=q_{N+2}\times a_{N+1}, o que mostra que a_{N+1} divide a_N. Tomando a_{N-1}=q_{N+1}\times a_N+a_{N+1}, deduz-se que a_{N+1} divide também a_{N-1}; também, e por recorrência, note-se que a_{N+1} divide todos os termos da série a_n; em particular os primeiros termos a e b. a_{N+1} é então um divisor comum de a e b. Reciprocamente, todo o divisor comum de a e b dividirá também a_2=a-q_2\times b, e de novo por recorrência, dividirá todos os termos da série (a_n); em particular a_{N+1}.

a_{N+1} é então um divisor comum de a e b que é divisível por todo e qualquer divisor comum: é assim o MDC.

Pseudocódigo[editar | editar código-fonte]

AlgoritmoDeEuclides(a: inteiro; b: inteiro): inteiro

variáveis
   divisor: inteiro
   dividendo: inteiro
   c: inteiro
início

   se b > a então
   início
     dividendo = b
     divisor = a
   senão
     dividendo = a
     divisor = b
   fim-se

   enquanto resto(dividendo/divisor) ≠ 0
   início
      c = resto(dividendo/divisor)
      dividendo = divisor
      divisor = c
   fim-enquanto

   AlgoritmoDeEuclides = divisor
fim-função

Ele também pode ser expresso utilizando recursividade:

AlgoritmoDeEuclides(a: inteiro; b: inteiro): inteiro
início
   se b = 0 então
      AlgoritmoDeEuclides = a
   senão
      AlgoritmoDeEuclides = AlgoritmoDeEuclides(b,resto(a,b))
   fim-se
fim-função

Exemplo[editar | editar código-fonte]

Tomemos os números 348 e 156:

348 156
-312

36 ≠ 0

2

Como o resto não é zero, substituímos o dividendo e o divisor:

156 36
-144

12 ≠ 0

4

Como o resto não é zero, substituímos o dividendo e o divisor:

36 12
-36

0

3
quociente 2 4 3
348 156 36 12
resto 36 12 0

Portanto, o máximo divisor comum dos inteiros 348 e 156 é 12.

Ver também[editar | editar código-fonte]

Bibliografia recomendada[editar | editar código-fonte]

Referências

  1. Thomas L. Heath, The Thirteen Books of Euclid's Elements, 2nd ed. [Facsimile. Original publication: Cambridge University Press, 1925], 1956, Dover Publications
  2. Toussaint, Godfried (July 31 to August 3, 2005), "The Euclidean algorithm generates traditional musical rhythms", Proceedings of BRIDGES: Mathematical Connections in Art, Music, and Science (Banff, Alberta, Canada): 47–56, http://cgm.cs.mcgill.ca/~godfried/publications/banff.pdf 
  3. a b Knuth, p. 318.
  4. Weil A. Number Theory. Boston: Birkhäuser, 1983. 4–6 pp. ISBN 0-8176-3141-0
  5. Jones A. Companion encyclopedia of the history and philosophy of the mathematical sciences. Nova Iorque: Routledge, 1994. 46–48 pp. ISBN 0-415-09238-8
  6. van der Waerden BL. Science Awakening. Groningen: P. Noordhoff Ltd, 1954. 114–115 pp.
  7. von Fritz K. (1945). "The Discovery of Incommensurability by Hippasus of Metapontum". Ann. Math. 46: 242–264. DOI:10.2307/1969021.
  8. Heath TL. Mathematics in Aristotle. [S.l.]: Oxford Press, 1949. 80–83 pp.
  9. David Fowler. The Mathematics of Plato's Academy: A New Reconstruction. Oxford: Oxford University Press, 1987. 31–66 pp. ISBN 0-19-853912-6
  10. Becker O. (1933). "Eudoxus-Studien I. Eine voreuklidische Proportionslehre und ihre Spuren bei Aristoteles und Euklid" 2: 311–333.
  11. Stillwell, p. 31.
  12. a b Tattersall, p. 70.
  13. Rosen, pp. 86–87.
  14. Ore, pp. 247–248.
  15. Tattersall, pp. 72, 184–185.
  16. Tattersall, pp. 72–76.