O que são Algoritmos?

Um algoritmo é um conjunto de regras claras e não ambíguas que descrevem passo a passo como resolver um problema.

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


#Engenharia #Software #Algorítmo #Informática


Leave a Comment

error: Conteúdo Protegido!
Scroll to Top