Betazeta Networks: BelelúBólidoCHWFayerWayerFW BrasilFerpleiLUPANiubieSaborizanteSabrosiaVeoVerdeWayerlessZimio Versión Movil

Temas Calientes

Algoritmos de ordenamiento con baile húngaro, rumano y gitano

rumana

Hay muchas cosas que tenemos tan incorporadas, tan automatizadas, que las creemos obvias. Si, en cambio, tuviésemos que explicarle a alguien cómo se suma, nos daríamos cuenta de que sumar no es una habilidad innata. Hay que ir más atrás y contar dos conjuntos de piedritas para saber cuánto suma el conjunto completo. El mismo hecho de contarlas tampoco es innato, hay que aprender la secuencia e ir identificando cada piedrita con un número. Aprender a contar piedritas es el algoritmo más básico que se aprende. A medida que ganamos experiencia con él, lo usamos para sumar piedritas, restar piedritas. Algunos terminan tirando piedritas en el estadio y no avanzan mucho más.

En esta nota, veremos algunos algoritmos bastante más elaborados explicados con danza húngara, rumana y gitana. Eso no se ve todos los días.

Las calculadoras también siguen algoritmos, y actualmente nadie se pregunta qué hace la maquinita si preguntamos por la raíz cúbica de 100. Por dentro, como adivinará el lector, se sigue un algoritmo que converge al resultado. Pasa lo mismo con los lenguajes de programación, que traen esas y muchas otras funciones ya incorporadas y casi nadie se pregunta cómo lo hacen. Sólo buscamos en el índice de funciones a ver si ya existe. ¿Para qué, si alguien ya lo inventó?

Bueno, la verdad es que cada cierto tiempo nacen nuevos lenguajes de programación, o nuevos compiladores para los que ya existen. La gente detrás de esos inventos debe replantearse la manera más eficiente de sumar, transponer, invertir y diagonalizar matrices, maximizar y minimizar y muchas otras tareas. Es como reinventar la matemática de cero para enseñársela al autómata y hacerlo trabajar rápido, con pocos recursos, estabilidad y precisión.

Uno de los algoritmos más estudiados, por la multiplicidad de soluciones y el comportamiento variable en relación a la cantidad de elementos de un conjunto, es el algoritmo de ordenamiento. Algunos son muy rápidos en conjuntos pequeños, pero se vuelven lentísimos conforme aumenta la población. Otros sólo tienen sentido cuando se trata de conjuntos grandes pero son muy aparatosos para ordenar 5 elementos.

En el sitio I, Programmer, publicaron ejemplos de cómo funcionan los algoritmos de ordenamiento usando danzas típicas de Europa del Este para ilustrarlos. Primero el más simple, el Bubble Sort. Se recorre el conjunto intercambiando de posición los elementos que no están en el orden correcto. El algoritmo “acompaña” al último elemento que cambió a una posición más alta, hasta encontrar un elemento mayor para a éste, y así va quedándose con el mayor hasta alcanzar el final del conjunto. Luego empieza de nuevo y, si al terminar el recorrido no hay modificaciones, entonces ha terminado.

YouTube Preview Image

Segundo, Shell Sort, es como el anterior pero compara individuos no necesariamente adyacentes.

YouTube Preview Image

El Insert Sort opera en principio como el Bubble Sort, pero la secuencia no acompaña al mayor elemento que ha cambiado de posición sino que lo deja en pausa y primero comprueba si el elemento que ha descendido una posición debe seguir descendiendo.  Cuando termina esa comprobación vuelve al elemento mayor que había dejado en pausa. El siguiente es un baile rumano, algo más lineal que los húngaros.

YouTube Preview Image

Finalmente, el Select Sort toma un elemento que será el protagonista y lo va comparando con el resto del conjunto. Si encuentra un elemento menor, intercambian posiciones y el menor pasa a ser el protagonista. Si un protagonista recorre todo el conjunto sin encontrar ningún número mayor, significa que está en la posición correcta y el protagonismo pasa al siguiente. Este algoritmo no es más caótico que los otros, pero el baile gitano elegido para representarlo si es bien desordenado:

YouTube Preview Image

Faltaron los dos algoritmos más eficientes para conjuntos grantes: el Quick Sort, que usa un pivote para subdividir el conjunto y ordenar en paralelo, y el Merge Sort de John Von Neumann, que también divide para hacer subrutinas de ordenamiento en paralelo.  Confiamos en que los lectores lo intentarán en su próximo cumpleaños.

Por mientras, los integrantes del instituto Syntax Error de FayerWayer (son los de la sala del fondo) están trabajando para expandir este tipo de demostraciones y así utilizar escenas de la vida cotidiana para acercar a la gente común a la ciencia. Según otras interpretaciones, sería una manera de utilizar la ciencia para acercar la vida cotidiana a los informáticos.

En nuestros próximos proyectos, usaremos el mosh pit de un concierto de Anthrax para representar el movimiento browniano, el juego “a parir la chancha” para ejemplificar la fisión atómica y las teleseries chilenas para mostrar la función str_replace, porque con suerte le cambian nombre a los personajes antes de copiar un libreto.

