Introdução


O que é um algoritmo?

Edsger Dijkstra certa vez disse que “Ciência da computação tem tanto a ver com o computador como a Astronomia com o telescópio, a Biologia com o microscópio, ou a Química com os tubos de ensaio. A Ciência não estuda ferramentas, mas o que fazemos e o que descobrimos com elas.

Se esta afirmação é verdadeira, se computadores não são o cerne da Ciência da Computação, então o que seria? A resposta é simples: algoritmos são o cerne da Ciência da Computação.

Mas o que é um algoritmo?O conteúdo desta seção é baseado no capítulo entitulado “Algorithms”, presente no livro Selected Papers in Computer Science, escrito por Donald E. Knuth.

Em poucas palavras, um algoritmo é um procedimento, uma receita, um processo, uma rotina, um método. “Um algoritmo é um conjunto de regras para se obter uma saída específica a partir de uma entrada específica. Cada passo de um algoritmo precisa ser definido de forma precisa o bastante para que ele seja traduzido para uma linguagem de programação e executado por um computador.”

Existem duas condições para que um procedimento possa ser chamado de algoritmo. Primeiro, as regras descritas por ele precisam especificar operações que sejam tão simples e tão bem definidas que elas podem ser executadas por uma máquina. Além disso, um algoritmo precisa sempre terminar depois de um número finito de passos.

Vimos acima que, para serem executados por um computador, algoritmos precisam ser traduzidos para uma linguagem de programação. Quando traduzimos um algoritmo para uma linguagem de programação estamos criando um programa de computador. Assim, um programa é uma representação de um algoritmo em uma dada linguagem de programação. Podemos interpretar um algoritmo como sendo um método abstrato para cálculo de alguma saída a partir de alguma entrada, enquanto um programa é a implementação de um método computacional em uma linguagem de programação.

Na próxima seção, veremos os dois tipos principais de algoritmos, bem como algumas estratégias para projetarmos algoritmos.