You are on page 1of 17

Asignatura: Anlisis de Algoritmos

Profesor: Jorge Romero

Complemento Presentaciones

Tipos de Algoritmos Clasificacin de problemas Convencin de nombres Clases P y NP Maquinas de turing Prueba de turing Divide y venceras Algoritmos Voraces Programacin Dinmica

Asignatura: Anlisis de Algoritmos

Profesor: Jorge Romero

Tipos de algoritmos

Deterministas: aquellos en los que en cada iteracin se decide de forma nica el paso siguiente. No deterministas: aquellos en los que en cada iteracin podemos decidir entre varias posibilidades y consumirlas todas antes de la siguiente iteracin. Como hemos visto en los puntos anteriores los algoritmos tienen diferentes caractersticas entre ellas est la necesidad de utilizar una serie de recursos, como son el tiempo y la memoria. Dichos recursos hay que tenerlos muy en cuenta a la hora de implementar los algoritmos en una mquina determinada. Podemos definir: Tiempo: como el perodo transcurrido desde el inicio de la ejecucin del algoritmo hasta el momento que finaliza la ejecucin. Memoria: como lo que necesita el algoritmo para su ejecucin, puede variar la necesidad de la misma segn la mquina. Podemos deducir de esto, que las caractersticas de la mquina influirn notablemente en el diseo del algoritmo. Casi todos los problemas tienen un parmetro de entrada que hace referencia al nmero de datos que trataremos y que normalmente representamos con el smbolo N. El nmero de recursos del algoritmo es tratado como una funcin de N, por lo que podemos establecer el tiempo de ejecucin del algoritmo.

Asignatura: Anlisis de Algoritmos

Profesor: Jorge Romero

Clasificacin de problemas
Problemas indecidibles: aquellos problemas los cuales no se pueden solucionar a travs de un algoritmo. Problemas decidibles: aquellos problemas que cuentan al menos con un algoritmo para su cmputo o solucin. Sin embargo, que un problema sea decidible no implica que pueda ser resuelto, existen gran cantidad de problemas que cuentan con algoritmos para su resolucin, pero son inabordables para un computador por el gran nmero de operaciones que hay que realizar para hallar su solucin. Esto permite separar los problemas decidibles en dos: Intratables: aquellos para los que no es factible obtener su solucin. Tratables: aquellos para los que existe al menos un algoritmo capaz de resolverlo en un tiempo razonable. Tambin podemos llevar a cabo otra clasificacin de los problemas matemticos atendiendo a su complejidad:

Asignatura: Anlisis de Algoritmos

Profesor: Jorge Romero

Clasificacin de problemas
Clase P: en la que encajaramos los problemas para los que existe un algoritmo polinmico que los soluciona. Estos algoritmos son deterministas. Clase NP: en la que englobaramos los problemas cuyos algoritmos son no deterministas. Podemos concluir que los problemas correspondientes a la clase P sera un subconjunto de los de la clase NP, ya que solo cuentan con una alternativa en cada iteracin.

Asignatura: Anlisis de Algoritmos

Profesor: Jorge Romero

Convenciones de nombres
Convencin de nombres que incluyen las siglas NPLos nombres de familias de problemas con las siglas NP es algo confusa. Los problemas NP-hard no son todos NP, a pesar de que estas siglas aparecen es el nombre de la familia. Sin embargo, los nombres estn actualmente muy arraigados y plantear un cambio de nomenclatura resulta poco realista. Por otra parte, las familias de problemas con las siglas NP son todas definidas tomando como referencia la familia NP: NP-completo significa problemas que son completos en NP, es decir, los ms difciles de resolver en NP; NP-hard (NP-difcil) quiere decir al menos tan complejo como NP (pero no necesariamente en NP); NP-easy (NP-fcil) quiere decir a lo sumo o a lo mas tan difcil como NP (pero no necesariamente en NP); NP-equivalente significa igualmente difcil que NP, (pero no necesariamente en NP).

Asignatura: Anlisis de Algoritmos

Profesor: Jorge Romero

Clases P y NP
La clase P consiste en aquellos problemas que son solucionables en tiempo polinomial. La clase P contiene problemas que pueden resolverse rpidamente. La clase NP es aquella cuyos problemas son verificables en tiempo polinomial. La clase NP contiene problemas cuya solucin puede verificarse rpidamente. Puede ser resuelto en tiempo polinomial pero usando una computadora no determinstica

Asignatura: Anlisis de Algoritmos

Profesor: Jorge Romero

Prueba de turing
Completely Automated Public Turing Test to tell Computers and Humans Apart (Prueba de Turing pblica y automtica para diferenciar mquinas y humanos)

Asignatura: Anlisis de Algoritmos

Profesor: Jorge Romero

Maquina de turing
Una mquina de Turing es una mquina ideal -formalmente hablando se trata de un algoritmo- en dos aspectos bsicos. La primera idealizacin se debe a que su memoria es ilimitada. La segunda idealizacin se produce por el hecho de una mquina de Turing nunca comete errores. A efectos de representar una mquina de Turing, podemos imaginarla como una cinta infinita dividida en cuadros sobre la que se realizan las operaciones de manipulacin de smbolos. La mquina dispone de un lector que realiza las siguientes funciones:
Est situado en todo momento ante uno de los cuadros de la cinta Lee lo que hay en ese cuadro. Lleva a cabo una instruccin en el momento siguiente.

Asignatura: Anlisis de Algoritmos

Profesor: Jorge Romero

