1.6. Por Que Estudar Algoritmos?

Cientistas da computação aprendem por experiência. Nós aprendemos vendo os outros resolverem problemas e resolvendo problemas por nós mesmos. Estar exposto a diferentes técnicas de resolução de problemas e ver como diferentes algoritmos são projetados nos ajuda a atacar o próximo problema desafiador que nos são dados. Considerando vários algoritmos diferentes, podemos começar a desenvolver o reconhecimento de padrões para que, da próxima vez que um problema semelhante surgir, sermos mais capazes de resolvê-lo.

Algoritmos são frequentemente bem diferentes uns dos outros. Considere o exemplo do sqrt visto anteriormente. É inteiramente possível que existam muitas maneiras diferentes de implementar os detalhes para calcular a função raiz quadrada. Um algoritmo pode usar muito menos recursos que outro. Um algoritmo pode levar 10 vezes mais tempo para retornar o resultado que outro. Gostaríamos de ter alguma maneira de comparar essas duas soluções. Mesmo que os dois produzam um resultado correto, um talvez seja “melhor” que o outro. Nós podemos sugerir que um é mais eficiente ou que um simplesmente funciona mais rápido ou usa menos memória. Ao estudarmos algoritmos, podemos aprender técnicas de análise que nos permitem comparar e contrastar soluções baseadas unicamente em suas próprias características, não as características do programa ou computador utilizado para implementá-los.

Na pior das hipóteses, podemos ter um problema intratável, o que significa que não há algoritmo que possa resolver o problema em um quantidade de tempo realista. É importante ser capaz de distinguir entre aqueles problemas que têm soluções, aqueles que não têm, e aqueles onde existem soluções mas exigem muito tempo ou outros recursos para trabalhar razoavelmente.

Com frequência haverão conflitos que nós precisaremos identificar e resolver. Como cientistas da computação, além de nossa capacidade de resolver problemas, também precisaremos conhecer e entender técnicas para avaliação de soluções. Ao final, sempre há muitas maneiras de resolver um problema. Encontrar uma solução e então decidir se ela é boa são tarefas que vamos fazer várias e várias vezes.

Next Section - 1.7. Revisão de Python Básico