¿Por qué y cómo son importantes los algoritmos en nuestra vida diaria?

Las matemáticas y la física de sentido común son suficientes para que la mayoría de las personas se muevan (como cruzar el césped toma menos tiempo que dar vueltas, etc.). Los algoritmos son útiles para algunas tareas que algunas personas podrían enfrentar a diario.

Por ejemplo:

  • Trabajo administrativo
    • Papeleo
      Archivando papeleo todos los días? Aquí es donde los algoritmos serían útiles. Archivar es una tarea repetitiva donde pensar algorítmicamente ayudaría a ahorrar tiempo. Suponga que tiene que duplicar varias carpetas de documentos.
      Esto implica sacar los papeles para fotocopiarlos, perforarlos y archivarlos en archivos nuevos. ¿Es más fácil sacar todos los papeles, luego fotocopiarlos todos juntos o tomar cada uno por separado y fotocopiar los documentos uno por uno? ¿Es más fácil perforar todos los papeles primero antes de archivarlos?
      El pensamiento algorítmico le dirá que es más rápido sacar todos los papeles, fotocopiarlos todos a la vez presionando el botón grande en la máquina de fotocopias, y luego perforar todos los agujeros a la vez antes de archivarlos.
      Por supuesto, uno tiene que separar esos documentos nuevamente después de hacer agujeros. Esto ayuda a mejorar la eficiencia del método de archivo.
    • Clasificación
      ¿Tener que clasificar muchos documentos / libros cada día (por ejemplo, en bibliotecas)? La mayoría de las personas no se dan cuenta, pero usualmente usamos una versión del tipo de inserción con espacios vacíos llamada tipo de biblioteca [1].
      Aunque existen métodos de clasificación con un tiempo asintótico más rápido (como mergesort o quicksort), la ordenación de la biblioteca es prácticamente suficiente para hacer el trabajo.
    • Hojas de cálculo Excel
      Las hojas de cálculo de Excel son útiles para muchas tareas administrativas relacionadas con listas y datos. Sin embargo, uno rara vez va más allá de usarlo simplemente para resumir números. De hecho, Excel se convierte en una herramienta muy poderosa cuando se combina con el pensamiento algorítmico: se pueden diseñar, por ejemplo, listas de tareas y calendarios. Dado un conjunto de datos que el jefe quería analizar, ¿sería más fácil poner todo en una hoja y analizarlo en su conjunto, o ponerlo en varias hojas y analizarlo individualmente? ¿Ayudarían los métodos gráficos?
  • Análisis del mejor / peor de los casos
    Al tomar decisiones comerciales, a menudo es necesario observar toda la situación y considerar los escenarios que podrían surgir. El entrenamiento algorítmico ayuda a practicar la disciplina de considerar el análisis del mejor / peor de los casos, teniendo en cuenta todos los casos límite posibles.
  • Divide y conquistaras
    Cuando se enfrenta un gran problema, es imperativo dividirlo en partes más pequeñas que se resuelvan más fácilmente. Aquí es donde entra en juego la técnica algorítmica de dividir y conquistar. Sin embargo, la división del problema en subproblemas a menudo no es trivial: a veces se necesitan ideas ingeniosas para delegar tareas de manera significativa.
  • Conducción
    ¿Qué ruta se debe tomar? ¿Los atascos en este camino serían más fáciles que la autopista? ¿Cuántos semáforos / señales de alto hay? Estas consideraciones las realizan en su mayoría los potentes sistemas GPS de los automóviles en la actualidad, pero a veces el GPS no tiene en cuenta la información en tiempo real y, a veces, puede dar direcciones incorrectas (especialmente cuando cambian las carreteras). El problema de la ruta más corta es solucionado de forma innata por muchos controladores independientes del conocimiento de algoritmos, pero sería más fácil para uno reconocer los pesos, nodos, bordes y otros factores involucrados con el conocimiento algorítmico.
    Además, cuando uno llega a un lugar cercano al destino, ¿cuál debería ser una forma de buscar su ubicación exacta? Dado el conocimiento algorítmico, se podría tratar de ramificar y unir, ayudado por pistas visuales.
  • Programación y priorización
    ¿Tienes muchos eventos para asistir y no estás seguro de cuál cancelar? Si todos fueran igualmente (des) importantes, ¿cuál es la forma en que uno puede asistir a la mayoría de ellos? Este es el conocido problema de programación de eventos que puede resolverse mediante un algoritmo codicioso: en cada momento, elija el que finalice lo antes posible, hasta que se complete todo el tiempo [2]. Por supuesto, esto no es realista cuando uno considera factores de la vida real como la importancia de los eventos y el tiempo de transporte, etc., pero esto le da a uno una solución rápida que puede modificarse.

