¿En qué consiste REALMENTE la PROGRAMACIÓN DINÁMICA?
Ғылым және технология
¿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 KZread: / 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
Пікірлер: 184
🎁 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
@miguel900030
3 жыл бұрын
PAGARÍA por un curso tuyo sobre estructuras de datos y algoritmos
@VulturARG
3 жыл бұрын
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!
@BettaTech
3 жыл бұрын
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 👍
@framm703
2 жыл бұрын
Yo usaría la fórmula cerrada con el número áureo con coste O(1)
@armandomendivil1117
2 жыл бұрын
@@framm703 me faltó poner lo del número áureo para hacerlo en o(1) 👍
@salvadorcano553
Жыл бұрын
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.
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.
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 .
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).
Estas haciendo un grandioso trabajo, y estoy contento por tu logro, te sigo desde cuando eramos 5k
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?
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
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 el vídeo. Claro y conciso, sigue así!
Genial!, muchas gracias por la lección.
Que buen video!. Seria interesante ver tu explicación sobre algoritmos evolutivos.
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
Excelente video! Y felicidades por los 100K :D Podrías hacer un día de estos videos sobre autómatas finitos? ☺️
Wooow! Buenisimo estuvo esto. Cuestiones simples que optimizan una barbaridad.
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.
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?
Que buen video! Muchas gracias por el contenido!
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
Explicas increíble, muchas gracias
La madre que me parió, justo tenemos programación dinámica para esta semana en la UNED. No me podías haber venido mejor.
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.
Duda, ¿en C++ no se puede hacer con punteros? Gracias.
Me fue muy útil, sabia que la solución a algo que buscaba lo había visto en tu video.
Lo estaba esperando jeje
Tu vídeo llega en el mejor momento muchas gracias
Hola sr. Betta como se llama el programa que le permir mostrar código en un formago amigable para grabarlo? 🤔
Muy buen video! Con tema de problema de memoria de la recursividad tambien se puede solucionar con trampolines
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
Se que no viene al tema pero alguien me podría decir que tema de vs code esta usando? me encantaron las llaves verdes
Excelente explicación 👏🏼👏🏼👏🏼
Super buen video, excelente explicación de la programación dinámica
Genial! no lo conocía
Muy claro !!! gracias
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
Wow, me resolviste esa duda, gracias
Cual es el enlace para unirse al canal de slack( el de la descripción ya no esta funcionando)
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
*Hey, Vsauce, Michael here*
@danhelimunizsanchez897
3 жыл бұрын
Jajajajaja
@TheZoren101
3 жыл бұрын
xD
Excelente todos tus videos
Muy interesante, gracias por la clase.
@BettaTech
2 жыл бұрын
Gracias a ti!!
que lenguaje de programacion usate
Muy bien vídeo!!! :)
Parece simple... Pero sus variantes son de las cosas mas complejas que eh visto en toda la carrera, dios mio
Hola sensei, utilizas estructura de datos para el fron
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
Gran video, me hubiera servido mucho hace 15 años para las Olimpiadas de Informática xD
Hola, alguien me puede pasar invitacion al slack? el de la descripción no funciona, saludos y gracias!
¿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
Excelentes vídeos!
Muy buen vídeo, gracias.
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...
Congrats bro!!
Como puedo unirme al canal de Slack? el link no esta activo
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?
Excelente video.
Martin tienes un video de como hacer configuraciones de Vim
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
Que programa está utilizando?
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?
@juanmanueltejedatorres1541
3 жыл бұрын
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
Excelente video!!!
Para aprovechar el gran mercado latinoamericano. Sería fácil y con un cambio de una sola letra, de betatec a petatec.
Podrias 🙋🏻♂️hablar mas a profundidad de estructuras de datos pero utilizando java en vez de Typescript ✨, eres un crack maestrooo, saludos desde Mexico 🇲🇽😊
Qué lenguaje estás usando?
yo entendía por programacion dinámica al código que genera más código y lo ejecuta.
qué recuerdos de las clases de Algoritmica en la FIB con Conrado enseñandonos DP xD
Este canal es de calidad
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?
@juanmanueltejedatorres1541
3 жыл бұрын
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
Buenísimo video!!!
@BettaTech
2 жыл бұрын
Me alegro que te haya gustado! 😊
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).
Muy buen vídeo gracias!
@BettaTech
3 жыл бұрын
Gracias a ti por comentar! :)
Gracias tío betatech
Genial!
dude, desde hoy soy fan de tus videos
@BettaTech
10 ай бұрын
Mil gracias!!!!
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
@dang9225
3 жыл бұрын
Hola, busca Simple-peer es javascript pero hace toda esa magia con Webrtc
Grande!! Mañana tengo clase dr algoritmia y vamos a dar programación dinámica voy a ir con ventaja jejeje
Cual es la notacion big O del segundo algoritmo?
@juuamjskn2420
3 жыл бұрын
Creo que O(n)
Para que sirve que ponga el ": number" luego del parametro"(n : number)" En la documentacion de ts no encuentro que hablen de eso solo del param
@kodama1400
3 жыл бұрын
Entiendo que hace referencia a que el dato sera de tipo numero, pero pa que lo pone luego del parametro?
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 :)
@oscarfernandezdev
3 жыл бұрын
¿Cómo te fue?
@sergiorodriguez7945
3 жыл бұрын
@@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
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.
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 ..
Muy útil
Y yo aquí haciendo programación dinámica sin saberlo!!
@jerome092master
3 жыл бұрын
Rt
@eliasgill2453
3 жыл бұрын
Sale mil veces mas natural que la recursividad 😂
@getseneko7004
3 жыл бұрын
Es que al usar JS es más común usar funciones que recursivo, pero no lo aprovechamos como tal.
Al final, puedo reemplazar cualquier algoritmo de recursividad por uno iterativo con programacion dinamica? o sirve en este ejemplo en especifico
@hernanrodriguez1435
3 жыл бұрын
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 :)
@nulld0t
3 жыл бұрын
@@hernanrodriguez1435 muchas gracias por la respuesta! ♥
ahhh es typescript, con razón los parámetros no me cuadraban por mucho que lo pensaba
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
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)
@WillCastruita
2 жыл бұрын
Tu solución a lo segundo se llama telescope
@yesidev4131
2 жыл бұрын
@@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
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.
Por qué dice "memoizar"? Cuál es la diferencia con "memoRizar"? No la he entendido
SI tengo la oportunidad lo implemento.
Muy intedezante
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!
genial, cada ves mejoro el coste algoritmico de mis dev
Creo que para calcular fib(10000) para la demostración de DP sería adecuado usar python
@DuniC0
3 жыл бұрын
@@danielmbcn Lo digo por que es capaz de calcular números enormes con toda la precisión
me gustan tus lentes jajaja, no tienen nada que ver con esto pero están cool