Queremos saber dos cosas sobre un algoritmo:
- ¿Cumple con sus requisitos? (La mayoría de las veces, eso significa, ¿da la respuesta correcta? Pero para algunos algoritmos, estamos dispuestos a aceptar errores, siempre que podamos limitar la tasa de error).
- ¿Cuánto tiempo lleva correr? Por lo general, queremos saber su tiempo de ejecución utilizando notación asintótica (por ejemplo, notación O o notación [matemática] \ Theta [/ matemática]).
Si un algoritmo no cumple con sus requisitos, entonces es de utilidad limitada. Considere, por ejemplo, el algoritmo que controla una máquina que emite radiación con fines médicos. Si el algoritmo es defectuoso, los pacientes mueren. (Esto ha sucedido). Y si un algoritmo tarda demasiado en ejecutarse, nuevamente, es de utilidad limitada. Considere el algoritmo que utiliza un sistema de control de tránsito aéreo para determinar si dos aviones están en curso de colisión. Realmente le gustaría dar una respuesta correcta a tiempo para que los pilotos cambien de rumbo si están a punto de chocar.
Ahora, si los únicos algoritmos que implementará ya están probados para cumplir con sus requisitos y tienen tiempos de ejecución probados, puede ignorar sus pruebas sin pensar. Sin embargo, es probable que, en algún momento, deba idear un algoritmo por su cuenta para un problema real que está tratando de resolver. Puede esperar que su algoritmo haga lo que se supone que debe hacer y se ejecute rápidamente. O puedes probar que sí. Solo diré que si pongo mi vida en manos de su algoritmo, quiero que demuestre que el algoritmo es correcto y da una respuesta a tiempo para usarlo.
- ¿Cuáles son buenas maneras de encontrar el algoritmo y el cálculo necesarios? Normalmente no necesito pensarlo, pero recientemente, estoy luchando con ellos.
- ¿Qué hay de malo con este código C?
- ¿Cuál es la mejor práctica y estructura de datos para la aplicación de autocompletado multilingüe?
- Cómo aprender algoritmos para el lenguaje C
- No soy bueno en algoritmos, pero estoy tratando de descubrir algo. ¿Cuáles son algunas técnicas o libros o alguna sugerencia?