SlideShare una empresa de Scribd logo
1 de 27
Analisis y Diseño de Algoritmos
Rawel Luciano 16-0511
Tipos de Algoritmos:
• Algoritmos Voraces
• Algoritmos Probabilisticos
• Algoritmos Geometricos
• Algoritmos Paralelos
• Algoritmos de Tiempo Real
• Algoritmos Genetico
Algoritmos Voraces
• Los algoritmos voraces, ávidos o de avance rápido (greedy) se utilizan
normalmente en problemas de optimización, donde una solución está
formada por un conjunto de elementos entre un conjunto de candidatos
(con un orden determinado o no).
• El algoritmo voraz funciona por pasos:
• Partimos de una solución vacía.
• En cada paso se escoge el siguiente elemento para añadir a la solución, entre
los candidatos.
• Una vez tomada esta decisión no se podrá deshacer.
• El algoritmo acabará cuando el conjunto de elementos seleccionados constituya
una solución.
Metodo General
Metodo General
• Funciones:
• solución (S). Comprueba si un conjunto de candidatos es una solución
(independientemente de que sea óptima o no).
• seleccionar (C). Devuelve el elemento más “prometedor” del conjunto de
candidatos pendientes (no seleccionados ni rechazados).
• factible (C). Indica si a partir del conjunto de candidatos C es posible
construir una solución (posiblemente añadiendo otros elementos).
• Insertar un elemento en la solución. Además de la inserción, puede ser
necesario hacer otras cosas.
• Función objetivo (S). Dada una solución devuelve el coste asociado a la
misma (resultado del problema de optimización).
Problema del cambio de monedas
• Disponemos de monedas de distintos valores: de 1, 2, 5, 10, 20 y 50
céntimos de euro, y de 1 y 2 euros.
• Supondremos una cantidad ilimitada de cada una.
• Construir un algoritmo que dada una cantidad P devuelva esa cantidad con
monedas de estos tipos, usando un número mínimo de monedas.
• P. ej.: para devolver 3.89 €: 1 monedas de 2€, 1 moneda de 1€, 1 moneda
de 50 c€, 1 moneda de 20 c€, 3 monedas de 5 c€ y 2 monedas de 2 c€.
• Podemos aplicar la técnica voraz: en cada paso añadir una moneda nueva
a la solución actual, hasta que el valor llegue a P.
C++
• “Supón que una maquina de monedas de 10,5,2,1 y
50 centavos. Debes escribir un programa que decida
cuantas monedas dará de cambio, dando prioridad las
de mayor denominación. Debe recibir como entrada la
cantidad de dar a cambio. Ejemplo: para $40.50
será 4 de 10, 0 de 5, 0 de 2, 0 de 1 y 1 de 50
centavos.”
Algoritmos Probabilisticos
Deja al azar la toma de algunas
decisiones.
• Cuando la decisión óptima
llevaría mucho tiempo.
• Problemas con múltiples soluciones
correctas.
Ejemplos:
• Encontrar el k ésimo menor
elemento de un vector de n
elementos – Problema de las ocho
reinas.
• Encontrar un factor de un número
compuesto
Carcacterísticas de los algoritmos probabilistas:
• Un mismo algoritmo se puede comportar de forma diferente al aplicarse
varias veces a un mismo caso. Su tiempo de ejecución y el resultado
obtenido puede ser diferente.
• Terminación: A diferencia de los algoritmos no probabilistas que no
permiten que se pierda el control (bucle infinito, división por cero,.), los
algoritmos probabilistas si que lo permiten, ya que ante una situación de
bloqueo pueden reiniciarse otravez.
• Resultados erróneos: En algunos casos se permite que los algoritmos
probabilistas produzcan
Clasificación de los algoritmos
probabilistas
• Algoritmos Numéricos, que proporcionan una solución aproximada del
problema.
• Algoritmos de Montecarlo, que pueden dar la respuesta correcta o
respuesta erróneas (con probabilidad baja).
• Algoritmos de Las Vegas, que nunca dan una respuesta incorrecta: o bien
no encuentran la respuesta correcta e informan del fallo.
Algoritmo numérico ejecutado cinco veces:
• “Entre 1490 y 1500.”
• “Entre 1485 y 1495.”
• “Entre 1491 y 1501.”
• “Entre 1480 y 1490.”
• “Entre 1489 y 1499.”
• Aparentemente, la probabilidad de dar un intervalo erróneo es del 20% (1
de cada 5). • Dando más tiempo a la ejecución se podría reducir esa
probabilidad o reducir la anchura del intervalo (a menos de 11 años).
Algoritmo de Monte Carlo ejecutado diez
veces:
• 1492, 1492, 1492, 1491, 1492, 1492, 357 A.C., 1492, 1492, 1492.
• De nuevo un 20% de error. Este porcentaje puede reducirse dando más tiempo
para la ejecución.
• Las respuestas incorrectas pueden ser próximas a la correcta o completamente
desviadas.
Algoritmo de Las Vegas ejecutado diez
veces:
• 1492, 1492, ¡Error!, 1492, 1492, 1492, 1492, 1492, ¡Error!, 1492.
• El algoritmo nunca da una respuesta incorrecta.
• El algoritmo falla con una cierta probabilidad (20% en este caso).
Algoritmos Geometricos
• La geometría computacional es
una rama de la ciencia de la
computación que estudia
algoritmos para resolver
problemas geométricos.
• Aplicaciones Computación gráfica,
CAD (Computer-Aided Design),
robótica, diseño de circuitos
integrados, GIS (Geographic
information System),…
Máximo número de puntos en una recta.
Intersección recta-recta.
Intersección recta-segmento y segmento-
segmento.
Incírculo y circuncírculo de triángulos.
Algoritmos Paralelos
• Los problemas que pueden
resolverse mediante un algoritmo
paralelo son, obviamente, muy
heterogéneos.
• Suelen ser problemas de
complejidad elevada, aún no
perteneciendo al grupo de
problemas intratables (el número
de operaciones crece de forma
rápida –p.e. exponencial– con el
tamaño del problema).
Algoritmos de Tiempo Real
Características Generales
• Usado típicamente para aplicaciones
integradas, normalmente tiene las
siguientes características:
• No utiliza mucha memoria
• Cualquier evento en el soporte físico
puede hacer que se ejecute una tarea
• Multi-arquitectura (código portado a
cualquier tipo de CPU)
• Muchos tienen tiempos de respuesta
predecibles para eventos electrónicos
Se caracterizan por presentar
requisitos especiales en cinco áreas
generales:
• Determinismo
• Sensibilidad
• Control del usuario
• Fiabilidad
• Tolerancia a los fallos
• Son de tiempo compartido
El Paquete Calendar de ADA
Algoritmos Genetico
• First bullet point here
• Second bullet point here
• Third bullet point here
Group
A
Task
1
Task
2
Task
3
Task
4

