Clasificacion de los problemas

Download Clasificacion de los problemas

Post on 30-Jul-2015

89 views

Category:

Documents

1 download

Embed Size (px)

TRANSCRIPT

<p> 1. Complejidad de Algoritmos Cundo proporciona un algoritmo una solucin SATISFACTORIA a un problema? Primero, debe producir siempre la respuesta correcta. Segundo, deber ser eficiente. Cmo se puede analizar la eficiencia de los algoritmos? Una medida de eficiencia es el tiempo que requiere un ordenador para resolver un problema utilizando un algoritmo para valores de entrada de un tamao especfico. Una segunda medida es la cantidad de memoria que se necesita de nuevo para valores de entrada de un tamao dado. Una tercera medida sera estabilidad: un ordenamiento estable mantiene el orden relativo que tenan originalmente los elementos con claves iguales. Un anlisis del tiempo requerido para resolver un problema de un tamao particular est relacionado con la complejidad en tiempo del algoritmo y un anlisis de la memoria de ordenador requerida involucra la complejidad en espacio del algoritmo. Obviamente, es importante saber si un algoritmo producir su respuesta en un milisegundo, en un minuto o en un milln de aos y de manera similar debemos tener suficiente memoria disponible para poder resolver el problema. 2. Las consideraciones sobre complejidad en espacio estn ligadas a las estructuras de datos usadas en la implementacin del algoritmo. La complejidad en el tiempo de un algoritmo se puede expresar en trminos del nmero de operaciones que realiza el algoritmo cuando los datos de entrada tienen un tamao particular. (comparacin de enteros, sumas, multiplicaciones, etc.) La complejidad se describe en trminos del nmero de operaciones requeridas en lugar del tiempo de clculo real, debido a que distintos ordenadores necesitan tiempos diferentes para realizar las mismas operaciones bsicas. Cada algoritmo se comporta de modo diferente de acuerdo a cmo se le entregue la informacin; por eso es conveniente estudiar su comportamiento en casos extremos, como cuando los datos estn prcticamente ordenados o muy desordenados. Complejidad del peor caso.- Por comportamiento de un algoritmo en el peor caso entendemos el mayor nmero de operaciones que hace falta para resolver el problema dad utilizando el algoritmo para unos datos de entrada de un determinado tamao. Los anlisis del peor caso nos dicen cuntas operaciones tienen que realizar los algoritmos para garantizar que producirn una solucin. Complejidad del caso promedio.- En este tipo de anlisis de complejidad se busca el nmero promedio de operaciones realizadas para solucionar un problema considerando todas las posibles entradas de un tamao determinado. El anlisis de la complejidad del caso promedio es generalmente mucho ms complicado que el anlisis del peor caso. 3. La complejidad del algoritmo se denota segn la notacin Big-O. Las expresiones Big-O no tienen constantes o trminos de orden bajo. Esto se debe a que cuando N es muy grande, las constantes y los trminos mas bajos no existen (un mtodo constante ser ms rpido que uno lineal y este ser ms rpido que uno cuadrtico). Por ejemplo, O(n) significa que el algoritmo tiene una complejidad lineal. En otras palabras, toma 10 veces ms tiempo en operar un set de 100 datos que en hacerlo con un set de 10 items. Si la complejidad fuera O(n2) entonces tomara 100 veces ms tiempo en operar 100 items que en hacerlo con 10. Complejidad Terminologa O(1) Complejidad constante O(log n) Complejidad logartmica O(n) Complejidad lineal O(n log n) Complejidad n log n O(n^b) Complejidad polinmica O(b^n) Complejidad exponencial O(n!) Complejidad factorial 4. Problemas Tratables, Intratables y NP-completos Clase P.- Los algoritmos de complejidad polinmica se dice que son tratables en el sentido de que suelen ser abordables en la prctica. Los problemas para los que se conocen algoritmos con esta complejidad se dice que forman la clase P. Aquellos problemas para los que la mejor solucin que se conoce es de complejidad superior a la polinmica, se dice que son problemas intratables. Clase NP.- Algunos de estos problemas intratables pueden caracterizarse por el curioso hecho de que puede aplicarse un algoritmo polinmico para comprobar si una posible solucin es vlida o no. Esta caracterstica lleva a un mtodo de resolucin no determinista consistente en aplicar heursticos para obtener soluciones hipotticas que se van desestimando (o aceptando) a ritmo polinmico. Los problemas de esta clase se denominan NP (la N de no-deterministas y la P de polinmicos). Clase NP-completos.- Se conoce una amplia variedad de problemas de tipo NP, de los cuales destacan algunos de ellos de extrema complejidad. Grficamente podemos decir que algunos problemas se hayan en la "frontera externa" de la clase NP. Son problemas NP, y son los peores problemas posibles de clase NP. Estos problemas se caracterizan por ser todos "iguales" en el sentido de que si se descubriera una solucin P para alguno de ellos, esta solucin sera fcilmente aplicable a todos ellos. Actualmente hay un premio de prestigio equivalente al Nobel reservado para el que descubra semejante solucin. 5. El algoritmo requiere menos de O(n) comparaciones y cambios en el pero caso. Aunque es fcil desarrollar intuitivamente el sentido de cmo funciona el algoritmo, es bastante difcil analizar su tiempo de ejecucin pero los estimados difieren entre O(nlog2n) a O(n1.5) dependiendo de los detalles de implementacin Dependiendo en la eleccin de la secuencia de saltos, Shell sort a probado tener un tiempo de ejecucin en el peor caso igual a O(n2), O(n3/2), O(n4/3) o O(nlog2n) o posiblemente mejores tiempos de ejecucin an no probados. La existencia de una implementacin que tenga una complejidad O(nlogn) en el peor caso para el Shell sort an se mantiene como una pregunta abierta a la investigacin. El tamao del set de datos usado tiene un impacto significativo en la eficiencia del algoritmo. Algunas implementaciones de este algoritmo tienen una funcin que permite calcular el tamao ptimo del set de datos para un array determinado. La secuencia de salto que fue sugerida inicialmente por Donald Shell fue comenzar con N/2 y posteriormente disminuir a la mitad el salto hasta que llegue a 1. Esta secuencia provee una mejora de desempeo sobre los algoritmos cuadrticos como el mtodo por insercin pero puede ser cambiada levemente para disminuir an mas el tiempo de ejecucin en el peor y el caso promedio. 6. El algoritmo requiere menos de O(n) comparaciones y cambios en el pero caso. Aunque es fcil desarrollar intuitivamente el sentido de cmo funciona el algoritmo, es bastante difcil analizar su tiempo de ejecucin pero los estimados difieren entre O(nlog2n) a O(n1.5) dependiendo de los detalles de implementacin Dependiendo en la eleccin de la secuencia de saltos, Shell sort a probado tener un tiempo de ejecucin en el peor caso igual a O(n2), O(n3/2), O(n4/3) o O(nlog2n) o posiblemente mejores tiempos de ejecucin an no probados. La existencia de una implementacin que tenga una complejidad O(nlogn) en el peor caso para el Shell sort an se mantiene como una pregunta abierta a la investigacin. El tamao del set de datos usado tiene un impacto significativo en la eficiencia del algoritmo. Algunas implementaciones de este algoritmo tienen una funcin que permite calcular el tamao ptimo del set de datos para un array determinado. La secuencia de salto que fue sugerida inicialmente por Donald Shell fue comenzar con N/2 y posteriormente disminuir a la mitad el salto hasta que llegue a 1. Esta secuencia provee una mejora de desempeo sobre los algoritmos cuadrticos como el mtodo por insercin pero puede ser cambiada levemente para disminuir an mas el tiempo de ejecucin en el peor y el caso promedio. </p>