Posted by & filed under logica.

Una de las leyes propuestas por Arthur C. Clarke dice “Cualquier tecnología suficientemente avanzada es indistinguible de la magia” y si existe un rubro que frecuentemente cae en esa descripción es la de la informática. Sin embargo la informática se basa en algo “sencillo” llamado algoritmo (no confundir, no tiene NADA que ver con la función matemática logaritmo) en el cuál se establecen una serie de pasos básicos a seguir; conforme la complejidad de la tarea lo requiera, más pasos básicos (e intricados) tendrán. Un algoritmo no es ni más ni menos que una receta, un protocolo, una estrategia para la resolución de un problema. Una receta de cocina es un algoritmo! Una rutina de ejercicios es un algoritmo (sort of).

La idea de esta entrada es mostrar como algoritmos que se utilizan en la informática sirven para resolver problemas de la vida real. Existen diversas situaciones, algunas más cotidianas que otras para las cuales se puede utilizar como solución una solución previamente utilizada para resolver un problema similar. Esto no es algo nuevo, existe algo lllamado Patrones de Diseño que se trata de abstraer el concepto de un problema y plantear su solución para que pueda ser utilizada en otros problemas que si bien no son específicamente el mismo, su abstracción lo es; esta idea fue intoducida por el arquitecto Christopher Alexander y luego incorporada en otras ramas. Si sos informático te recomiendo el libro “Desing Patterns” – Erich Gamma.

Ahora vamos a los ejemplos:

Contabilidad

Allá por el 2011 me encontraba trabajando como administrativo en una empresa de explotación minera, mi labor era ingresar los gastos que se generasen en los diversos proyectos para así efectuar los cobros correspondientes al cliente o el pedido de otra partida presupuestaria a nuestra casa matriz. Sucedió una vez que teníamos pocos gastos ingresados en el sistema y la necesidad imperiosa de una inyección de dinero (ya sea del cliente o de la matriz) por lo que era necesario ingresar la mayor cantidad de gastos posible. La solución era sencilla y creo que a todos les sería intuitivo, si tenés n cantidad de tickets de gastos y necesitás ingresar en el sistema la mayor cantidad de dinero posible; se ordenan de mayor a menor y se van ingresando así los datos.

Esto en la informática, se trata de un heap (con una estructura diferente claro está), que se trata de tener una estructura de tal forma que siempre al extraer un elemento, obtengamos el de mayor (o menor) valor del mismo.

Competencia

Hace poco me encontraba viendo Canal 13 (cosa rara ya que no miro mucha tv), más particularmente un programa de juegos / competencias llamado “A todo o nada” donde asiste gente a jugar a diversos juegos con la posibilidad de ganar premios. El juego que me llamó la atención fue el siguiente:

Básicamente el juego consiste en el que el presentador hace una pregunta cuya respuesta es un valor numérico, cuando el jugador da una respuesta, éste le responde si la respuesta correcta es de menor o mayor valor al que el jugador dio. Lo que me sorprendió de ver, es la completa arbitrariedad de los jugadores al momento de decidir que número decir, es decir no poseían ninguna estrategia.

Existe en informática un algoritmo cuya adaptación significaría una excelente estrategia a este juego, el mismo es la Búsqueda Binaria. La misma establece que dado un conjunto ordenado de valores, siempre busquemos en la mitad del conjunto. Luego dependiendo si el valor que elegimos es mayor o menor (si es igual la búsqueda concluye) como conjunto elegimos el conjunto superior o inferior. Dicho en criollo, supongamos que nos preguntan lo siguiente: ¿De 0 a 100, cuantas bolitas hay en este frasco? Nuestra primera respuesta será 50 ya que el conjunto de opciones es de 0-100. Si nos dice que es menos nuestro nuevo conjunto de opciones será de 0-50, si es más será de 50-100 y así sucesivamente hasta que encontremos el valor deseado.

Con esta estrategia se nos facilita la elección de un número en base a nuestra respuesta previa.

Si no se entiende, un ejemplo completo:

Ejemplo Completo

Como vemos, si bien son dos ejemplos sencillos, son situaciones cotidianas donde podemos utilizar estrategias utilizadas en la informática u otra rama. Con esto se rompe un poco la “misticidad” de los algoritmos y se descubre que realmente son sucesos ordenados de pasos sencillos; y que su funcionamiento son fácilmente relacionables con situaciones cotidianas ( o no tanto) de la vida real.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *