1.6. ¿Por qué estudiar algoritmos?¶
Los científicos de la computación aprenden por experiencia. Aprendemos al ver a otros resolver problemas y resolviendo problemas por nosotros mismos. Estar expuesto a diferentes técnicas de solución de problemas y ver cómo se diseñan diferentes algoritmos nos ayuda a enfrentar el próximo problema desafiante que se nos presente. Al considerar una serie de algoritmos diferentes, podemos comenzar a desarrollar un reconocimiento de patrones de modo que, la próxima vez que surja un problema similar, estemos más capacitados para resolverlo.
Los algoritmos son a menudo muy diferentes entre sí. Considere el ejemplo de sqrt
visto anteriormente. Es completamente posible que haya muchas maneras diferentes de implementar los detalles para calcular la función de la raíz cuadrada. Un algoritmo puede utilizar muchos menos recursos que otro. Un algoritmo puede tomar 10 veces más tiempo para devolver el resultado que el otro. Nos gustaría tener alguna manera de comparar estas dos soluciones. Aunque ambos funcionen, una es quizás “mejor” que la otra. Podríamos sugerir que una es más eficiente o que una simplemente trabaja más rápido o usa menos memoria. A medida que estudiamos algoritmos, podemos aprender técnicas de análisis que nos permiten comparar y contrastar soluciones basadas únicamente en sus propias características, no en las características del programa o de la computadora utilizada para implementarlas.
En el peor de los casos, podemos tener un problema que es intratable, lo que significa que no hay ningún algoritmo que puede resolver el problema en una cantidad realista de tiempo. Es importante poder distinguir entre aquellos problemas que tienen soluciones, los que no tienen, y aquellos en los que existen soluciones pero que requieren demasiado tiempo u otros recursos para trabajar razonablemente.
A menudo habrá concesiones mutuas que tendremos que identificar y sobre las cuales debemos decidir. Como científicos de la computación, además de nuestra capacidad para resolver problemas, también necesitaremos conocer y entender las técnicas de evaluación de las soluciones. Al fin y al cabo, a menudo hay muchas maneras de resolver un problema. Encontrar una solución y luego decidir si es una buena son tareas que vamos a hacer una y otra vez.