Link: Sorting algorithms as dances (I, Programmer)

36 Comentarios

Algoritmos de ordenamiento con baile húngaro, rumano y gitano

Thumb up 0 Thumb down 0 avatar_Andrés Andrés dijo hace 1 año

Las húngaras, rumanas, checas y todas esas "niñas" de Europa oriental LA LLEVAN TODO EL RAAATO! jajaja no sé si me entienden ;)

Responder
Thumb up 0 Thumb down 0 avatar_Abu Abdallah Muḥammad ibn Mūsā al-Jwārizmī Abu Abdallah Muḥammad ibn Mūsā al-Jwārizmī dijo hace 1 año

Ahora me siento mas NERD.

Thumb up 0 Thumb down 0 avatar_Programador Programador dijo hace 1 año

Me dieron ganas de programar y escuchar radiokiller e inna mientras lo hago.

Thumb up 0 Thumb down 0 avatar_don felipe don felipe dijo hace 1 año

Yo no me siento nerd por que no entendi nada de lo que leí y ví xD!!! ajajjajajaja
esa es la magia de estudiar diseño.... no entender matematicas xD

Thumb up 0 Thumb down 0 avatar_bpbrainiak bpbrainiak dijo hace 1 año

Wn... si hubiera tenido eso en estructura de datos, me hubiera costado menos entenderlo, jajajaj

Responder
Thumb up 0 Thumb down 0 avatar_Lucho Lucho dijo hace 1 año

A mí me enseñaron algoritmos de ordenamiento en "Algoritmos". En "Estructuras de datos" me enseñaron estructuras de datos.

Thumb up 0 Thumb down 0 avatar_Gee_xp Gee_xp dijo hace 1 año

jajajaja.... lo mismo digo yo...

Thumb up 0 Thumb down 0 avatar_asdfasdf asdfasdf dijo hace 1 año

en mi curso nos hicieron pasar adelante y ordenarnos quicksortmente, pero sin baile :( igual aprendi :P

Thumb up 0 Thumb down 0 avatar_Rapido Rapido dijo hace 1 año

@Lucho ... a mi me lo enseñaron en Algoritmos y Estructuras de Datos O:

Thumb up 0 Thumb down 0 avatar_info info dijo hace 1 año

y creia que ya habia visto todo .... XD

Responder
Thumb up 0 Thumb down 0 avatar_ZeroGyo ZeroGyo dijo hace 1 año

la kgo jamas espere encontrarme con algo como esto....

Responder
Thumb up 0 Thumb down 0 avatar_Gee_xp Gee_xp dijo hace 1 año

Si en el ramo de Estructura de Datos me hubieran mostrado estos videos para explicarme los métodos de ordenamiento, me habria ahorrado unas cuantas horas de lectura para entenderlos...

Responder
Thumb up 0 Thumb down 0 avatar_Fernando Fernando dijo hace 1 año

Me hubiese gustado ver un quicksort !

Responder
Thumb up 0 Thumb down 0 avatar_Gee_xp Gee_xp dijo hace 1 año

o un Merge-sort...

Thumb up 0 Thumb down 0 avatar_Lucho Lucho dijo hace 1 año

O un random sort http://en.wikipedia.org/wiki/Random_sort

Thumb up 0 Thumb down 0 avatar_asdfasdf asdfasdf dijo hace 1 año

mi favorito hubiera sido un poco mas fome: intelligent design sort http://www.dangermouse.net/esoteric/intelligentdesignsort.html

Thumb up 0 Thumb down 0 avatar_Lucho Lucho dijo hace 1 año

Ahora me doy cuenta de que el random sort es igual al juego de las sillas musicales, en que se vuelve a empezar si los jugadores no quedan ordenados.

Thumb up 0 Thumb down 0 avatar_miyamoto miyamoto dijo hace 1 año

y jugar el Wii sport re-sort

Thumb up 0 Thumb down 0 avatar_valkot valkot dijo hace 1 año

el costo asociado del bublesort en el peor y mejor de los casos es N^2 en todos los algoritmos lo que interesa es el tiempo de ejecucion y la cantidad de memoria que estos ocuparan para eso se usan cotas para determinar cuando terminara
en general los mejores en tiempo so los NlogN los del principio divide y venceras como el QuickSort

xD

Responder
Thumb up 0 Thumb down 0 avatar_jhunk-fless jhunk-fless dijo hace 1 año

ya y?.. querias demostrar conocimiento?, la respuesta a una pregunta que nunca se hizo, cuéntanos mas.....

Thumb up 0 Thumb down 0 avatar_ronson ronson dijo hace 1 año

cool bro!
tell us moar!

Thumb up 0 Thumb down 0 avatar_valkot valkot dijo hace 1 año

aps pero el QuickSort no es el mejor siempre porque es inestable ,es decir cuando hay numeros repetidos este interactua con estos en ves de omitirlos y tambien la degeneracion como una piramide inclinada cuando los datos estan ordenados xD

Responder
Thumb up 0 Thumb down 0 avatar_CHAPARR0N CHAPARR0N dijo hace 1 año

No soy programador, pero siempre quise entender a los algoritmos.
Gracias por este tipo de demostraciones

Responder
Thumb up 0 Thumb down 0 avatar_Lucho Lucho dijo hace 1 año

http://www.sorting-algorithms.com/

Cuidado que a mí no me funcionó en Firefox pero sí en IE.

Thumb up 0 Thumb down 0 avatar_Gabriel Gabriel dijo hace 1 año

con esto no entiendes el concepto de algoritmos, solo entiendes como ordenar por medio de un algoritmo ya conocido (bubblesort, inserción, etc).

Thumb up 0 Thumb down 0 avatar_Andrea Andrea dijo hace 1 año

"sería una manera de utilizar la ciencia para acercar la vida cotidiana a los informáticos."
Joajojoa, frase notable :D
Excelente forma de presentar los algoritmos, me encantan estos esfuerzos que permiten demostrar que el arte y la ciencia no están tan lejos

Responder
Thumb up 0 Thumb down 0 avatar_ronson ronson dijo hace 1 año

joaojajoa
no lo habia pensao... en too caso, yo ni voy al teatro.. menos a ver bailes (si hay algo que me enferma de aburrimiento es eso de danza o cosas asi.... cosa de gustos)
me siento como homero aompañando a lisa en sus cosas xD

Thumb up 0 Thumb down 0 avatar_mariano mariano dijo hace 1 año

Aguante el HeapSort gente!! hubiera estado bueno verlo en los videos

Responder
Thumb up 0 Thumb down 0 avatar_Alana_Mohana Alana_Mohana dijo hace 1 año

Suuuper los videos..... lo que se puede encontrar en internet jejeej

Responder
Thumb up 0 Thumb down 0 avatar_AlexDeLarge AlexDeLarge dijo hace 1 año

Buenisimos los algoritmos.
Y Kusturika?

Responder
Thumb up 0 Thumb down 0 avatar_Lucas Lucas dijo hace 1 año

jaja, muy bueno la verdad....una lastima que ya lo estudié pero nunca viene mal recordarlos, ademas así se los entiende mas facil!!!....muy buena idea!! ;)

