Este algoritmo lo aplicamos en el curso básico de programación de Freddy.
Alguien se acuerda del cajero automático?
Bienvenido al Curso
Introducción al curso básico de algoritmos y estructuras de datos
Introducción a los algoritmos
¿Qué entiende una computadora?
Lenguajes de programación
Estructuras de datos
¿Qué es un algoritmo?
Metodología para la construcción de un algoritmo
Variables y tipos de datos
User defined data types
Instalando Ubuntu Bash en Windows
Creando nuestro user defined data type
Abstract Data Types básicos: Lists, Stacks, Queues
Explicación gráfica Data Types básicos
Glosario de funciones para Abstract Data Types
Clases y objetos
Creando tu primera Queue: Arrays
Creando tu primera Queue: implementación.
Creando tu primera Queue: implementar la función enQueue
Creando tu primera Queue: implementar la función deQueue
Creando tu primera Queue: main code
Algoritmos de ordenamiento
Algoritmos de ordenamiento
Bubble sort
Bubble sort: implementación
Bubble sort: main code
Insertion sort
Desafío: implementa un algoritmo de ordenamiento
Recursividad
Recursividad
La función Factorial, calculando el factorial recursivamente
Manejo de cadenas de caracteres
Arte: Generando arte recursivo
Divide and conquer y programación dinámica
Divide and Conquer (divide y vencerás)
Qué es la programación dinámica (divide y vencerás v2.0)
MergeSort
Desafío: Buscar el algortimo más rápido de sort
Implementando QuickSort con Python
Implementando QuickSort con Python: main code
Algoritmos 'Greedy'
Qué son los Greedy Algorithm
Ejercicio de programación greedy
Ejercio de programación greedy: main code
Grafos y árboles
Grafos y sus aplicaciones
Árboles
¿Cómo comparar Algoritmos?
Cómo comparar algoritmos y ritmo de crecimiento
¿Qué sigue?
Cierre del curso y siguientes pasos
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
Ricardo Celis
Los Greedy Algorithms son algoritmos que van a buscar la solución más óptima para resolver un problema en cada una de sus etapas; vamos a tener varios subprocesos antes de llegar al resultado final.
Este tipo de algoritmos son muy “codiciosos” porque van a encontrar la mejor solución de cada paso pero, en conjunto, puede que no sean la mejor solución al problema completo.
Estos son algunos ejemplos de problemas que se resolverían con Greedy Algorithms:
Aportes 36
Preguntas 2
Este algoritmo lo aplicamos en el curso básico de programación de Freddy.
Alguien se acuerda del cajero automático?
Notas de la clase:
👏 Me gustan mucho estos algoritmos.
Un clase que deja mucho que desear.
Es la primera vez que veo algortimos Greedy. En esta clase se utilizan muchas librerias propias de C++, y no se explica qué hacen, o qué no hacen. También echo en falta una explicación estructurada del camino lógico que está tomando el código al ejecutarse.
Se dice que se explicará en la siguiente clase, pero no se explica nada.
¿Qué es INT_MAX?
¿Por qué usa INT_MAX?
¿Por qué se está utilizando el valor de ‘i’ para la recursividad?
No sé si soy yo, pero conforme voy viendo los cursos veo que Platzi no cuenta con un departamento de Calidad que verifique estos cursos.
Según estuve investigando también, el Greedy Algorithm puede ser lo mas eficiente que sea, pero esa búsqueda insaciable de la eficiencia en cada único paso, provoca que resulte para algunos casos no tan eficiente, porque la solución requiere una evaluación mas general y no tan especifica (paso a paso) para encontrar una solución eficiente y óptima.
Pero como mencionaba Ricardo, son perfectos para algunos casos en concretos cómo los videojuegos y la inteligencia artificial.
Yo opino que cada algoritmo tiene su aplicación, y es nuestro deber sentarnos analizar y elegir cuál sería la opción mas eficiente que requiera nuestra solución.
Este ejemplo me recordó al proyecto del curso de programación básica donde hicimos el código para el cajero automático.
En un viaje en auto que hice por el estado de Florida en USA (de Miami a Orlando) hace un tiempo ya, el gps me indicó una ruta por una carretera estatal, (yo esperaba otra ruta por una autopista grande) conocí muchos pueblitos e igual llegué perfectamente a mi destino casi en el mismo tiempo que estimaba con la otra ruta. ¿la diferencia? que en la ruta que fui no pagué ni un solo peaje, en cambio la otra ruta, la de la autopista grande, está llena de peajes. ¿Ahora entiendo que probablemente sería por un greedy algorithm?
Un algoritmo Greedy es óptimo para obtener la solúción paso por paso pero en problemas más complejos no siempre es la solúción más óptima.
numero x cualquiera para dividirlo en monedas de 20, 10, 5, 1
(siendo n20=numero de monedas de 20)
n20= int (x/20) y esto tiene un residuo que seria
r = x%20 ; y luego haríamos lo mismo con las otras moneas hasta llegar a un residuo cero
n10=int(r/20)
r=r%20;
n5=int(r/5)
r=r%5
n1=int(r/1) osea prácticamente r
y r =0
y seria el fin del algoritmo
Diferencia entre el camino óptimo y el algoritmo codicioso
excelente contenido profe
Estaria cool ver como se aplica a un videojuego
Excelente explicación.
Ahora entiendo porque los cajeros automaticos cuando uno retira el dinero funcionan con billetes grandes…
la devuelta
LOS GREEDY ALGORITHM
Son algoritmos que buscan la solución mas optima y efectiva para un programa que contenga problemas y que estos problemas puedan ser solucionado con GREEDY ALGORITHM. Se puede aplicar en problemas como cajeros que dan vueltas o una aplicación de mapa que nos da la ruta mas corta para ahorrar combustible y tiempo.
Esto debería estar en las máquinas registradoras 🤣. Y no que le llenen de monedas. O en el banco no falta los que dan montones de billetes para cuantías pequeñas.
Eso de “más óptima” suena como decir “la más mejor”. Óptimo solo hay uno y el hecho de que una solución sea óptima le quita el calificativo de óptimo a las demás.
Características de los algoritmos greedy (voraces)
Explicación gráfica del greedy algorithm con el proceso de dar cambio.
greedy “codicioso”
Puede servir también para verificar cuantos objetos puedes camber en un contenedor, o se me ocurre también para asignar recursos a algún proyecto basado en los conocimientos de los mismos.
Como dijo el profesor en este caso de dar cambio, el algoritmo greedy no siempre funciona. En este enlace se puede ver la solución general al problema usando programación dinámica.
Greedy Algorithms: Buscar la solución mas optima (menos pasos/cantidad)
Greedy Algorithm: Algoritmo para buscar la solución más optima.
muchas gracias
la explicación es muy buena y con el ejemplo grafico queda mas claro,
Bastante clara la explicación de la idea de “Greedy Algorithm”. Queda claro con la explicación del cambio.
algo complejo pero si ya tenias conocimientos previos lo vez sencillo
Pudiera ser que en la determinación de la receta de un platillo apliques éste algoritmo para utilizar la menor cantidad de cada ingrediente para optimizar el uso de los mismos.
Greedy Algorithms/Algoritmos codiciosos
Algoritmos que van a buscar la solución más óptima para resolver un problema en cada una de sus etapas; vamos a tener varios subprocesos antes de llegar al resultado final.
Me pareció interesante el concepto de Greedy Algorithm, creo que como programador se debe tener muy en claro sobre que criterio será óptimo el algoritmo; óptimo en proceso computacional o respuesta que dará el sistema al usuario.
Buenísimo… vamos a la práctica. 😉
Muy bueno!
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?