Matemática: A melhor amiga de um programador
Friday, August 15th, 2008Neste post quero mostrar como um bom conhecimento matemático pode facilitar e muito a vida de um programador. Para isso, vou usar 3 exemplos. Vamos e eles….
O primeiro exemplo foi uma situação que passei com um ex-colega de trabalho. Ele tinha que resolver para a faculdade o problema das “Torres de Hanói”, creio que conhecido de todos que frequentam esse blog. O professor queria que fosse desenvolvido um algoritmo para dado uma quantidade de discos, todos inicialmente no pino 1, retornasse quantos movimentos seriam necessários para mover todos os discos para algum outro pino. Meu amigo me pediu para ajudar ele com esse problema. Ele tava fazendo um algoritmo, mas não estava conseguindo….porém, a solução deste problema é totalmente matemática. A formula pow(2, n) - 1 retorna exatamente o resultado esperado. Simples assim.
Outro problema é por exemplo, você quer somar todos os números de 0 a N. Como resolver isso? Simples não? Faz um for até N e vai somando numa variavel. Gauss diria que voce pode resolver isso da seguinte forma:
Soma = N * (N+1) / 2
Quem não gosta de matemática, provavelmente não liga para analise de algoritmos, então acha que dá na mesma. Mas tenta fazer isso com N igual a 1000000 com o for e compara com a solução da expressão.
Um blog que eu gosto muito e sempre acompanho é o DQSoft do Daniel Quadros (http://dqsoft.blogspot.com). O Daniel fez um post falando de um problema recente que ele teve que resolver no “Google Code Jam”. (http://dqsoft.blogspot.com/2008/08/google-code-jam-2008-triangle-areas.html)Reparem como a solução é trivial, dependendo apenas de sacadas matemáticas.
Viram só? Os exemplos não estão relacionados a coisas que usamos no nosso dia-a-dia, mas eu creio que o mais importante disso tudo é a capacidade lógica que a matemática proporciona.
[]’s
PS: A prova do problema das Torres de Hanói pode ser encontrada no livro “Matematica Concreta”
PS1: A questão da soma foi descoberta por Gauss, que em uma aula do ensino fundamental, recebeu como castigo somar até 100, e rapidamente falou 5050, surpreendendo a todos.