Algoritmo de Euclides

Fonte: testwiki
Saltar para a navegação Saltar para a 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 EuclidesPredefinição:Ref label é 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: Predefinição:Nowrap begin21 = 5 × 105 + (−2) × 252.Predefinição:Nowrap end 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 algoritmos 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 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

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 descreveu 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

Definição do algoritmo

A ideia principal no Algoritmo de Euclides é que o MDC pode ser calculado recursivamente, usando o resto da divisão como entrada para o próximo passo, o que é baseado na seguinte propriedade do MDC:

MDC(a,b)=MDC(b,r)

onde r é o resto da divisão de a por b.

Isso quer dizer que o resto da divisão em uma chamada do algoritmo será usado como entrada para a próxima chamada.

Sabemos que esse resto é calculado da seguinte forma: r=abq, onde q=ab é uma divisão inteira.

Desta forma, podemos substituir as variáveis para obter uma sequência: usando a=rk1, b=rk e r=rk+1, temos a seguinte sequência:

rk+1=rk1rkq

que nos diz que para calcular o próximo resto, basta multiplicar o resto atual por q=rk1rk e depois subtrair do resto anterior.

Quando o próximo resto for igual a zero, o algoritmo termina a execução e o resto atual (rk) é o máximo divisor comum.

A partir dessas observações, podemos facilmente derivar uma versão completa do algoritmo:

MDC (a, b)

  if (b == 0)
      return a
  else
      return MDC(b, a % b)

Desta versão recursiva, é fácil derivar a versão iterativa: é necessário apenas observar que a condição de parada b=0 e que na chamada subsequente do algoritmo, o valor de a é o valor antigo de b e o valor do novo b é o valor do resto.

MDC(a, b)

   while (b != 0)
       r = a % b
       a = b
       b = r
   return a;

Versão original (geométrica)

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 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:

Predefinição:Citar

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

A própria definição da série (an) por divisão euclidiana mostra que, para qualquer n tal que an+1 é não nulo, existe um inteiro qn+2 tal que : an=qn+2×an+1+an+2

e ainda 0an+2<an+1. A série de inteiros naturais (an) é 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 mostrar que aN+1 é o MDC procurado, note-se que a relação anterior se escreve como aN=qN+2×aN+1, o que mostra que aN+1 divide aN. Tomando aN1=qN+1×aN+aN+1, deduz-se que aN+1 divide também aN1; também, e por recorrência, note-se que aN+1 divide todos os termos da série an; em particular os primeiros termos a e b. aN+1 é então um divisor comum de a e b. Reciprocamente, todo o divisor comum de a e b dividirá também a2=aq2×b, e de novo por recorrência, dividirá todos os termos da série (an); em particular aN+1.

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

Exemplo

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

Predefinição:Wikilivros

Bibliografia recomendada

Predefinição:Referências

Predefinição:Portal3

  1. Thomas L. Heath, The Thirteen Books of Euclid's Elements, 2nd ed. [Facsimile. Original publication: Cambridge University Press, 1925], 1956, Dover Publications
  2. Predefinição:Citation
  3. 3,0 3,1 Knuth, p. 318.
  4. Predefinição:Citar livro
  5. Predefinição:Citar livro
  6. Predefinição:Citar livro
  7. Predefinição:Citar periódico
  8. Predefinição:Citar livro
  9. Predefinição:Citar livro
  10. Predefinição:Citar periódico
  11. Stillwell, p. 31.
  12. 12,0 12,1 Tattersall, p. 70.
  13. Rosen, pp. 86–87.
  14. Ore, pp. 247–248.
  15. Tattersall, pp. 72, 184–185.
  16. Tattersall, pp. 72–76.