Programación Dinámica | Memoización | Explicado Paso a Paso

แชร์
ฝัง
  • เผยแพร่เมื่อ 27 ก.ค. 2024
  • La programación Dinámica es un método para optimizar algoritmos utilizando recursividad, divide y vencerás y subproblemas superpuestos para incrementar la velocidad de ejecución de diferentes algoritmos.
    Puede usarse con Memoización, la cuál apluca a algoritmos recursivos, o con Tabulación para algoritmos iterativos.
    En este video pondremos varios ejemplos de soluciones como la secuencia Fibonacci y la optimización de ventas de varillas. Utilizando Python como lenguaje de ejemplo, aunque se puede aplicar a cualquier lenguaje de programación, Java, C#, C++, .NET, etc.
    Contenido:
    0:00 Intro
    1:19 Qué es Programación Dinámica
    3:19 Ejemplo de problema de optimización
    4:36 Pasos de Programación Dinámica
    5:36 Pasos en el ejemplo
    8:10 Ejemplo: 1. Describir Estructura
    10:06 Ejemplo: 2. Definir Valor Óptimo
    11:52 Ejemplo: 3. Calcular Valor Optimo con DP
    12:42 Memoización
    14:28 Tabulación
    16:32 Comparación de Velocidad
    17:00 Ejemplo: 4. Calcular Solución Óptima
    Referencias:
    - Visualización: visualgo.net/en/recursion?sli...
    - Explicación (Inglés): www.geeksforgeeks.org/overlap...
    - Ejercicios: www.hackerrank.com/domains/al...
    Libros recomendados:
    kit.co/schiob
    Apóyame con una pizza:
    www.buymeacoffee.com/schiob
    Para contenido atrás de cámara y fotos de comida sígueme en:
    / schiob
    / schiob
    github.com/schiob