Más contenido relacionado

La actualidad más candente

La actualidad más candente (20)

Unit 1 chapter 1 Design and Analysis of Algorithms
Unit 1   chapter 1 Design and Analysis of AlgorithmsUnit 1   chapter 1 Design and Analysis of Algorithms
Unit 1 chapter 1 Design and Analysis of Algorithms
 
2.6 aplicaciones
2.6 aplicaciones2.6 aplicaciones
2.6 aplicaciones
 
Matrices
MatricesMatrices
Matrices
 
Estructura de Datos - árboles y grafos
Estructura de Datos - árboles y grafosEstructura de Datos - árboles y grafos
Estructura de Datos - árboles y grafos
 
Metodo quicksort
Metodo quicksortMetodo quicksort
Metodo quicksort
 
Metodos de-ordenamiento
Metodos de-ordenamientoMetodos de-ordenamiento
Metodos de-ordenamiento
 
Complejidad de algoritmos
Complejidad de algoritmos Complejidad de algoritmos
Complejidad de algoritmos
 
Exposicion Caminos de euler
Exposicion Caminos de eulerExposicion Caminos de euler
Exposicion Caminos de euler
 
Trazadores cúbico spline
Trazadores  cúbico splineTrazadores  cúbico spline
Trazadores cúbico spline
 
1.4 software numerico
1.4 software numerico1.4 software numerico
1.4 software numerico
 
Diagrama de Flujos Ejemplos.
Diagrama de Flujos Ejemplos.Diagrama de Flujos Ejemplos.
Diagrama de Flujos Ejemplos.
 
Teorema de Bayes
Teorema de BayesTeorema de Bayes
Teorema de Bayes
 
