Hay muchos algoritmos que ni siquiera están destinados a ejecutarse en una computadora, sino que están diseñados para personas. Las recetas de cocina son un buen ejemplo, pero parecen simples. Los deportes están llenos de algoritmos: aprende una secuencia de pasos, cómo reaccionar ante diversos desafíos y también estrategias comunes. Un buen entrenador de esquí puede depurar su algoritmo de esquí 🙂 Un buen entrenador de manejo puede ajustar sus algoritmos para mejorar la seguridad, la velocidad, el ahorro de combustible y el desgaste del automóvil.
En términos más generales, muchas habilidades (físicas y mentales) y estrategias son algoritmos. ¿No es genial aprender a lidiar con las personas en general? ¡Podrías idear estrategias comerciales competitivas! La rutina diaria y la higiene, mantenerse saludable en general, y muchos tratamientos médicos se basan en algoritmos.
Los algoritmos también ayudan a tratar con sistemas de reglas. El código tributario y las leyes en general son sistemas de reglas, y muchos de ellos son explícitamente algorítmicos. Verificar qué es legal y qué no es una actividad algorítmica. Encontrar formas de lograr algo sujeto a reglas es aún más algorítmico. La optimización de la calidad, la adopción, el costo, el uso de los recursos y las ganancias requieren algoritmos. Si conoce bloques algorítmicos estándar y cómo se pueden usar, no necesitará reinventar la rueda. Algunos de esos algoritmos son muy inteligentes, es posible que no pueda reinventarlos dentro de un marco de tiempo realista.
- ¿Es necesario que el vector se ordene para usar lower_bound?
- Dado un laberinto cuadrado, cada entrada en el laberinto es una celda abierta 'O' o una pared 'X'. Una rata puede viajar a sus ubicaciones adyacentes (izquierda, derecha, arriba y abajo), pero para llegar a una celda, debe estar abierta. Dadas las ubicaciones de las ratas, ¿puedes averiguar si todas las ratas pueden alcanzar a las demás?
- ¿Cuáles son algunos problemas informáticos para los que no existe un enfoque de fuerza bruta?
- ¿Cómo se siente cuando te das cuenta de que no eres realmente bueno en programación y algoritmos?
- ¿Pueden los algoritmos de aprendizaje de refuerzo actuales elegir múltiples acciones dado el estado actual?
La implementación de algoritmos complicados como programas de computadora le enseña a ser preciso y también desarrolla una buena intuición. También te enseña cómo arreglar las cosas y cómo evitar roturas. Por lo tanto, tener buenas habilidades para diseñar, implementar, depurar y mejorar algoritmos es muy útil más allá de CS. Pero incluso los algoritmos CS típicos, como la búsqueda binaria, pueden ser útiles en la vida cotidiana. Digamos que no quieres ver un video completo, pero quieres encontrar un momento en que muera algún personaje. Búsqueda binaria al rescate! ¿Planeando un viaje? Utilice el hallazgo de ruta más corta de una sola fuente. Lo mismo para las estructuras de datos. Si desea realizar un seguimiento de muchos libros en estanterías o automóviles en un estacionamiento, sin una lista completa de ubicaciones, use una función hash.
Además, encontrar patrones en los datos, desde curiosidades deportivas hasta transacciones financieras críticas, requiere algoritmos. Aquí a menudo utilizamos implementaciones listas para usar de bloques algorítmicos comunes, por lo que principalmente necesita saber qué hacen, qué se puede esperar de ellos y cuáles son sus usos típicos. Por ejemplo, el análisis de componentes principales (PCA) o la técnica de evaluación y revisión de proyectos (PERT) son útiles para los CTO y CEO. Incluso si no usan esos métodos personalmente, deben comprender los resultados informados en las presentaciones comerciales.
¿Quieres predecir el futuro? – el clima, el mercado de valores o los patrones de tráfico, – algoritmos nuevamente. Incluso si no escribe programas, puede estar utilizando software o administrando personas que lo hacen, o analizar empresas que lo hacen, y así sucesivamente.
¿No convencido?
Mark Guzdial nos dice (http://cacm.acm.org/blogs/blog-cacm/189498-top-10-myths-about-teaching-computer-science/fulltext) que
Por cada desarrollador de software profesional en el mundo, hay nueve personas más programando como parte de su trabajo que no son desarrolladores de software profesionales.