Problema de la parada
Turing demostr que existen problemas que una computadora no puede resolver, existen funciones que no son posibles calcular mediante la mquina de Turing, ya que no admiten una solucin algortmica. El ms conocido de ellos es el problema de la parada, que consiste en determinar si una mquina de Turing cualquiera se parar en un tiempo determinado sobre una entrada determinada. Podemos decir que no existe ningn mtodo que permita predecir en todos los casos, una vez que un computador ha comenzado un clculo, si dicho clculo terminar alguna vez. En algunos casos, lo ms que puede hacer es ejecutar el programa y esperar (eternamente?). Este problema y sus conclusiones son fundamentales en el tratamiento de los bucles infinitos.

Asignatura: Anlisis de Algoritmos

Profesor: Jorge Romero

Divide y vencers
Esta tcnica consiste en dividir un problema original en subproblemas que sean:
De la misma naturaleza que el problema original De menor tamao

Cuando se debe resolver un nico subproblema de menor tamao, esta tcnica se denomina reduccin o simplicacin

Asignatura: Anlisis de Algoritmos

Profesor: Jorge Romero

Algoritmos Voraces
Caractersticas de un algoritmo voraz
Son fciles de implementar y eficientes Se basan en tomar decisiones basadas en la informacin disponible en cada momento Suelen utilizarse para resolver problemas de optimizacin No tienen en cuenta los efectos de las decisiones en el futuro Nunca se reconsidera una decisin tomada Es importante demostrar que la solucin que propone el algoritmo es la optima Pero hay muchos problemas que no se pueden resolver correctamente con este enfque

Asignatura: Anlisis de Algoritmos

Profesor: Jorge Romero

Algoritmos Voraces
Los algoritmos voraces se caracterizan por las siguientes propiedades:
El objetivo es resolver un problema de forma optima. Para construir la solucin del problema, se dispone de un conjunto de candidatos Durante la evolucin del algoritmo, se mantienen dos conjuntos:
Candidatos ya considerados y seleccionados para la solucin Candidatos ya considerados y rechazados

Existe una funcin que determina si un conjunto de candidatos es solucin del problema Existe una funcin de factibilidad que determina si un conjunto de candidatos es factible (si aadiendo mas candidatos es posible construir una solucin) Existe una funcin de seleccin que indica que candidato de los restantes es el mas prometedor Existe una funcin objetivo que proporciona el coste de una solucin. Esta funcin es la que el algoritmo pretende optimizar (maximizar o minimizar). Esta funcin no aparece explcitamente en el algoritmo

Asignatura: Anlisis de Algoritmos

Profesor: Jorge Romero

Algoritmos Voraces
Inicialmente, los conjuntos de elementos seleccionados y rechazados estan vacios. En cada paso del algoritmo:
1. Se considera el mejor candidato sin considerar a los restantes, exclusivamente mediante la funcin de seleccin. 2. Si el conjunto de candidatos seleccionados extendido con este nuevo candidato no es factible, se aade al conjunto de candidatos rechazados. 3. Si es factible, se aade al conjunto de candidatos seleccionados. 4. Se comprueba si este conjunto es solucin del problema. Si no lo es, se realiza un nuevo paso del algoritmo (se vuelve a 1)

Asignatura: Anlisis de Algoritmos

Profesor: Jorge Romero

Algoritmos Voraces

Si el algoritmo voraz funciona correctamente, la primera solucin que encuentre de esta manera es una solucion optima. Los algoritmos voraces nunca reconsideran las decisiones tomadas. Ejemplo:
Maquina que vende bebidas. Funciona con monedas y debe calcular el mnimo de monedas posibles para entregar un vuelto al consumidor.

Los candidatos son las monedas de distinto valor, en nuestro caso en cantidad ilimitada (aunque el conjunto debe ser finito) La funcin solucin comprueba si el valor de las monedas es exactamente el importe a pagar. La funcin de factibilidad comprueba si el valor total de las monedas seleccionadas no sobrepasa el importe a pagar La funcin de seleccin toma la moneda de valor mas alto que quede en el conjunto de candidatos La funcin objetivo es el numero de monedas utilizadas en la solucion. En este caso el problema de optimizacin que se resuelve debe minimizar la funcin objetivo

Asignatura: Anlisis de Algoritmos

Profesor: Jorge Romero

Programacin Dinmica

En el esquema Divide y Vencers vimos una serie de problemas cuyas soluciones se pueden representar mediante la subdivisin en subproblemas. El objetivo de la programacin dinmica consiste en resolver los subproblemas una sola vez, guardando las soluciones obtenidas hasta el momento en una tabla. Podemos comparar la programacin dinmica con otros mtodos: Divide y venceras:
El mtodo Divide y vencers es un mtodo descendente, de refinamiento progresivo

La programacin dinmica es una tcnica ascendente, que soluciona de forma iterativa problemas tpicamente recursivos. Algoritmos voraces.
Los algoritmos voraces buscan la solucion al problema mediante un conjunto de etapas y una eleccin voraz

La programacin dinmica resuelve un caso a partir de otros de menor tamao, y aplica el principio de optimalidad

Asignatura: Anlisis de Algoritmos

Profesor: Jorge Romero

Programacin Dinmica
El diseo de un algoritmo de este tipo consta de los siguientes pasos: Planteamiento de la solucin como una sucesin de decisiones (velicacin del principio de optimalidad) Definicin recursiva de la solucin Calculo del valor de la solucion optima de forma ascendente (bottom-up), mediante una tabla donde se almacenan soluciones a problemas parciales para reutilizar clculos. Construccin de la solucion optima con la informacin de la tabla anterior

Asignatura: Anlisis de Algoritmos

Profesor: Jorge Romero