►► Las torres de Hanoi Cuenta la leyenda que cuando los 64 discos de oro pasen de una torre a la otra, llegará el fin del mundo. Leyenda o no, en este vídeo cuento cómo se puede expresar de forma recursiva el algoritmo de las Torres de Hanoi. Código próximamente. ► Vídeo: kzbin.info/www/bejne/oprPc3qslrSGr5o
@VideogamesAsArt4 жыл бұрын
me encanta que tu comentario sea recursivo. Le hago click y vuelvo a tener el mismo comentario con el mismo enlace.
@quimmonzo3 жыл бұрын
Después de buscar un rato por internet, este video me ha iluminado en pocos segundos. Gracias
@5THEALEX4583 жыл бұрын
creo que te has equivocado en el pseudocodigo, porque según te entendí, las pilas son 3 , donde las llamas o,d,a así que deducí que a=auxiliar, d=destino y o=origen. Ahora bien, dónde creo que has metido la gamba, cuando vas a explicar el caso base, pones a.apilar(o.desapilar()) cuando en realidad creo que querrías decir d.apilar(o.desapilar()) Un cordial saludo y muchas gracias por toda la explicación, me ayudó mucho!!!
@pahoolk2 жыл бұрын
Vine buscando cómo construir mi propia función _printf (aún no tengo npi de por dónde empezar) y me hiciste recordar mi infancia en un museo interactivo para niños donde había unas torres de hannoi gigantes con discos de goma, entretenido estuve más de 1 hora tratando de resolver el problema, iba con una de mis tías master en informática y dijo: "este niño va a ser un buen ingeniero" y bueno aquí estamos tratando de serlo 😅
@Poliformado9 жыл бұрын
Una explicación corta, clara, concisa y divertida. Es divertido ver y oír una explicación con el chiste de los memes, se hace muy ameno y la historia final de por qué se llama Torre de Hanoi, cuanto menos resulta interesante de saber.
@Alexander-lg2do4 жыл бұрын
Lo has explicado súper sencillo y entendible! Amé el vídeo
@diegom02098 жыл бұрын
No me queda muy claro, si A es auxiliar, ¿por qué el texto dice que hay que poner en A y la voz dice "poner en Destino"?
@yadyguitar9 жыл бұрын
Muchisimas gracias! No pensé que de verdad lo ibas a publicar tan rápido! Hahahah en serio gracias! Saludos!
@danielchisica64868 жыл бұрын
¿Para que necesitabas asimilar este concepto?
@yadyguitar8 жыл бұрын
Daniel Chísica fue ya hace tiempo, una... para entender la recursivisad y otra, porque mi maestro de programación me pidió desarrollar este algoritmo
@danielchisica64868 жыл бұрын
Te puedo pedir algunos consejos en base a tu experiencia, es que este semestre comienzo la asignatura de Programación Avanzada
@yadyguitar8 жыл бұрын
claro! yadyguitar@yahoo.es
@Alejopal5 жыл бұрын
Muy buen video, me ha grada la forma como explicas y las notas graciosas que pones.
@carolinarodriguezgalicia47976 жыл бұрын
Muy buena explicación crack❤
@camilolopez19365 жыл бұрын
Excelente video, entendí a nivel teórico cómo se resuelve el ejercicio. Muchas gracias ^^
@nasserelbacha34583 жыл бұрын
No sabía que ibai daba clases de programación
@ignaciodelgado998 жыл бұрын
Muy interesante y explicativo. Like
@marcozini89154 жыл бұрын
Propongo una solución simple, simple y sobre todo mnemotécnica. La regla es la siguiente: - en un movimiento mueva el disco más pequeño, de forma circular (apuestas: a -> b -> c -> b, -> a, etc.), - en el siguiente, debe realizar la única operación posible, - en el siguiente movimiento, mueva el disco más pequeño nuevamente de forma circular, - en el siguiente movimiento, se ve obligado a realizar la única operación posible y así sucesivamente, hasta que todos los discos hayan sido traídos de la estaca "a" a la estaca de destino final "c". Esta regla también corrige el primer movimiento para discos impares, ya que el primer movimiento del disco más pequeño se repite desde a -> b y desde b -> c. Espero haber sido claro, gracias y disfruten.
@perezsaul Жыл бұрын
GRACIASS, toma tu merecido like y me suscribo
@spike_wav4 жыл бұрын
buen doble tempo , ya debes ir a batallar en la redbull sobrado le ganas a khan
@albertvolcom7305 жыл бұрын
Espera espera espera. También enseñas matemáticas? Esto se ha puesto más interesante de lo que creía
@cesarmaat5 жыл бұрын
Aprendi mas historia :'vv
@angiecruz58965 жыл бұрын
muy bien,me sirvio mucho a resolver mi tarea
@davidhernandeze9 жыл бұрын
Respira un poco, algunos no procesamos tan rápido
@gamingprooriginaljesse82647 жыл бұрын
ami me parece bien explicado gracias :)
@Pivex109 жыл бұрын
Genial vídeo. Gracias.
@DevD_82 Жыл бұрын
Quién diría que ibai explicara temas de programación, un abrazo maquina!
@gvetri189 жыл бұрын
Los memes son lo mejor jajaja.
@acostamartin19975 жыл бұрын
Alguien puede explicarme en qué caso práctico uno programaría usando recursividad??
@rockarlandy5 жыл бұрын
en un metodo iterativo es más optimo que el uso de ciclos que tienen los lenguajes de programacion por defecto
@AndreuPinel2 жыл бұрын
La recursividad se utiliza cuando uno no sabe el nº de capas que tiene que recorrer el algoritmo. Un ejemplo muy sencillo es contar los elementos de una estructura fractal irregular, como podría ser un árbol o la estructura de un disco duro (hojas - ficheros, ramas - carpetas, subramas - subcarpetas). Imaginemos que tú quisieras contar el nº de hojas de cualquier arbol del mundo, y de entrada tú no vas a saber cuántas ramas/sub-ramas tiene cada árbol, sólo sabes que todos tienen un tronco; podrías hacer algo tal como: resultado = Funcion_Contar_Hojas(tronco) // 1ª llamada Funcion_Contar_Hojas(rama) { resultado = 0 foreach (hoja in rama) { resultado = resultado + 1 } foreach (subrama in rama) { resultado = resultado + Funcion_Contar_Hojas(subrama) // recursividad. } return (resultado) } En aquellos problemas en los que de entrada tú sabes el nº de bifurcaciones (como en Hanoi, que siempre son 3 torres, o en factoriales, que es una única torre "de bajada"), la recursividad no es la mejor solución para programar por el alto consumo de recursos, en su lugar se utiliza (o debería utilizar) la iteración. Sin embargo, a pesar de que en programación en el mundo real son dos ejemplos en los que la recursividad sería considerada una "mala praxis", son ejemplos que ayudan a entender el concepto de forma muy sencilla. pseudo-código para el problema del factorial en iteración Funcion_Factorial(numero) // se va a presuponer que el parámetro "numero" siempre va a ser un nº natural (es decir, entero y positivo) { resultado = 1 while (numero > 1) { resultado = resultado * numero numero = numero - 1 } return (resultado) }
@acostamartin19972 жыл бұрын
@@AndreuPinel genial! Muchas gracias por la explicación muy completa
@HeyChobe5 жыл бұрын
Gracias es justo la explicación del algoritmo que necesitaba
@julioc.rojasa.37578 жыл бұрын
Muy bueno el video me ayudó de mucho
@Martin-cu9hw5 жыл бұрын
Bastante Interesante !! =)
@ax3l038 жыл бұрын
una duda, en el pseudocódigo dice que si n=1 se debe de mover de O a A; A es el destino, cierto? buen vídeo, por cierto. :)
@makigas8 жыл бұрын
+Axel Cervantes No, el destino es D. A es Auxiliar. Veo en el subtitulado que no lo menciono. Debería poner alguna nota cuando pueda para que no quede duda.
@AndreuPinel2 жыл бұрын
@@makigas El caso es que aunque por voz lo explicas bien, en la imagen está mal dado que aparece A y no D, tanto en el "if" como en el "else" (revisa el tramo del vídeo de 3:15 a 3:35 porque en ambas partes de la condición, el movimiento de un único disco es errónea, también en la traducción a pseudo-código). Además, ya como puntilla, añado que la condición la has diseñado como "if (n=1) { a } else { b }", lo cuál entraría en una recursividad incontrolada si en la primera llamada n=0 (o negativo, aunque no tenga sentido). En su lugar yo cambiaría la condición por "if (n>1) { b } else { a }" (se sobreentiende que los métodos apilar/desapilar tienen controlado la casuística de que no haya discos en la torre origen; aunque en cualquier caso no entraría en una recursividad infinita, algo que siempre es peor que un error incontrolado). En realidad la mejor solución para mí siempre ha sido: "if (n>0) { b }", sin "else", porque es más limpio y no hay riesgo de error incontrolado en apilar/desapilar, pero a cambio sería ligeramente menos óptimo por entrar dos veces más en el algoritmo cada vez que se llega por n=1 (aunque en ambas es "entrar, no hacer nada, salir", lo cuál sería imperceptible). Mover_Varios_Discos (NumDiscos, TO, TD, TA) { if (NumDiscos > 0) { Mover_Varios_Discos(NumDiscos - 1, TO, TA, TD) Mover_Un_Disco(TO, TD) Mover_Varios_Discos(NumDiscos - 1, TA, TD, TO) } } A pesar de mis observaciones (con intención constructiva) aclarar que me ha gustado mucho el vídeo (Like +1), incluso te animo a añadirle dos partes más: 1) Mostrar porque, a diferencia de con el algoritmo de factorial (donde el recursivo y el iterativo son prácticamente idénticos), el algoritmo recursivo de las torres de Hanoi queda tan elegante. Explicar que esto es dado a que en iterativo el algoritmo tiene que controlar - o encontrar - cuáles son los discos superiores de cada torre, lo que hace que la "lectura humana" del algoritmo sea más difícil ya que uno tiene que saber el patrón de movimientos de la solución. En cambio, con el recursivo la única visión que uno necesita es la global de los 3 movimientos * mover todos los discos menos uno de Origen a Auxiliar * mover el disco restante de Origen a Destino * mover los discos de Auxiliar a Destino. 2) Mostrar porque en el algoritmo recursivo no funciona la visión global de (aunque a priori parezca más óptimo ya que no habría tanta recursividad) * mover disco pequeño de Origen a Auxiliar * mover en recursivo el bloque de discos restantes de Origen a Destino * mover disco pequeño de Auxiliar a Destino
@troncarl8 жыл бұрын
Me habeis salvado el culo tio,este video es la mera hostia
@xxjjstillxx87094 жыл бұрын
no entendi, el codigo siempre se va a meter en "hanoi" y no va a pasar a las siguientes lineas de codigo
@diegonanamejia15104 жыл бұрын
hasta que llegue al caso base cosa que todas las metidas de hanoi que hubieron detras se resuelven
@lunita69065 жыл бұрын
porque n-1?
@ngry-k73814 жыл бұрын
ni siquiera estoy viendo esto en la u pero ya lo entendi xD bueno almenos en teoria.
@EdukalCancunMexico7 жыл бұрын
Interesante solucion
@zeidadelosreyesrodriguezme97298 жыл бұрын
Muy bueno el video jajaja
@maxiivallejos6227 жыл бұрын
que wen video!! :')
@pjaramayoful7 жыл бұрын
Shiiuuffff que talento para hablar tan rápido y pronunciar bien.
@carlosprocrastianndo5 жыл бұрын
buen video pero el pseudocodigo no esta bien igual gracias ya con eso ya lo pude hacer yo like
@julioverne38259 жыл бұрын
Brillante.
@j0kers8144 жыл бұрын
Graciaas !
@horseskull915 жыл бұрын
por que "n-1"?
@kevin-ff7wz4 жыл бұрын
no viste el ejemplo de las torres de hanoi? primero movio los elementos de arriba -1, ese -1 es el elemente mas grande.
@luisdavidcastrocoronado41079 жыл бұрын
Te Felicito
@primc69627 жыл бұрын
Eres un Crrrrack
@laniakea15013 жыл бұрын
aiuda estoy procrastinando :v
@TioTIZODioxdelaTiza9 жыл бұрын
Muy interesante :D
@DrJonesJazzMore4 жыл бұрын
buena alexelcapo
@Chemaclass9 жыл бұрын
Fabuloso :)
@mattiasezekielsayyago2 жыл бұрын
Interesante. +1like+1sub
@anslara898 жыл бұрын
hey habla mas despacio, no todos cpatamos todo a la velicdad de la luz,...me gusta tu método pero no entendemos a esa velocidad....
@ClintEsteMadera10 ай бұрын
Bajale la velocidad al video, cráneo!
@hoswardvilloria77054 жыл бұрын
en 0.25x para entender que carajos es lo que está explicando....
@BreinerFF-14 жыл бұрын
👌
@facusalmini65133 жыл бұрын
Ibai, eres tu?
@williammoran39215 жыл бұрын
prefiero hacerlo manualmente
@danielgavirialopez42686 ай бұрын
3*3 = 9... 9 - 1 = 8 y no 7 XD
@juanfelipelinares77214 жыл бұрын
no entediii
@brunoeduardovigoparedes4808 Жыл бұрын
Pero no resolviste la torre de Hanoi con los 4 discos 😡
@jose_barreto5 жыл бұрын
No se te entiende Tío ! lástima...
@makigas5 жыл бұрын
No pasa nada, he intentado mejorar un poco la manera de narrar desde entonces para hablar más despacio. Igual debería regrabar vídeos como estos en algún momento.
@calatiaszone74222 жыл бұрын
Suena como a ibai xD
@makigas2 жыл бұрын
Curioso, muchas veces han dicho que mi voz es como la de alexelcapo, pero lo de ibai es más nuevo.
@jeanb71583 жыл бұрын
no me vengas con cuentos
@soyio53833 жыл бұрын
wtf parece ibai
@juankovac55572 жыл бұрын
la basura de pagina que pusiste para el juego no anda
@makigas2 жыл бұрын
Bro el vídeo tiene varios años, lo reviso por si hubiese muerto la web