Grafos eulerianos y hamiltonianos
Grafos eulerianos y hamiltonianosGrafos eulerianos y hamiltonianos
Grafos eulerianos y hamiltonianos
 
Greedy Algorithm
Greedy AlgorithmGreedy Algorithm
Greedy Algorithm
 
Mapa conceptual arboles binarios
Mapa conceptual arboles binariosMapa conceptual arboles binarios
Mapa conceptual arboles binarios
 
Cuadro comparativo
Cuadro comparativoCuadro comparativo
Cuadro comparativo
 
Ejercicios de matrices y vectores en c++
Ejercicios de matrices y vectores en c++Ejercicios de matrices y vectores en c++
Ejercicios de matrices y vectores en c++
 
Algorithms Lecture 1: Introduction to Algorithms
Algorithms Lecture 1: Introduction to AlgorithmsAlgorithms Lecture 1: Introduction to Algorithms
Algorithms Lecture 1: Introduction to Algorithms
 
TRABAJO DE GRAFOS
TRABAJO DE GRAFOSTRABAJO DE GRAFOS
TRABAJO DE GRAFOS
 
Quicksort
QuicksortQuicksort
Quicksort
 

Similar a Analisis y diseño de algoritmos

Analisis y-diseño-de-algoritmos
Analisis y-diseño-de-algoritmosAnalisis y-diseño-de-algoritmos
Analisis y-diseño-de-algoritmosYared Redman
 
Algoritmos Voraces (Greedy)
Algoritmos Voraces (Greedy)Algoritmos Voraces (Greedy)
Algoritmos Voraces (Greedy)luzenith_g
 
Analisis y diseño de algoritmo
Analisis y diseño de algoritmoAnalisis y diseño de algoritmo
Analisis y diseño de algoritmoJose Lluberes
 
CÁLCULO Y MANEJO DE ERRORES DE MAX ASUAJE
CÁLCULO Y MANEJO DE ERRORES DE MAX ASUAJECÁLCULO Y MANEJO DE ERRORES DE MAX ASUAJE
CÁLCULO Y MANEJO DE ERRORES DE MAX ASUAJEfabianaquileshey
 
Materia: Analisis Numerico
Materia: Analisis NumericoMateria: Analisis Numerico
Materia: Analisis NumericoMilagros Lopez
 
Análisis y Diseño de Algoritmos
Análisis y Diseño de Algoritmos Análisis y Diseño de Algoritmos
Análisis y Diseño de Algoritmos linuxsanchez
 
Unidad 1 Introducción a los Algoritmos.ppt
Unidad 1 Introducción a los Algoritmos.pptUnidad 1 Introducción a los Algoritmos.ppt
Unidad 1 Introducción a los Algoritmos.pptssuser6eba56
 
Unidad 2 introducción a los algoritmos
Unidad 2 introducción a los algoritmosUnidad 2 introducción a los algoritmos
Unidad 2 introducción a los algoritmosAlexandra Ochoa
 
Numero pseudoaleatorio
Numero pseudoaleatorioNumero pseudoaleatorio
Numero pseudoaleatorioalan moreno
 
Presentacion algoritmos
Presentacion algoritmosPresentacion algoritmos
Presentacion algoritmosaralylopez88
 
Tema1 faa 16_17
Tema1 faa 16_17Tema1 faa 16_17
Tema1 faa 16_17alexray100
 
1 conceptos algoritmos
1 conceptos algoritmos1 conceptos algoritmos
1 conceptos algoritmosLeidy Campos
 
Analisis numerico axcel quintero
Analisis numerico axcel quinteroAnalisis numerico axcel quintero
Analisis numerico axcel quinterotareasuft
 

Similar a Analisis y diseño de algoritmos (20)

Analisis y-diseño-de-algoritmos
Analisis y-diseño-de-algoritmosAnalisis y-diseño-de-algoritmos
Analisis y-diseño-de-algoritmos
 
Algoritmos Voraces (Greedy)
Algoritmos Voraces (Greedy)Algoritmos Voraces (Greedy)
Algoritmos Voraces (Greedy)
 
Algoritmo
AlgoritmoAlgoritmo
Algoritmo
 
Analisis y diseño de algoritmo
Analisis y diseño de algoritmoAnalisis y diseño de algoritmo
Analisis y diseño de algoritmo
 
