Um algoritmo é um conjunto de regras claras e não ambíguas que descrevem passo a passo como resolver um problema.
O que é um algoritmo
- Um algoritmo é um conjunto de regras claras e não ambíguas que descrevem passo a passo como resolver um problema.
- Deve ser suficientemente detalhado para ser executado de forma mecânica, sem necessidade de inteligência humana.
- Exemplos de algoritmos:
- receita de bolo
- motor de busca do google
- algoritmo de ordenação de valores
- Algoritmos existem há milhares de anos (ex.: algoritmo de Euclides para o MDC).
Por que algoritmos são tão importantes?
A análise de algoritmos é um dos pilares da ciência da computação. O motivo é simples: melhorar um algoritmo costuma gerar ganhos muito maiores do que melhorar hardware, linguagem ou compilador. Isso aparece claramente no material que você está lendo, que mostra como a escolha do algoritmo certo pode multiplicar a eficiência de um sistema .
Alguns motivos para estudar algoritmos:
- Eles tornam programas mais rápidos e eficientes.
- Permitem comparar soluções diferentes para o mesmo problema.
- Ajudam a prever como o desempenho muda conforme o tamanho da entrada cresce.
- Muitas vezes revelam soluções mais simples do que imaginávamos.
Por que analisar algoritmos
- Melhorar um algoritmo traz ganhos muito maiores do que otimizar hardware, linguagem ou compilador.
- A análise permite:
- Comparar algoritmos de forma justa.
- Descobrir versões mais simples e eficientes.
- Escolher parâmetros ótimos antes da implementação.
Exemplos: Algoritmos Fibonacci
- slowfib: implementação recursiva direta → faz muito trabalho repetido → tempo exponencial.
- fastfib: abordagem iterativa → tempo linear em número de operações básicas.
- Contudo, ao considerar o tamanho dos números envolvidos, fastfib pode ser quadrático, pois somar inteiros grandes custa mais tempo.
Esse exemplo mostra como duas soluções para o mesmo problema podem ter desempenhos completamente diferentes.
Como medir desempenho
Três características principais de um algoritmo:
- Domínio: quais entradas são válidas.
- Corretude: produz a saída certa para cada entrada válida.
- Uso de recursos: tempo e memória.
Como o tempo real depende de hardware, linguagem e outros fatores, usamos uma medida abstrata: operações elementares. Assim, comparamos algoritmos de forma justa, sem depender do computador usado.
Vale a pena destacar a importância de analisar o comportamento para entradas grandes, já que para entradas pequenas quase qualquer algoritmo funciona bem
Medição do tempo
Nem todo algoritmo se comporta igual para todas as entradas. Por isso, analisamos:
- Usa-se o número de operações elementares, não o tempo real.
- O tempo depende do tamanho da entrada.
- Consideram-se estatísticas como:
- Pior caso (worst-case) – o cenário mais lento possível
- Caso médio (average-case) – comportamento típico
- Melhor caso (best-case) – geralmente pouco útil
O pior caso é importante para aplicações críticas, mas o caso médio costuma ser mais representativo do uso real — como no famoso algoritmo quicksort
Crescimento assintótico
Para comparar algoritmos, usamos notações matemáticas que descrevem como o tempo cresce conforme o tamanho da entrada aumenta:
- Introdução às notações:
- O(g): cresce no máximo como g.
- Ω(g): cresce no mínimo como g.
- Θ(g): cresce na mesma ordem de g.
Essas notações ignoram detalhes como constantes e focam no comportamento geral. Por exemplo:
- O(n) é melhor que O(n²)
- O(log n) é melhor que O(n)
- O(2ⁿ) cresce tão rápido que se torna impraticável para entradas grandes
Exemplos de ordens de crescimento
- Constante < log n < n < n log n < n² < n³ < 2ⁿ
- Pequenas diferenças na ordem têm impacto enorme em escalabilidade.
Regras úteis de análise assintótica
- Multiplicar por constante não muda a ordem de crescimento.
- Soma de funções → domina a maior ordem.
- Produto de funções → segue o produto das ordens.
Essas regras ajudam a analisar loops, recursões e estruturas mais complexas.
Quando analisar algoritmos
- Essencial para algoritmos importantes ou usados repetidamente.
- Menos relevante quando entradas são pequenas.
- A análise deve vir antes da implementação.
Quem analisa algoritmos?
- Desde matemáticos antigos até a comunidade moderna de ciência da computação.
- Destaque para Donald Knuth e The Art of Computer Programming.
Conclusão
Algoritmos são a base da computação. Eles estão por trás de tudo: dos aplicativos que usamos no celular aos sistemas que controlam carros, aviões e hospitais. Entender o que são, como funcionam e como analisá-los é essencial para qualquer pessoa que queira programar melhor — ou simplesmente compreender como o mundo digital opera.
É muito ruim utilizar programas lentos, com alto tempo de resposta ou que utilizam muita memória (causando indiretamente aumento no tempo de resposta).
Se tiver interesse em aprender Scrum, compre o Livro ou faça o curso Scrum Path+: Seu Caminho para a Agilidade através dos links abaixo:
Se quiser se aprofundar no Scrum, compre o livro Scrum Path+ : Seu caminho para agilidade, ou faça o curso Completo de Scrum. Escolha através dos botões abaixo:
Relacionados
Análise da Complexidade dos Dados
Algoritmos – Notação Assintótica
O que são Algoritmos?
Parceiros:
#Engenharia #Software #Algorítmo #Informática


