¿En qué consiste REALMENTE la PROGRAMACIÓN DINÁMICA?
Вставка
- Опубліковано 13 лип 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 UA-cam: / 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 - Наука та технологія
🎁 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.
Muchas gracias
Soy un participante de muchas competencias de programación y estos vídeos me ayudan bastante .
*Hey, Vsauce, Michael here*
Jajajajaja
xD
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.
Excelente video! Y felicidades por los 100K :D
Podrías hacer un día de estos videos sobre autómatas finitos? ☺️
Este es un tema de la materia Analisis de algoritmos, para quienes desean profundizar un poco mas, temas como notacion asimptotica , etc.
Estas haciendo un grandioso trabajo, y estoy contento por tu logro, te sigo desde cuando eramos 5k
Hola @BettaTech, podrias hacer un video para explicar en mas detalles bfs y dfs?
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.
Muchas gracias por el vídeo. Claro y conciso, sigue así!
felicidades por el vídeo, calidad altísima, todo claro y sin redundancias
Explicas increíble, muchas gracias
gran explicacion!!!! ¿podrías explicar como aplicar eso a problemas de optimización?
Genial!, muchas gracias por la lección.
Lo estaba esperando jeje
Que buen video!. Seria interesante ver tu explicación sobre algoritmos evolutivos.
Que buen video! Muchas gracias por el contenido!
Wooow! Buenisimo estuvo esto. Cuestiones simples que optimizan una barbaridad.
Genial! no lo conocía
Excelente todos tus videos
Muy claro !!! gracias
Tu vídeo llega en el mejor momento muchas gracias
Excelentes vídeos!
La madre que me parió, justo tenemos programación dinámica para esta semana en la UNED. No me podías haber venido mejor.
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.
Muy bien vídeo!!! :)
Excelente explicación 👏🏼👏🏼👏🏼
Me fue muy útil, sabia que la solución a algo que buscaba lo había visto en tu video.
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
Wow, me resolviste esa duda, gracias
Muy buen vídeo, gracias.
Genial!
Muy buen video!
Con tema de problema de memoria de la recursividad tambien se puede solucionar con trampolines
Super buen video, excelente explicación de la programación dinámica
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
Excelente video.
Congrats bro!!
Excelente 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.
bueno, literalmente me estuve agarrando a madrazos con recursividad hace 24hs, ese video me viene de perlas >:3
Excelente video, creo que esta "programacion dinamina" es un termino romantico para las tecnicas que usamos los que aprendimos a programar old schooll
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
Este canal es de calidad
Muy interesante, gracias por la clase.
Gracias a ti!!
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?
Muy útil
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.
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
Buenísimo video!!!
Me alegro que te haya gustado! 😊
Martin tienes un video de como hacer configuraciones de Vim
Gran video, me hubiera servido mucho hace 15 años para las Olimpiadas de Informática xD
Parece simple... Pero sus variantes son de las cosas mas complejas que eh visto en toda la carrera, dios mio
qué recuerdos de las clases de Algoritmica en la FIB con Conrado enseñandonos DP xD
Hola sensei, utilizas estructura de datos para el fron
Para aprovechar el gran mercado latinoamericano. Sería fácil y con un cambio de una sola letra, de betatec a petatec.
Gracias tío betatech
Duda, ¿en C++ no se puede hacer con punteros? Gracias.
Hola sr. Betta como se llama el programa que le permir mostrar código en un formago amigable para grabarlo? 🤔
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 intedezante
Podrias 🙋🏻♂️hablar mas a profundidad de estructuras de datos pero utilizando java en vez de Typescript ✨, eres un crack maestrooo, saludos desde Mexico 🇲🇽😊
yo entendía por programacion dinámica al código que genera más código y lo ejecuta.
Muy buen vídeo gracias!
Gracias a ti por comentar! :)
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
¿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
Cual es el enlace para unirse al canal de slack( el de la descripción ya no esta funcionando)
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
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).
que lenguaje de programacion usate
dude, desde hoy soy fan de tus videos
Mil gracias!!!!
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
Que programa está utilizando?
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...
Se que no viene al tema pero alguien me podría decir que tema de vs code esta usando? me encantaron las llaves verdes
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?
SI tengo la oportunidad lo implemento.
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!
Grande!! Mañana tengo clase dr algoritmia y vamos a dar programación dinámica voy a ir con ventaja jejeje
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 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
Interesante video.
Gracias por verme :)
genial, cada ves mejoro el coste algoritmico de mis dev
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
Como puedo unirme al canal de Slack? el link no esta activo
Esto es como cuando se utiliza yeild en JS
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.
me gustan tus lentes jajaja, no tienen nada que ver con esto pero están cool
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.
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
q bueno
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
Hola, alguien me puede pasar invitacion al slack? el de la descripción no funciona, saludos y gracias!
Un saludo... Entendí con tu video la programación dinámica, el objetivo es optimizar los recursos de memoria, solo una duda... Porque los lenguajes funcionales y en espacial haskell solo usa recursion?.. Si es tan costoza... Un día platicando con un maestro me dijo que depende del lenguaje, que la programación iterativa al final es más costosa pero es más fácil de hacer el proceso mental para programar, pero una vez entendida la programación funcional estos lenguajes son más eficientes y me hizo el ejemplo de recursion en JS y en racket y en racket no se trababa el proceso usaba menos memoria y era más rápido, pero obvio en la web se usa JS... Entonces conclusión, la pregramacion dinámica es hacer programación iterativa lo programado en funcional? Como sería lo contrario?... Hacer un algoritmo iterativo volverlo funcional?. (claro cambiarlo de lenguaje) y con esto nos ahorraría código y seria mas veloz, esto también es programación dinámica?. Saludos
..
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! ♥
muy bonito y todo, pero enseñaste el ejemplo más simple de todos los que hay de DP >:v subirle un poquito el nivel no hará daño.
Psdt: de todas formas muy buena explicación :D