Saltar al contenido
Deberes escolares » Charlas educativas » Tu cerebro puede hacer algoritmos – David J. Malan – Charla TED-Ed

Tu cerebro puede hacer algoritmos – David J. Malan – Charla TED-Ed

Charla «Tu cerebro puede hacer algoritmos – David J. Malan» de TED-Ed en español.

Vea lección completa en: http://ed.ted.com/lessons/your-brain-can-solve-algorithms-david-j-malan

Un algoritmo es un método matemático para solucionar problemas grandes y chicos. Aun cuando las computadoras realizan algoritmos continuamente, los humanos también pueden utilizar algoritmos para solucionar problemas. David J. Malan explica cómo los algoritmos pueden ser utilizados en situaciones aparentemente simples y complicadas.

Leeción de David J. Malan, animación de enjoyanimation.

  • Autor/a de la charla: David Malan
  • Fecha de grabación: 2013-05-20
  • Fecha de publicación: 2019-02-12
  • Duración de «Tu cerebro puede hacer algoritmos – David J. Malan»: 282 segundos

 

Traducción de «Tu cerebro puede hacer algoritmos – David J. Malan» en español.

¿Qué es un algoritmo? En informática, un algoritmo es una serie de instrucciones para solucionar algún problema, paso a paso.

Típicamente, los algoritmos son ejecutados exclusivamente por computadoras, pero los humanos también tenemos algoritmos.

Por ejemplo, ¿cómo harías para contar el número de personas en una habitación? Bueno, si tú eres como yo, probablemente señales a cada persona, de una por una, y cuentas desde 0: 1, 2, 3, 4 y así sucesivamente.

Bueno, eso es un algoritmo.

De hecho, tratemos de expresarlo un poco más formalmente en pseudocódigo, es como la sintaxis en el idioma, que se asemeja a un lenguaje de programación.

Fijemos «n» igual a 0.

Para cada persona en la habitación fijemos n = n + 1.

¿Cómo interpretamos este pseudocódigo? Bueno, la línea 1 declara, por así decirlo, una variable llamada «n» e inicia su valor a cero.

Esto solo significa que al principio de nuestro algoritmo, la cosa con la que estamos contando tiene un valor de cero.

Después de todo, antes de empezar a contar, no habíamos contado nada.

Llamar a esta variable «n» es solo una convención.

Pude haberla llamado prácticamente de cualquier forma.

Ahora, la línea 2 indica el inicio de un ciclo, una secuencia de pasos que se repetirán un cierto número de veces.

Entonces, en nuestro ejemplo, el paso que tomamos es contar a las personas en la habitación.

Debajo de la línea 2 está la línea 3, la cual describe exactamente cómo vamos a ir contando.

La sangría implica que es la línea 3 la que vamos a repetir.

Entonces, lo que el pseudocódigo dice es que después de empezar en cero, para cada persona en la habitación, incrementaremos el valor de «n» en 1.

Ahora, ¿está correcto este algoritmo? Bueno, pongámoslo a prueba.

¿Funciona si hay dos personas en la habitación? Veamos.

En la línea 1, iniciamos el valor de «n» a cero.

Para cada una de las dos personas, incrementamos el valor de «n» en 1.

Entonces, en el primer viaje a través del ciclo, actualizamos «n» de cero a 1, en el segundo viaje por el mismo ciclo, actualizamos «n» de 1 a 2.

Entonces, para los fines de este algoritmo,»n» es igual a 2, lo que en efecto coincide con el número de personas que hay en la habitación.

Hasta ahora, todo bien.

¿Qué tal un caso atípico? Supón que hay cero personas en la habitación, sin incluirme a mí porque yo hago el conteo.

En la línea 1, de nuevo iniciamos el valor de «n» a cero.

Pero esta vez, la línea 3 no se ejecuta porque no hay personas en la habitación, así que, «n» continúa siendo cero, lo cual efectivamente coincide con el número de personas en la habitación.

Muy simple, ¿cierto? Pero, contar personas de una por una es muy ineficiente ¿no? Seguro, podemos hacerlo mejor.

¿Por qué no contamos de dos personas a la vez? En vez de contar 1, 2, 3, 4, 5, 6, 7, 8, y así sucesivamente, ¿por qué no contamos 2, 4, 6, 8, y así sucesivamente? Incluso suena más rápido, y de seguro lo es.

Expresemos esta optimización en pseudocódigo.

Fijemos «n» igual a cero.

Para cada par de personas en la habitación, hagamos n = n + 2.

Un cambio muy sencillo ¿cierto? En vez de contar personas de una por una, vamos a contar dos a la vez.

Por lo tanto, este algoritmo es el doble de rápido.

Pero, ¿es correcto? Veamos.

¿Funciona si hay dos personas en la habitación? En la línea 1, iniciamos el valor de «n» a cero.

Para este par de personas, incrementamos el valor de «n» en 2.

Y así, para los fines de este algoritmo el valor de «n» es 2, Que es efectivamente el número de personas en la habitación.

Ahora supongamos que hay cero personas en la habitación.

En la línea 1, iniciamos el valor de «n» a cero.

Como antes, la línea 3 no se ejecuta ya que no hay ningún par de personas en la habitación, por lo tanto, «n» continúa siendo cero, lo que en efecto coincide con el número de personas en la habitación.

Pero, ¿qué pasa si hay 3 personas en la habitación? ¿Cómo le va a este algoritmo? Veamos.

En la línea 1, iniciamos el valor de «n» a cero.

Para un par de estas personas, incrementamos el valor de «n» en 2, y después ¿qué? No hay otro par completo de personas en la habitación, así que la línea 2 ya no aplica.

Entonces, para los fines de este algoritmo, «n» es otra vez 2, lo cual no es correcto.

De hecho, este algoritmo tiene un «bug» porque contiene un error.

Tratemos otra vez con pseudocódigo nuevo.

Fijemos «n» igual a cero.

Para cada par de personas en la habitación, haz n = n + 2.

Si una persona queda sin par, haz n = n + 1.

Para solucionar este problema en particular, hemos insertado en la línea 4 una condición, también llamada como ramificación, que solo se ejecuta si hay una persona que no tiene pareja.

Ahora, sin importar si hay 1 o 3 o cualquier número impar de personas en la habitación, este algoritmo los contará.

¿Lo podremos mejorar? Bueno, podríamos contar de 3, o de 4, hasta de 5 o 10, pero se volvería un poco difícil de direccionar.

Al final de cuentas, ya sea que los ejecuten computadoras o humanos, los algoritmos solo son una serie de instrucciones que solucionan problemas.

Estos solo fueron tres.

¿Qué problema solucionarías usando un algoritmo?

https://www.ted.com/talks/david_j_malan_what_s_an_algorithm/

 

Deja una respuesta

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