Algoritmos


Você já parou para pensar o que tem por trás de uma simples troca de lâmpada? A pergunta pode ser estranha, porém, a resposta é bastante simples. Como esse processo é muito corriqueiro e dispensa ficar analisando como fazê-lo, você nem percebe que há um algoritmo presente nessa atividade. Mas, afinal, o que é um algoritmo? Podemos defini-lo como um conjunto finito de códigos bem resolvidos, contudo, não ambíguos, que devem ser adotados para a resolução de um determinado problema ou a execução de uma tarefa.

Em termos mais simples, é possível afirmarmos que um algoritmo é uma receita que explica todos os passos necessários para se solucionar uma tarefa específica. Logo, na hora em que executamos atividades comuns, independentemente do grau de dificuldade, utilizamos os algoritmos, muito embora não percebamos isso de fato. Portanto, o foco principal é o como fazer e não o que fazer.

 Algoritmos

Por exemplo, um determinado algoritmo, na hora em que for lavar a roupa no tanque, pode mencionar que primeiro você lave-as e, depois, vire do avesso, enquanto outro algoritmo pede que você vire as roupas do avesso primeiro e depois as lave. Nesse caso, fica comprovado que a primeira situação é mais difícil de ser executada do que a segunda, mesmo que ambas levem a um resultado igual.

Portanto, o algoritmo executado de forma correta não irá resolver, de forma eficaz, um problema específico, se este mesmo for imposto de maneira incorreta ou se não estiver de acordo com o problema em questão. Nesse sentido, é possível afirmarmos que algoritmos distintos realizam a mesma atividade, mas com um grupo diferente de instruções. Grupo este que pode levar tanto um tempo quanto um esforço ou um espaço maior ou menor se comparados a outros.

Os algoritmos e a sua etimologia

Para alguns historiadores e autores, a origem da palavra algoritmo é relacionada ao sobrenome do matemático persa Mohamed ben Musa Al-Khwarizmi. Tendo vivido no século IX, teve algumas de suas obras traduzidas, em meados do século XII, no ocidente cristão. Uma delas, denominada Algorithmi cujo número era indorum (indiano), referia-se aos algoritmos usados a partir do sistema de numeração decimal.

No entanto, outros estudiosos defendem que o surgimento do termo tem referência em Al-goreten, que significa raiz, e que o seu conceito é aplicável aos cálculos. Ainda, há as formas corrompidas das palavras Álgebra e algorismo, que também pode ter causado o surgimento do termo algoritmo, já que as derivações originais eram esquecidas pelas pessoas.

Logo, independentente de qual seja a verdadeira etimologia de algoritmo, a principal ideia contida no termo tinha relação com a definição sistemática em como executar determinada tarefa.

A classificação dos algoritmos

Dentre todos os algoritmos existentes, a maioria deles é programado e desenvolvido com a finalidade de ser utilizado em um programa de computador. Não obstante, é possível que eles também possam ser empregados em um dispositivo mecânico, em um circuito elétrico ou, até mesmo, em uma rede neural biológica, semelhante à resposta que o cérebro dá no momento em que realizamos uma operação aritmética. Confira abaixo os algoritmos quanto à sua classificação.

Classificação por implementação

• Recursivo ou iterativo: caracterizado por invocar a si próprio varias vezes a fim de resolver o problema;
• Lógico: denominado assim por ser considerado como uma dedução lógica comedida.
• Serial: realiza uma tarefa item por item, de forma individual.
• Paralelo: executa as instruções ao mesmo tempo só que de forma dividida, delegando funções aos algoritmos disponíveis;
• Determinístico: resolve, passo a passo, as tarefas com exatidão;
• Não-determinístico: deduz a melhor forma de resolver o problema;
• Exato: encontra a resposta do problema de maneira exata;
• Aproximado: busca por respostas que mais se aproximem da verdade por meio de táticas determinísticas ou aleatórias.

Classificação por paradigma

• Divisão e conquista: reduzem o problema várias vezes até que ele se torne um subproblema e possa ser resolvido;
• Programação dinâmica: responsável por evitar que haja um recálculo de algo já resolvido;
• Algoritmo ganancioso: muito semelhante à programação dinâmica, porém diferente quanto às soluções dos subproblemas, que pode ser finalizado a cada momento;
• Programação linear: abrange a maximização e a minimização no ingresso de um grupo de desigualdade linear;
• Redução: resolve um determinado problema e transforma-o em outro;
• Busca e enumeração: são problemas r solvidos por meio dos grafos, área da matemática que analisa a semelhança de objetos pertencentes a um conjunto específico;
• Paradigma heurístico: o resultado do problema se dá de forma aproximada;
• Paradigma probabilístico: as escolhas do problema são feitas aleatoriamente.
Classificação por campo de estudo
• Representado pelas áreas da ciência, uma vez que cada uma tem problemas e algoritmos característicos e específicos a fim de resolvê-los. Por exemplo: interpretação de texto, algoritmos de busca, teoria de compressão de dados, teoria de grafos, teoria de criptografia, etc.;
Classificação por complexidade
• Certos algoritmos são feitos de maneira unidimensional. Já outros são não possuem fim ou são realizados de forma exponencial.