ความคิดเห็น • 48

  • @AleTecnstuff
    @AleTecnstuff 8 วันที่ผ่านมา

    Muchísimas gracias, me ha ayudado mucho tu vídeo a repasar conceptos que tenía ya muy olvidados... Y muy bien explicado!!!

  • @akookie
    @akookie 8 หลายเดือนก่อน +6

    acabo de descubrir tu canal y me resultan muy útiles tus explicaciones tan claras. estoy cursando 2 año en la universidad la asignatura de estructuras de datos y algoritmos y con tus vídeos ahora lo entiendo y hasta se me hace divertido. gracias❤

  • @lautaroballesteros3763
    @lautaroballesteros3763 2 หลายเดือนก่อน +2

    Excelente video, me quedé con ganas de más, sobre lo que comentaste en la ultima parte. Muchas gracias chio !

  • @betterdeveloper9073
    @betterdeveloper9073 ปีที่แล้ว +12

    Buenas, antes de nada decirte que tus vídeos son fantásticos, explicas mejor que muchos profesores que tuve en la carrera. ¡Ojalá tus vídeos tengan más visitas en el futuro! Se lo merecen, son de gran calidad :)

    • @ChioCode
      @ChioCode  ปีที่แล้ว +2

      Muchas gracias por el apoyo, poco a poco y con su ayuda vamos creciendo la comunidad acá :)

  • @bcpaul74
    @bcpaul74 ปีที่แล้ว +1

    Felicitaciones, excelente contenido. La primera vez que me enseñaron programación dinámica fue en 1995, veo que ha seguido evolucionando. Gracias por animarme a estudiarlo nuevamente.

  • @saulett
    @saulett 4 หลายเดือนก่อน

    hola, estoy en segundo de carrera de ingeniería informática y esto me ha ayudado un montón para una práctica de análisis y diseño de algoritmos, un saludo!!

  • @user-ux8eg3sx1b
    @user-ux8eg3sx1b 6 หลายเดือนก่อน

    nuevo sub, explicaste muy bien este tema, yo llevo una materia que se llama Analisis y Diseño de Algoritmos y creo que es muy importante para la carrera de sistemas y ahora voy a ver toda tu lista de reproduccion para entenderle chido y poder sacar un proyecto, Saludos a la bandita de ESCOM

  • @vatianscader2424
    @vatianscader2424 ปีที่แล้ว +1

    Muchas gracias Chio, me encantan tus videos, he visto varios de algoritmos y cálculo de big O y me ayudan un monton a comprender y estudiar sobre los temas. No dejes de subir videos por favor.

    • @ChioCode
      @ChioCode  ปีที่แล้ว +2

      Muchas gracias por el apoyo, seguiré con los videos de eso no hay duda :)

  • @Blessuccess
    @Blessuccess ปีที่แล้ว

    Muchas gracias profe! Tremendo. Tengo que repasarlo bien y practicarlo.

  • @cristianmendoza9440
    @cristianmendoza9440 ปีที่แล้ว

    Muy buen video ! Estaría genial un video con el problema de las ocho reinas!

  • @saulrivera4604
    @saulrivera4604 2 ปีที่แล้ว +2

    Muy clara la explicación. ! Buenísimos ejemplos para poder entender.
    Saludos !!

    • @ChioCode
      @ChioCode  2 ปีที่แล้ว

      Muchas gracias por el comentario :)

  • @mariamercedesramirezdevald4778
    @mariamercedesramirezdevald4778 ปีที่แล้ว

    Que bien explicas... guapo...

  • @sinfonico1984
    @sinfonico1984 2 ปีที่แล้ว

    Que buena! El que estaba esperando!

    • @ChioCode
      @ChioCode  2 ปีที่แล้ว +1

      Gracias por esperar, espero te haya gustado :)

  • @andresroman9544
    @andresroman9544 2 ปีที่แล้ว

    Buenísimo video, muchas gracias

    • @ChioCode
      @ChioCode  2 ปีที่แล้ว

      Gracias a ti por el comentario 😊

  • @losbochitos6592
    @losbochitos6592 2 ปีที่แล้ว +1

    Crack, Dios, Ídolo

    • @ChioCode
      @ChioCode  2 ปีที่แล้ว

      Jajajajaja muchas gracias Bochitos

  • @pedrojglez3952
    @pedrojglez3952 2 ปีที่แล้ว

    Muchas gracias chiooo, tu vídeo me está salvando el semestre. Suerteee

    • @ChioCode
      @ChioCode  2 ปีที่แล้ว

      Excelente n.n ojalá que sigan ayudándote mucho los videos :)

  • @PasterDEU
    @PasterDEU 2 ปีที่แล้ว

    voy a realizar el ejerciciop em go, muy buena explicacion

    • @ChioCode
      @ChioCode  2 ปีที่แล้ว

      Excelente! Nos platicas cómo te fue :)

  • @veredadelinge3050
    @veredadelinge3050 2 ปีที่แล้ว +5

    Estaría padre que nos explicara lo del costo de memoria, mis profes de la carrera no lo hacen😑.

    • @ChioCode
      @ChioCode  2 ปีที่แล้ว +3

      Definitivamente está en la lista de siguientes videos :)

  • @salvadorcano553
    @salvadorcano553 ปีที่แล้ว

    Gracias por la explicación, ayudaría mucho a entenderlo el ir viendo la solución y el desarrollo mediante prints para ir acabando de entender lo que pasa. Así queda un poco abstracto.

  • @doragaming2470
    @doragaming2470 2 ปีที่แล้ว

    Owww.. quedó Claro, gracias

    • @ChioCode
      @ChioCode  2 ปีที่แล้ว

      Gracias a ti por tu comentario 😊

  • @CrusherKingZ
    @CrusherKingZ 2 ปีที่แล้ว

    Interesante tema, y muy bien explicado.
    ¡Éxitos!

    • @ChioCode
      @ChioCode  2 ปีที่แล้ว +1

      Muchas gracias!!

  • @jorgeFlores-gn2os
    @jorgeFlores-gn2os 2 ปีที่แล้ว

    Amigo estoy estudiando ciencia de datos, no se si podrias hacer videos referentes a ello sería algo genial

  • @elianca5393
    @elianca5393 2 ปีที่แล้ว

    Gracias por la explicación muy entendible y no se si me puedes ayudar analizar un ejercicio para ver con que algoritmo es mejor su solución por favor.

    • @ChioCode
      @ChioCode  2 ปีที่แล้ว +1

      Gracias a ti por el apoyo, y claro si te pasas por los directos que hacemos los miércoles con gusto podemos ver un ejercicio :)

  • @paolabonilla3790
    @paolabonilla3790 2 ปีที่แล้ว

    Hola, que tal? quisiera saber si es posible resolver un algoritmo de ordenamiento por D.P?

  • @diegooroza637
    @diegooroza637 2 ปีที่แล้ว

    Hola Chio! Gracias x compartir este video. Bastante bueno! Una preg breve...porque en algo recursivo con memoriation, el arreglo 'cache' es [-1]*[n+1] en vez de [-1]*[n]? Muchas gracias!

    • @ChioCode
      @ChioCode  2 ปีที่แล้ว

      Por el índice que empieza en 0, para no batallar y tener que restar siempre el valor cuando accedes al índice

  • @andyjulca238
    @andyjulca238 6 หลายเดือนก่อน

    guardado, no entendi uu aun me falta vuelvo en unos dias xd , volvere

  • @luisga4820
    @luisga4820 ปีที่แล้ว

    te quiero chio

  • @felipedaza8403
    @felipedaza8403 ปีที่แล้ว

    holaa, muy buen vide. El "else" del ejemplo de fibonacci estaba sobrando no?

  • @denilsonluis1252
    @denilsonluis1252 2 ปีที่แล้ว

    Que buen video!!!!! una pregunta, como termino de implementar este código 0:40 me salen errores :( :(

  • @elenafernandez7974
    @elenafernandez7974 2 ปีที่แล้ว

    Buenas, tengo una duda. Si al descomponer un problema utilizando Divide y Vencerás no existe solapamiento entre los distintos subproblemas generados, ¿tendría sentido utilizar Programación Dinámica para resolver dicho problema?

    • @ChioCode
      @ChioCode  2 ปีที่แล้ว

      Hola Elena, en esa situación no tiene mucho sentido, el utilizar programación dinámica es para guardar resultados que podrás usar después, pero si no los usarás porque no se sobreponen los su problemas no le veo mucho sentido a hacerlo así :)

  • @TheLurleenGamespro
    @TheLurleenGamespro 5 หลายเดือนก่อน

    Creo que incluso ese problema puede resolverse con programación lineal

  • @israelperezmasle6673
    @israelperezmasle6673 ปีที่แล้ว

    Ofreces cursos de paga sobre programación? Si es así con gusto me gustaría tomar unos cuantos de tu autoria