CÁLCULO Y MANEJO DE ERRORES DE MAX ASUAJE
CÁLCULO Y MANEJO DE ERRORES DE MAX ASUAJECÁLCULO Y MANEJO DE ERRORES DE MAX ASUAJE
CÁLCULO Y MANEJO DE ERRORES DE MAX ASUAJE
 
Analisis numerico
Analisis numericoAnalisis numerico
Analisis numerico
 
Materia: Analisis Numerico
Materia: Analisis NumericoMateria: Analisis Numerico
Materia: Analisis Numerico
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
Análisis y Diseño de Algoritmos
Análisis y Diseño de Algoritmos Análisis y Diseño de Algoritmos
Análisis y Diseño de Algoritmos
 
Unidad 1 Introducción a los Algoritmos.ppt
Unidad 1 Introducción a los Algoritmos.pptUnidad 1 Introducción a los Algoritmos.ppt
Unidad 1 Introducción a los Algoritmos.ppt
 
Unidad 2 introducción a los algoritmos
Unidad 2 introducción a los algoritmosUnidad 2 introducción a los algoritmos
Unidad 2 introducción a los algoritmos
 
Numero pseudoaleatorio
Numero pseudoaleatorioNumero pseudoaleatorio
Numero pseudoaleatorio
 
Presentacion algoritmos
Presentacion algoritmosPresentacion algoritmos
Presentacion algoritmos
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
Tema1 faa 16_17
Tema1 faa 16_17Tema1 faa 16_17
Tema1 faa 16_17
 
1 conceptos algoritmos
1 conceptos algoritmos1 conceptos algoritmos
1 conceptos algoritmos
 
Yaritza columba
Yaritza columbaYaritza columba
Yaritza columba
 
Cap1.3
Cap1.3Cap1.3
Cap1.3
 
Analisis numerico axcel quintero
Analisis numerico axcel quinteroAnalisis numerico axcel quintero
Analisis numerico axcel quintero
 

