¿En qué consiste REALMENTE la PROGRAMACIÓN DINÁMICA?
Vložit
- čas přidán 12. 07. 2024
- ¿Tan difícil es la programación dinámica? 🤔
👾 Redes sociales 👾
► Twitter: / bettatech
► Instagram: / betta_tech
► Canal Secundario: / @forkdebettatech
► Slack: bit.ly/33gaDDM
👨🏼🏫 MIS CURSOS 👨🏼🏫
👽 Curso de iniciación a la programación con JavaScript:
► bit.ly/3kr4bTc
👕 MERCHANDISING DEL CANAL:
► Tienda CZcams: / bettatech
► Tienda Teespring: teespring.com/stores/bettatec...
⭐️ AFILIADOS ⭐️
🎁 7% Descuento en HOSTINGER (Código BETTATECH)
► www.hostg.xyz/aff_c?offer_id=...
🐾 MacPaw (CleanMyMacX):
► macpaw.audw.net/c/2523912/941...
🧠 Autocompletado con IA (Kite)
► www.kite.com/get-kite/?...
🎵 TODA la música es de EpidemicSound:
► www.epidemicsound.com/referra...
✉️ CONTACTO PROFESIONAL:
► Respuesta no garantizada:
bettatechyt@gmail.com
📚 LIBROS 📚
Design Patterns
► amzn.to/39XuQlq
Head First Design Patterns
► amzn.to/2uq6XUq
Refactoring
► amzn.to/2SQnf2c
Clean Architecture
► amzn.to/3bZVonJ
Clean Code
► amzn.to/32WVKq3
Introduction to Algorithms
► amzn.to/34SyVFP
Cracking the Coding Interview
► amzn.to/2QkdwC6
⏱ ÍNDICE:
• 0:00 - Introducción
• 2:50 - Hostinger
• 3:55 - Solución Recursiva
• 6:10 - Memoización
• 9:56 - Bottom Up
• 12:47 - Final - Věda a technologie
🎁 CÓDIGO DE DESCUENTO "BETTATECH" 👉🏼 7% EN TODOS LOS SERVICIOS DE HOSTINGER
Entra a HOSTINGER con el siguiente link y usa el cupón "BETTATECH" para obtener un 7% de descuento en todos los productos.
www.hostg.xyz/aff_c?offer_id=357&aff_id=56221
PAGARÍA por un curso tuyo sobre estructuras de datos y algoritmos
Hola, el código de slack no funciona
A mi, lo de memoization se me quedó porque antes de aprenderlo creía que se llamaba memorization. Muy buena serie de videos!
Ya somos dos ajjaja
Excelente, este un ejemplo de entrevista, si solo usas recursividad para fibonacci tendrás una complejidad de tiempo y espacio de O(2^n), si usas memoization puedes bajar el tiempo de complejidad a O(n) pero el espacio también es O(n), la mejor forma para este caso es la iterativa ya sea usando una variable temporal para manejar el estado previo o un array como lo muestra en el ultimo ejemplo y da tiempo de complejidad O(n) y espacio constante de O(1). Muy buen video 👍
Yo usaría la fórmula cerrada con el número áureo con coste O(1)
@@framm703 me faltó poner lo del número áureo para hacerlo en o(1) 👍
Para este ejemplo concreto, ¿no sería mejor almacenar únicamente 2 valores en el array, que fueran machacandose hasta obtener el resultado?, la complejidad sería la misma, pero el espacio en memoria sería mucho menor, ganaríamos más espacio cuanto más grande fuera el número a calcular, también es un factor a tener en cuenta.
Este es un tema de la materia Analisis de algoritmos, para quienes desean profundizar un poco mas, temas como notacion asimptotica , etc.
Muchas gracias
Soy un participante de muchas competencias de programación y estos vídeos me ayudan bastante .
Gracias por todos estos vídeos, ayer mismo tuve una entrevista y me pidieron las típicas Katas, hace una semana no sabía ni lo que era, pero no las había estudiado como resolverlas, y eso que era una empresa pequeña, ahora se más pero me falta recorrido en todo esto de los patrones de diseño y los principios SOLID, como utilizarlos en el día a día cuando nos encontramos con estas cosas, no ya en empresas enormes, si no para el día a dia.
Estas haciendo un grandioso trabajo, y estoy contento por tu logro, te sigo desde cuando eramos 5k
*Hey, Vsauce, Michael here*
Jajajajaja
xD
Excelente video! Y felicidades por los 100K :D
Podrías hacer un día de estos videos sobre autómatas finitos? ☺️
esta genial!! ahora falta un video de la programación basada en eventos con ejemplos T_T y puedo morir feliz! un abrazo a la distancia!
Muchas gracias por compartir tus conocimientos, se me ha abierto un mundo por descubrir. Muy bueno el vídeo.
Un saludo.
felicidades por el vídeo, calidad altísima, todo claro y sin redundancias
gran explicacion!!!! ¿podrías explicar como aplicar eso a problemas de optimización?
Hola @BettaTech, podrias hacer un video para explicar en mas detalles bfs y dfs?
Genial!, muchas gracias por la lección.
Lo estaba esperando jeje
Que buen video!. Seria interesante ver tu explicación sobre algoritmos evolutivos.
Muchas gracias por el vídeo. Claro y conciso, sigue así!
Wooow! Buenisimo estuvo esto. Cuestiones simples que optimizan una barbaridad.
Explicas increíble, muchas gracias
Que buen video! Muchas gracias por el contenido!
Genial! no lo conocía
Gracias por el video!!, muy interesante, me suena a que en programación dinámica se pueden utilizar los patrones de diseño Flyweight y Memento.
Excelente explicación 👏🏼👏🏼👏🏼
Me fue muy útil, sabia que la solución a algo que buscaba lo había visto en tu video.
Tu vídeo llega en el mejor momento muchas gracias
Muy claro !!! gracias
Wow, me resolviste esa duda, gracias
Excelentes vídeos!
Muy bien vídeo!!! :)
Super buen video, excelente explicación de la programación dinámica
Muy buen video!
Con tema de problema de memoria de la recursividad tambien se puede solucionar con trampolines
Asocio dynamically programming a crear objetos en tiempo de ejecución, en java le llaman at runtime. Podrías explicar la diferencia de estos conceptos? Buen video
Hay un ejercicio que me salió en una entrevista que se llama "subarrays divisible by k" si lo puedes explicar te agradecería un monton ya que llevo un buen rato tratando de entenderlo y no he podido. Grande por este tipo de videos y muy bien explicados.
La madre que me parió, justo tenemos programación dinámica para esta semana en la UNED. No me podías haber venido mejor.
Excelente video.
Excelente video, creo que esta "programacion dinamina" es un termino romantico para las tecnicas que usamos los que aprendimos a programar old schooll
bueno, literalmente me estuve agarrando a madrazos con recursividad hace 24hs, ese video me viene de perlas >:3
Excelente video se entendió la idea del método lineal, pero no sé lo esperaba el infinity por su reacción😂
En Java con un BigInteger lo solucionamos los números grandes
Saludos BettaTech
Excelente todos tus videos
Muy interesante, gracias por la clase.
Gracias a ti!!
Buen día. Me encanta tu canal. Podrías indicar algún enlace donde profundizar este tema? La verdad me gusta mucho como explicas pero en este ejemplo no me quedo claro la programación dinámica porque cuando aprendí a crear la serie Fibonacci lo hice con variables o arreglos sin recursividad, de hecho lo hice con turbo Basic hace casi 30 años. Te felicito por la calidad pedagógica que tienes. Sigue enseñándonos. Gracias
Muy buen vídeo, gracias.
Excelente video!!!
Congrats bro!!
Este canal es de calidad
Muy buen video, supongo que esto es algo ya avanzado de ciencias de la computación
Pd: podrías hacer un video donde nos expliques cómo harías un sistema tipo zoom o cualquiera de videoconferencias xfa
Hola, busca Simple-peer es javascript pero hace toda esa magia con Webrtc
Muy buen vídeo gracias!
Gracias a ti por comentar! :)
Buenísimo video!!!
Me alegro que te haya gustado! 😊
Te conocí hace poco y me encantan tus videos. Veo que sos una persona muy capacitada y que sabe de lo que habla. Me encanta. Felicitaciones!.
Me gustaría verte hablando de cómo funciona Lazy Evaluation vs Eager Evaluation. Sería muy interesante
Y yo aquí haciendo programación dinámica sin saberlo!!
Rt
Sale mil veces mas natural que la recursividad 😂
Es que al usar JS es más común usar funciones que recursivo, pero no lo aprovechamos como tal.
Genial!
Podrias 🙋🏻♂️hablar mas a profundidad de estructuras de datos pero utilizando java en vez de Typescript ✨, eres un crack maestrooo, saludos desde Mexico 🇲🇽😊
Hey betta gran video, tenia una duda que preguntarte, veras estoy buscando un portatil con buena autonomía, portabilidad y que sea potente dentro de esas características. Mi uso de trabajo es programación en jupyter nootebook, RStudio, análisis de datos, gestión de redes sociales y trabajos ofimáticos. Me podrias recomendar algo?
Gran video, me hubiera servido mucho hace 15 años para las Olimpiadas de Informática xD
Gracias tío betatech
Los programadores de ahora no conocen la verdadera programación dinámica, gramáticas formales, autómatas que se auto reproducen, el problema, cuando yo lo hacía es que jamás nunca nadie podía entender mi código, el más eficiente, pero ininterpretble, ahora los lenguajes incluyen muchas estructuras que facilitan esto, pero nadie las usa
dude, desde hoy soy fan de tus videos
Mil gracias!!!!
qué recuerdos de las clases de Algoritmica en la FIB con Conrado enseñandonos DP xD
Parece simple... Pero sus variantes son de las cosas mas complejas que eh visto en toda la carrera, dios mio
Literalmente tengo mañana un examen de programación dinámica y has subido el vídeo ayer, osea que me viene super bien el vídeo :)
¿Cómo te fue?
@@oscarfernandezdev nos preguntaban un algoritmo que recorriese un grafo, y lo que tenía que devolver el algoritmo no lo saqué pero el concepto que pedían lo conseguí sacar más o menos, así que bien
Hola sr. Betta como se llama el programa que le permir mostrar código en un formago amigable para grabarlo? 🤔
Para aprovechar el gran mercado latinoamericano. Sería fácil y con un cambio de una sola letra, de betatec a petatec.
Hola Martin... Como ves el Futuro Programacion vs Maching Learning.. No haran falta los programadores a futuro? El desarrollo Web , escritorio y movil se iran?
Veelo de está manera, la programación no es lo mismo que la algoritmia, y los humanos tienen la capacidad de relacionar, "pensar" y descubrir cosas nuevas, mientras las computadoras se limitan a ejecutar tareas repetitivas sin embargo existen cosas que por el momento están limitadas a los humanos, en otras palabras a la experimentación, la programación de puede de cierta forma automatizar pero para lograr esto se necesita un algoritmo el cual requiere "pensar" y las computadoras no lo hacen al menos
Muy útil
Interesante video.
Gracias por verme :)
Muy intedezante
Martin tienes un video de como hacer configuraciones de Vim
Hola sensei, utilizas estructura de datos para el fron
Así cuando te enteras que esa llamada programación dinamica es algo ya se hacia desde hacia poco después que enseñaran recursividad en la escuela.... siendo que da miedo el nombre porque suena a lo que hace el machine learning de adaptarse y mejorar el algoritmo a medida que se ejecuta
Duda, ¿en C++ no se puede hacer con punteros? Gracias.
Por "programación dinámica" pensé encontrar algo como el código que John Carmack escribió para ajustar el escalado de sprites y texturas luego de cambiar la resolución de pantalla en el juego Wolfenstein 3D (1990/91).
Cuando se te ocurren formas de programar mientras aprendes y luego te das cuenta de que ya tienen un nombre 😂
Eres un crack
Xd tal cual ayer en clase dejaron hacer fibonacci y lo hice con el for en vez de recursivo
Grande!! Mañana tengo clase dr algoritmia y vamos a dar programación dinámica voy a ir con ventaja jejeje
yo entendía por programacion dinámica al código que genera más código y lo ejecuta.
Cual es el enlace para unirse al canal de slack( el de la descripción ya no esta funcionando)
Al final, puedo reemplazar cualquier algoritmo de recursividad por uno iterativo con programacion dinamica?
o sirve en este ejemplo en especifico
Todo algoritmo recursivo puede ser traducido a un algoritmo iterativo, pero no necesariamemte con programacion dinamica. No todos los algoritmos recursivos cumplen la intrinseca estructura de un problema de programacion dinamica (ej. Backtracking)
Si queres saber mas te recomiendo el libro Algorithm Design Manual de Skiena :)
@@hernanrodriguez1435 muchas gracias por la respuesta! ♥
Estan geniales los demos. Solo que es una pena que se use a TS o JS que es tan carente y no un lenguaje mas potente...
Mal ejemplo para explicar la programación dinámica, en mi opinión. Al final terminas con una versión (linearFibo) que es menos eficiente que tener simplemente 3 variables que se van sobrescribiendo. De la manera que tú planteas estás malgastando muchísima memoria (en cuanto calculas el elemento n, los elementos desde la posición n - 1 hasta la 0 ya no te sirven de nada).
SI tengo la oportunidad lo implemento.
genial, cada ves mejoro el coste algoritmico de mis dev
Se que no viene al tema pero alguien me podría decir que tema de vs code esta usando? me encantaron las llaves verdes
¿Alguno de ustedes ha programado con la Maquina de Turing?, la más eficiente pero nadie podrá modificar el código por no entenderlo, por eso la mayoría no programa dinámicamente, estructuras básicas tradicionales
ahhh es typescript, con razón los parámetros no me cuadraban por mucho que lo pensaba
No pude cumplir mi sueño dinámico de llegar a los 100 subs antes que betta tech a los 100.000 x(.
Enhorabuena, los calvos dominaremos el mundo!
Una pregunta tonta sobre el IDE que me deja todo loco XD Cuando haces scroll, las líneas de código se quedan fijas, ¿pero el número de línea se mueve? Y además, unos van en orden descendente, otros ascendentes... Un poco lioso, no?
Qué lenguaje estás usando?
Beta te quiero preguntar algo, en vim cuando quieres importar algo, tienes que escribir toda la ruta? O existe algún autoimport similar a los que tienen los ides, y cuando quieres buscar una palabra en todo el proyecto (ej. Dónde de llaman una clase HTML en varios archivos)
Tu solución a lo segundo se llama telescope
@@WillCastruita ya ni me acordaba de esta pregunta, pero si, me autorespondo y para los autoimports se usa COC, con su comando aw en el caso de typescrit ya cuento con un repositorio personal de neovim donde he pasado muchas funcionalidades de VSCode a Neovim
que lenguaje de programacion usate
me gustan tus lentes jajaja, no tienen nada que ver con esto pero están cool
Hay algo que no termino de entender, en 6:45 el primer return de la primera ejecución no deberia parar la ejecución y por ende la recursividad porque el resto del codigo no se ejecuta?
Aunque para el caso de encontrarse con el primer return tienes que considerar que las llamadas que hay en cola aún se están ejecutando y a su vez están agregando más llamadas, viendo las llamadas como un árbol, es difícil explicarlo en texto espero me entiendas
El traje nuevo del emperador...
Sin ánimo de ofender... acabo de darme cuenta de que llevo haciendo programación dinámica desde que hice mi primer programa hace 35 años...
(Esto pasaba mucho en mi facultad había profesores que incluso decían que tal o cual libro estaba completamente equivocado y que teníamos que hacer las cosas como ellos nos explicaban)
Yo también puedo jugar a reinventar la rueda :
Memorización? => Memoizacion
Recursividad? ==> Recuividad
Inteligencia Artificial? ==> Inteliencia atificiá
Para mí que el que se inventó el primer término mientras daba clase había desayunado algo más que agua con misterio...
Me gusta el canal pero debería haber una Real Academia de la lengua informática para evitar que la gente se marcase faroles a cuenta de inventar términos para lucirse.
Parte dooooos.
Hay una propuesta de un ejercicio para entrar a Google. Se llama min diferencia en un arreglo. Varios lo resuelven con programación dinámica.
Cual es la notacion big O del segundo algoritmo?
Creo que O(n)
Que programa está utilizando?
Igual el problema del stack podrias solucionarlo con tail recursion
De hecho tail recursion es una forma de momizacion porque lo que se pasa en el stack es un valor ya calculado y no una llamada a una funcion
Creo que para calcular fib(10000) para la demostración de DP sería adecuado usar python
@@danielmbcn Lo digo por que es capaz de calcular números enormes con toda la precisión
Aaaaaaaaaaaa, el infierno mismo. (Todavía no veo el video, pero dp se me da muy mal)
Like, y aun no lo veo, grande!!
Muchas gracias!!
x2
Esto es como cuando se utiliza yeild en JS