Bienvenido al Curso

1

Introducci贸n al curso b谩sico de algoritmos y estructuras de datos

Introducci贸n a los algoritmos

2

驴Qu茅 entiende una computadora?

3

Lenguajes de programaci贸n

4

Estructuras de datos

5

驴Qu茅 es un algoritmo?

6

Metodolog铆a para la construcci贸n de un algoritmo

7

Variables y tipos de datos

8

User defined data types

9

Instalando Ubuntu Bash en Windows

10

Creando nuestro user defined data type

11

Abstract Data Types b谩sicos: Lists, Stacks, Queues

12

Explicaci贸n gr谩fica Data Types b谩sicos

13

Glosario de funciones para Abstract Data Types

14

Clases y objetos

15

Creando tu primera Queue: Arrays

16

Creando tu primera Queue: implementaci贸n.

17

Creando tu primera Queue: implementar la funci贸n enQueue

18

Creando tu primera Queue: implementar la funci贸n deQueue

19

Creando tu primera Queue: main code

Algoritmos de ordenamiento

20

Algoritmos de ordenamiento

21

Bubble sort

22

Bubble sort: implementaci贸n

23

Bubble sort: main code

24

Insertion sort

25

Desaf铆o: implementa un algoritmo de ordenamiento

Recursividad

26

Recursividad

27

La funci贸n Factorial, calculando el factorial recursivamente

28

Manejo de cadenas de caracteres

29

Arte: Generando arte recursivo

Divide and conquer y programaci贸n din谩mica

30

Divide and Conquer (divide y vencer谩s)

31

Qu茅 es la programaci贸n din谩mica (divide y vencer谩s v2.0)

32

MergeSort

33

Desaf铆o: Buscar el algortimo m谩s r谩pido de sort

34

Implementando QuickSort con Python

35

Implementando QuickSort con Python: main code

Algoritmos 'Greedy'

36

Qu茅 son los Greedy Algorithm

37

Ejercicio de programaci贸n greedy

38

Ejercio de programaci贸n greedy: main code

Grafos y 谩rboles

39

Grafos y sus aplicaciones

40

脕rboles

驴C贸mo comparar Algoritmos?

41

C贸mo comparar algoritmos y ritmo de crecimiento

驴Qu茅 sigue?

42

Cierre del curso y siguientes pasos

No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

Qu茅 son los Greedy Algorithm

36/42
Recursos

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:

  1. Una m谩quina que da cambio porque va a dividir el dinero de una manera eficiente y correcta.
  2. Un juego donde debemos calcular el mejor movimiento y podemos usar algoritmos de inteligencia artificial.
  3. Una aplicaci贸n de mapas porque va a buscar la ruta con el menor consumo o la menor distancia.

Aportes 36

Preguntas 2

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

o inicia sesi贸n.

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:

  • 馃懜馃槒 Greedy significa codicioso
  • 馃寣 Estos algoritmos buscan la soluci贸n m谩s optima en cada paso (y la encuentran)
  • 馃槄馃 Pero, al final de cuentas, por optimizar a m谩s no poder en cada uno de los pasos podemos saltamos una soluci贸n a煤n m谩s optima al problema total

馃憦 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 鈥榠鈥 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

  • Los algoritmos Greedly o algoritmos codiciosos, buscan la soluci贸n m谩s optima en cada paso, para resolver el problema final, como una m谩quina de cambio, juego, escoger la mejor ruta, etc.
  • Los greedly algorithm, no necesariamente te dar谩 la soluci贸n m谩s eficiente al problema, pero si te dar谩 la soluci贸n optima en cada paso o iteraci贸n.

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 鈥渕谩s 贸ptima鈥 suena como decir 鈥渓a 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.

  1. Mis apuntes sobre: "Qu茅 son los Greedy Algorithm"
    Greedy: En cada una de las etapas, intenta buscar la mejor soluci贸n.

Caracter铆sticas de los algoritmos greedy (voraces)

Explicaci贸n gr谩fica del greedy algorithm con el proceso de dar cambio.

greedy 鈥渃odicioso鈥

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 鈥淕reedy 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!