Analisis y diseño de algoritmos

  • 1. Analisis y Diseño de Algoritmos Rawel Luciano 16-0511
  • 2. Tipos de Algoritmos: • Algoritmos Voraces • Algoritmos Probabilisticos • Algoritmos Geometricos • Algoritmos Paralelos • Algoritmos de Tiempo Real • Algoritmos Genetico
  • 3. Algoritmos Voraces • Los algoritmos voraces, ávidos o de avance rápido (greedy) se utilizan normalmente en problemas de optimización, donde una solución está formada por un conjunto de elementos entre un conjunto de candidatos (con un orden determinado o no). • El algoritmo voraz funciona por pasos: • Partimos de una solución vacía. • En cada paso se escoge el siguiente elemento para añadir a la solución, entre los candidatos. • Una vez tomada esta decisión no se podrá deshacer. • El algoritmo acabará cuando el conjunto de elementos seleccionados constituya una solución.
  • 5. Metodo General • Funciones: • solución (S). Comprueba si un conjunto de candidatos es una solución (independientemente de que sea óptima o no). • seleccionar (C). Devuelve el elemento más “prometedor” del conjunto de candidatos pendientes (no seleccionados ni rechazados). • factible (C). Indica si a partir del conjunto de candidatos C es posible construir una solución (posiblemente añadiendo otros elementos). • Insertar un elemento en la solución. Además de la inserción, puede ser necesario hacer otras cosas. • Función objetivo (S). Dada una solución devuelve el coste asociado a la misma (resultado del problema de optimización).
  • 6. Problema del cambio de monedas • Disponemos de monedas de distintos valores: de 1, 2, 5, 10, 20 y 50 céntimos de euro, y de 1 y 2 euros. • Supondremos una cantidad ilimitada de cada una. • Construir un algoritmo que dada una cantidad P devuelva esa cantidad con monedas de estos tipos, usando un número mínimo de monedas. • P. ej.: para devolver 3.89 €: 1 monedas de 2€, 1 moneda de 1€, 1 moneda de 50 c€, 1 moneda de 20 c€, 3 monedas de 5 c€ y 2 monedas de 2 c€. • Podemos aplicar la técnica voraz: en cada paso añadir una moneda nueva a la solución actual, hasta que el valor llegue a P.
  • 7. C++ • “Supón que una maquina de monedas de 10,5,2,1 y 50 centavos. Debes escribir un programa que decida cuantas monedas dará de cambio, dando prioridad las de mayor denominación. Debe recibir como entrada la cantidad de dar a cambio. Ejemplo: para $40.50 será 4 de 10, 0 de 5, 0 de 2, 0 de 1 y 1 de 50 centavos.”
  • 8. Algoritmos Probabilisticos Deja al azar la toma de algunas decisiones. • Cuando la decisión óptima llevaría mucho tiempo. • Problemas con múltiples soluciones correctas. Ejemplos: • Encontrar el k ésimo menor elemento de un vector de n elementos – Problema de las ocho reinas. • Encontrar un factor de un número compuesto
  • 9. Carcacterísticas de los algoritmos probabilistas: • Un mismo algoritmo se puede comportar de forma diferente al aplicarse varias veces a un mismo caso. Su tiempo de ejecución y el resultado obtenido puede ser diferente. • Terminación: A diferencia de los algoritmos no probabilistas que no permiten que se pierda el control (bucle infinito, división por cero,.), los algoritmos probabilistas si que lo permiten, ya que ante una situación de bloqueo pueden reiniciarse otravez. • Resultados erróneos: En algunos casos se permite que los algoritmos probabilistas produzcan
  • 10. Clasificación de los algoritmos probabilistas • Algoritmos Numéricos, que proporcionan una solución aproximada del problema. • Algoritmos de Montecarlo, que pueden dar la respuesta correcta o respuesta erróneas (con probabilidad baja). • Algoritmos de Las Vegas, que nunca dan una respuesta incorrecta: o bien no encuentran la respuesta correcta e informan del fallo.
  • 11.
  • 12. Algoritmo numérico ejecutado cinco veces: • “Entre 1490 y 1500.” • “Entre 1485 y 1495.” • “Entre 1491 y 1501.” • “Entre 1480 y 1490.” • “Entre 1489 y 1499.” • Aparentemente, la probabilidad de dar un intervalo erróneo es del 20% (1 de cada 5). • Dando más tiempo a la ejecución se podría reducir esa probabilidad o reducir la anchura del intervalo (a menos de 11 años).
  • 13. Algoritmo de Monte Carlo ejecutado diez veces: • 1492, 1492, 1492, 1491, 1492, 1492, 357 A.C., 1492, 1492, 1492. • De nuevo un 20% de error. Este porcentaje puede reducirse dando más tiempo para la ejecución. • Las respuestas incorrectas pueden ser próximas a la correcta o completamente desviadas.
  • 14. Algoritmo de Las Vegas ejecutado diez veces: • 1492, 1492, ¡Error!, 1492, 1492, 1492, 1492, 1492, ¡Error!, 1492. • El algoritmo nunca da una respuesta incorrecta. • El algoritmo falla con una cierta probabilidad (20% en este caso).
  • 15. Algoritmos Geometricos • La geometría computacional es una rama de la ciencia de la computación que estudia algoritmos para resolver problemas geométricos. • Aplicaciones Computación gráfica, CAD (Computer-Aided Design), robótica, diseño de circuitos integrados, GIS (Geographic information System),…
  • 16. Máximo número de puntos en una recta.
  • 18. Intersección recta-segmento y segmento- segmento.
  • 19. Incírculo y circuncírculo de triángulos.
  • 20. Algoritmos Paralelos • Los problemas que pueden resolverse mediante un algoritmo paralelo son, obviamente, muy heterogéneos. • Suelen ser problemas de complejidad elevada, aún no perteneciendo al grupo de problemas intratables (el número de operaciones crece de forma rápida –p.e. exponencial– con el tamaño del problema).
  • 21.
  • 22.
  • 23.
  • 25. Características Generales • Usado típicamente para aplicaciones integradas, normalmente tiene las siguientes características: • No utiliza mucha memoria • Cualquier evento en el soporte físico puede hacer que se ejecute una tarea • Multi-arquitectura (código portado a cualquier tipo de CPU) • Muchos tienen tiempos de respuesta predecibles para eventos electrónicos Se caracterizan por presentar requisitos especiales en cinco áreas generales: • Determinismo • Sensibilidad • Control del usuario • Fiabilidad • Tolerancia a los fallos • Son de tiempo compartido
  • 27. Algoritmos Genetico • First bullet point here • Second bullet point here • Third bullet point here Group A Task 1 Task 2 Task 3 Task 4