Sin embargo, en la vida real, la mayoría de los problemas no son tan fáciles. La mayoría de los problemas se encuadran en las clases NP-complete y NP-hard (por ejemplo, ¿es usted un vendedor ambulante [3]?). Aun así, existen algoritmos de aproximación y heurísticos que pueden ofrecer soluciones razonablemente buenas en un corto período de tiempo. Sorprendentemente, a veces un enfoque aleatorio o un enfoque codicioso proporcionaría una solución razonablemente aceptable rápidamente.

Sin embargo, la mayoría de las veces, los insumos en sí no se especifican muy bien (por ejemplo, fluctuaciones en los mercados financieros), y los factores involucrados en el problema pueden no conocerse completamente. Esto requiere los conocimientos y la experiencia de un ser humano para juzgar, aproximar y crear algún modelo de este, antes de que el conocimiento algorítmico pueda ayudar.

En conclusión, el conocimiento de algoritmos puede ser generalmente útil para que las personas resuelvan varios tipos de problemas de la vida real, aunque con algunas aproximaciones; a veces como una solución rápida que se puede modificar.

[1] Clasificación de biblioteca
[2] Algoritmos / Algoritmos codiciosos
[3] Problema de vendedor ambulante

Kevin Slavin @ TEDGlobal 2011: cómo los algoritmos dan forma a nuestro mundo

Kevin Slavin argumenta que estamos viviendo en un mundo diseñado para algoritmos, y cada vez más controlado por ellos. En esta fascinante charla de TEDGlobal, muestra cómo estos complejos programas de computadora determinan: tácticas de espionaje, precios de acciones, guiones de películas y arquitectura. Y advierte que estamos escribiendo código que no podemos entender, con implicaciones que no podemos controlar.

No quiero sonar filosófico, pero creo que debería retroceder y considerar lo que quiere decir con algoritmos.

Creo que podría ayudarse mucho al enfocarse exclusivamente dentro de un área general importante en la que los ” algoritmos ” son profundamente importantes y notar la extensión y la clasificación potencial de acciones como estructuras algorítmicas o de decisión como algoritmos :

software : almacenamiento / búsqueda eficiente, cálculos de ruta, toda la posibilidad de hacer cálculos de manera significativa y repetible
hardware : reproducibilidad de metodologías y poder predecir / comprender / eventualmente controlar el comportamiento
ciencias de la computación : gran marco para encontrar problemas difíciles y potencialmente aplicables (el rendimiento y las posibles acciones son axiomáticas)
cocinar : permite a los grandes chefs o simplemente a las personas que juegan con los alimentos transmitir acciones que conducen a alimentos potencialmente deliciosos
Operar maquinaria (automóviles, aviones, carretillas elevadoras): al aprender un pequeño conjunto de reglas y el comportamiento resultante, podemos, con capacitación limitada, aprender cómo hacer que los sistemas mecánicos participen en una gran variedad de acciones.
pensando / observando el mundo que te rodea … etcétera etcétera.

En el sentido más amplio, nos permiten tomar información y analizarla o usarla para algún propósito.

Puedes tener una idea clara de este video.

Youtube

Youtube

More Interesting

¿Cuál es la mejor práctica y estructura de datos para la aplicación de autocompletado multilingüe?

Cómo hacer un diagrama de flujo y un algoritmo para convertir números binarios a decimales

Entre C # y Java, ¿cuál es el mejor lenguaje de programación para aprender programación orientada a objetos, estructuras de datos y algoritmos? ¿Por qué?

Cómo encontrar proyectos en algoritmo

Dado un volumen que consiste en un número de ubicaciones dentro de un espacio tridimensional definido, y a cada una de estas ubicaciones se le asigna algún número, ¿hay alguna métrica obvia que se pueda aplicar que mida la complejidad de la distribución de las mediciones?

¿Se pueden implementar dfs sin recursividad?

¿Podría dar un algoritmo que calcule la puntuación máxima de la mejor alineación de secuencia (S ', T') de S y T?

¿Alguien está usando algoritmos epigenéticos?

Algoritmos: ¿Cómo la combinación de ordenamiento tiene complejidad espacial O (n) para el peor de los casos?

Cómo agregar números de dos listas vinculadas

¿Cómo funciona el algoritmo de cubos de marcha?

Interacción humano-computadora: ¿Qué tan difícil sería escribir un algoritmo que pudiera identificar similitudes en las expresiones faciales entre dos imágenes tomadas en la cabeza?

¿Qué es una explicación intuitiva de la complejidad del tiempo de ejecución del algoritmo?

¿Cuál es la mejor manera de aprender el algoritmo KMP para poder recordarlo fácilmente?

¿Qué algoritmo de clasificación se usa en C # collection.sort () y por qué?