Responder
Thumb up 0 Thumb down 0 avatar_Miguel Gutierrez Miguel Gutierrez dijo hace 1 año

JAJAJ interesante y divertido... me hubiese encantado ver algo así cuando nos cabeceabamos tratando de entender a esa maldita burbuja.. (Que después tanto simplifica tu vida xD)

Responder
Thumb up 0 Thumb down 0 avatar_Leonardo Leonardo dijo hace 1 año

Se habrían demorado su resto si hubiesen bailado el stupid-sort, que es similar a la burbuja, pero más weona...

Responder
Thumb up 0 Thumb down 0 avatar_Alejandro Alejandro dijo hace 1 año

jajaja me hizo recordar que el profe una vez nos hizo hacer lo mismo, y puede que el ordenamiento en este video no quede muy claro, pero la aparicion final es WTF!!!!! ajajajajaja

http://www.youtube.com/watch?v=uKmHxYEzcOY

Responder
Thumb up 0 Thumb down 0 avatar_Benjamin Benjamin dijo hace 1 año

Por ahi decían que el Quick Sort no era el ordenamiento mas rapido...o que es debido a su inestabilidad. Mis queridos amigos, se equivocan.
En el caso promedio Quick-Sort es mas rapido que su gran rival Merge-Sort, sin embargo en el peor caso la cosa es al revés. Pero el peor caso para un Quick-Sort es que el arreglo venga ya ordenado ¿poco probable no? (en ese caso correria con un orden de complejidad O(n^2) y el MS con un orden de complejidad O(nlogn)).
Por eso en las competencias de programación cuando hay que ordenar un arreglo extenso se ocupa Quick-Sort.
Saludos

Responder
Thumb up 0 Thumb down 0 avatar_ibp.zippy ibp.zippy dijo hace 1 año

A medida que ganamos experiencia con él, lo usamos para sumar piedritas, restar piedritas. Algunos terminan tirando piedritas en el estadio y no avanzan mucho más.


En nuestros próximos proyectos, usaremos el mosh pit de un concierto de Anthrax para representar el movimiento browniano, el juego “a parir la chancha” para ejemplificar la fisión atómica y las teleseries chilenas para mostrar la función str_replace, porque con suerte le cambian nombre a los personajes antes de copiar un libreto.


FFFFFWFFTW (Felipe F. Figueroa Fagandini en Fayerwayer FFTW)

volviendo al artículo: Esto me va a servir también :D .... Eso.

Responder

Deja tu Comentario

La opción de comentar está abierta a todos los usuarios, pero te pedimos por favor mantenerte dentro del tema del artículo y no publicar comentarios ofensivos o publicidad basura. Nos reservamos el derecho de eliminar cualquier comentario que no cumpla estas reglas.

Para que aparezca tu foto en vez del icono genérico en tu comentario, el email con el que comentas debe estar inscrito en Gravatar.