Sie sind auf Seite 1von 14

COMPLEJIDAD COMPUTACIONAL Y HEURSTICAS

UNIVERSIDAD DE CUENCA

RODRIGO SEMPERTEGUI
Enero/2013

COMPLEJIDAD COMPUTACIONAL Y HEURSTICAS

2011

COMPLEJIDAD COMPUTACIONAL Y HEURSTICAS

2011

INTRODUCCIN Para estudiar un sistema es necesario elaborar un modelo, el cual sea una representacin formal de la teora o una explicacin formal de la observacin cientfica. La modelacin de sistemas es una metodologa aplicada y experimental que pretende: 1. Describir el comportamiento de los sistemas. 2. Hiptesis que problemticas. expliquen el comportamiento de situaciones

3. Predecir un comportamiento futuro, es decir, los efectos que se producirn mediante cambios en el sistema o en su mtodo de operacin. Al analizar un sistema podemos observar, que al cambiar un aspecto del mismo, se producen cambios o alteraciones en otros. Es en estos casos en los que la simulacin, representa una buena alternativa para analizar el diseo y operacin de complejos procesos o sistemas. Sin embargo una vez planteado el modelo su resolucin prctica exige por una parte un algoritmo o mtodo de resolucin y por otra un programa o codificacin de aquel en un ordenador real, ambas partes tienen su importancia, pero la del algoritmo es esencial mientras que la codificacin para un programa computacional depende del conocimiento del programador. Sabiendo que existen muchas alternativas de solucin para un problema, se debe seleccionar el algoritmo ms eficiente, el mejor conjunto de pasos, el que tarde menos en ejecutarse, que tenga menos lneas de cdigo. La eleccin en algunas ocasiones puede ser realizada con una simple observacin de la cantidad de lneas del programa, pero a medida que el programa crece se requiere de mediciones ms exactas, para lo cual se emplea determinadas operaciones matemticas que establecen la eficiencia terica del programa, al estudio de estos casos se denomina Complejidad Algortmica. 1. COMPLEJIDAD ALGORTMICA Un algoritmo ser ms eficiente comparado con otro, siempre que consuma menos recursos, como el tiempo y espacio de memoria necesarios para ejecutarlo (Lpez). La eficiencia de un algoritmo puede ser cuantificada con las siguientes medidas de complejidad: Complejidad Temporal o Tiempo de ejecucin: Tiempo de cmputo necesario para ejecutar algn programa. El tiempo de Ejecucin de
3

COMPLEJIDAD COMPUTACIONAL Y HEURSTICAS

2011

un programa se mide en funcin de N (cantidad de datos), lo que designaremos como T(N). Esta funcin se puede calcular fsicamente ejecutando el programa acompaado de un reloj, o calcularse directamente sobre el cdigo, contando las instrucciones a ser ejecutadas y multiplicando por el tiempo requerido por cada instruccin. As, un trozo sencillo de cdigo como: S1; for(x = 0; x < N; x++) S2; Demanda: T(N) = t1 + t2 * N Donde t1 es el tiempo que lleva ejecutar la serie S1 de sentencias, y t2 es el que lleva la serie S2. Habitualmente todos los algoritmos contienen alguna sentencia condicional o selectiva, haciendo que las sentencias ejecutadas dependan de la condicin lgica, esto hace que aparezca ms de un valor para T(N), es por ello que debemos hablar de un rango de valores: Tmin(N) T(N) Tmax(N) Estos extremos son llamados " el peor caso" y "el mejor caso" y entre ambos se puede hallar "el caso promedio" o el ms frecuente. Complejidad Espacial: Memoria que utiliza un programa para su ejecucin, La eficiencia en memoria de un algoritmo indica la cantidad de espacio requerido para ejecutar el algoritmo. 1.1. RDENES DE COMPLEJIDAD Las funciones de complejidad algortmica ms habituales en las cuales el nico factor del que dependen es el tamao de la muestra de entrada N (Maas), ordenadas de mayor a menor eficiencia son: Tabla 1. Orden de complejidad
ORDEN DE COMPLEJIDAD O(1) Orden constante Orden logartmico DESCRIPCIN

Cuando las instrucciones se ejecutan una vez.

O(log n)

Esta suele aparecer en determinados algoritmos con iteracin o recursin no estructural, ejemplo la bsqueda binaria. Es una complejidad buena y tambin muy usual. Aparece en la evaluacin de bucles simples siempre que la complejidad de las instrucciones 4

O(n)

Orden lineal

COMPLEJIDAD COMPUTACIONAL Y HEURSTICAS

2011

interiores sea constante. Se encuentra en algoritmos de tipo divide y vencers como por ejemplo en el mtodo de cuasiordenacin quicksort y se considera una buena complejidad. Si n se duplica, el tiempo de ejecucin es ligeramente mayor del doble. Complejidad cuadrtica. Aparece en bucles o ciclos doblemente anidados. Si n se duplica, el tiempo de ejecucin aumenta cuatro veces. Complejidad cbica. Suele darse en bucles con triple anidacin. Si n se duplica, el tiempo de ejecucin se multiplica por ocho. Para un valor grande de n empieza a crecer dramticamente. Complejidad polinmica (a > 3). Si a crece, la complejidad del programa es bastante mala. Complejidad exponencial. No suelen ser muy tiles en la prctica por el elevadsimo tiempo de ejecucin. Se dan en subprogramas recursivos que contengan dos o ms llamadas internas. N

O(n log Orden n) lineal

O(n2)

Orden cuadrtico

O(n3)

Orden cbico

O(na)

Orden polinmico

O(2n)

Orden exponencial

O(n!)

Orden factorial

EFICIENCIA DEL ALGORITMO Sea un problema que sabemos resolver con algoritmos de diferentes complejidades. Para compararlos entre s, supongamos que todos ellos requieren 1 hora de ordenador para resolver un problema de tamao N=100, pero si queremos resolver el mismo problema pero de tamao 2n tenemos: Cuadro 2. Tiempos de eficiencia del algoritmo por orden de complejidad (Maas) O(f(n)) log n n n log n n2 N=100 1h 1h 1h 1h t=2h 10000 200 199 141 N=200 1.15 h 2h 2.30 h 4h
5

COMPLEJIDAD COMPUTACIONAL Y HEURSTICAS

2011

n3 2n

1h 1h

126 101

8h 1030 h

Se puede observar que: Los algoritmos de complejidad O(n) y O(n log n) son los que muestran un comportamiento ms "natural": prcticamente a doble de tiempo, doble de datos procesables. Los algoritmos de complejidad logartmica son un descubrimiento fenomenal, pues en el doble de tiempo permiten atacar problemas notablemente mayores, y para resolver un problema el doble de grande slo hace falta un poco ms de tiempo. Los algoritmos de tipo polinmico no son una maravilla, y se enfrentan con dificultad a problemas de tamao creciente. La prctica viene a decirnos que son el lmite de lo "tratable". Sobre la tratabilidad de los algoritmos de complejidad del orden O(n2) y O(n3) suelen ser efectivamente abordables, prcticamente nadie acepta algoritmos de orden O(n100), por muy polinmicos que sean. La frontera es imprecisa. Cualquier algoritmo por encima de una complejidad polinmica se dice "intratable" y slo ser aplicable a problemas muy pequeos. A la vista de lo anterior se comprende que los programadores busquen algoritmos de complejidad lineal. Es un golpe de suerte encontrar algo de complejidad logartmica. Si se encuentran soluciones polinomiales, se puede vivir con ellas; pero ante soluciones de complejidad exponencial, es mejor seguir buscando (Maas). 1.2. CLASES DE COMPLEJIDAD La mayor parte de los problemas en teora de la complejidad tienen que ver con los problemas de decisin, que corresponden a poder dar una respuesta positiva o negativa un problema dado. Los problemas se clasifican en conjuntos o clases de complejidad (L, NL, P, PCompleto, NP, NP-Completo, NP Duro...)

COMPLEJIDAD COMPUTACIONAL Y HEURSTICAS

2011

Fig.1. Tipos de problemas (Gir, 2008) 1.2.1. PROBLEMAS P Contiene aquellos problemas de decisin que pueden ser resueltos en tiempo polinmico por una MT determinista, esto es, aquellas en las que para cada par estado y smbolo exista a lo sumo una posibilidad de ejecucin. Los problemas de complejidad polinmica son tratables, es decir, en la prctica se pueden resolver en un tiempo razonable (Alonso). 1.2.2. PROBLEMAS NP Contiene los problemas de decisin que son resueltos por una MT no determinista en tiempo polinmico y de ah su nombre: Non Deterministic Polynomial-time (Alonso). 1.2.3. PROBLEMAS 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 encuentran en la "frontera externa" de la clase NP. Son problemas NP completos, 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 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 (Maas). En la actualidad, todos los algoritmos conocidos para problemas NPcompletos utilizan tiempo exponencial con respecto al tamao de la
7

COMPLEJIDAD COMPUTACIONAL Y HEURSTICAS

2011

entrada. Se desconoce si hay algoritmos ms rpidos, por lo cual, para resolver un problema NP-completo de tamao arbitrario, se utiliza uno de los siguientes enfoques: Aproximacin Probabilstico Restricciones Casos particulares Algoritmo gentico Heursticas

2. HEURSTICAS 2.1. GENERALIDADES Podemos definir una heurstica como una tcnica que aumenta la eficiencia de un proceso de bsqueda, posiblemente sacrificando demandas de completitud. Las heursticas son como los guas de turismo: resultan adecuados en el sentido de que generalmente suelen indicar las rutas interesantes; son malos en el sentido de que pueden olvidar puntos de inters para ciertas personas. Al usar buenas heursticas se pueden expresar buenas (aunque posiblemente no ptimas) soluciones a problemas difciles. Una funcin heurstica es una correspondencia entre las de estados del problema hacia alguna medida de normalmente representada por nmeros. Quiere decir cada estado del problema (solucin) y dice qu tan cerca ptima est. descripciones deseabilidad, que mensura de la solucin

El propsito de una funcin heurstica es el de guiar el proceso de bsqueda en la direccin ms provechosa sugiriendo qu camino tomar cuando hay ms de uno disponible. Cuanto ms exactamente estime la funcin heurstica los mritos de cada nodo del rbol (o grafo) que representa al problema, ms directo ser el proceso de solucin. En general, hay que hacer una ponderacin entre el costo de evaluacin de una funcin heurstica y el ahorro de tiempo de bsqueda que proporciona la funcin. (Ramos, 2007). La palabra heurstica procede del trmino griego (heuriskein), que significa hallar, inventar (etimologa que comparte con eureka de Arqumides). La popularizacin del concepto se debe al matemtico George Plya, con su libro Cmo resolverlo (How to solve it) en 1957. Habiendo estudiado tantas pruebas matemticas desde su juventud, quera saber cmo los matemticos llegan a ellas. El libro contiene la clase de recetas heursticas que trataba de ensear a sus alumnos de matemticas. Cuatro ejemplos extrados de l ilustran el concepto mejor que ninguna definicin:
8

COMPLEJIDAD COMPUTACIONAL Y HEURSTICAS

2011

Si no consigues entender un problema, dibuja un esquema. Si no encuentras la solucin, haz como si ya la tuvieras y mira qu puedes deducir de ella (razonando a la inversa). Si el problema es abstracto, prueba a examinar un ejemplo concreto. Intenta abordar primero un problema ms general (es la paradoja del inventor: el propsito ms ambicioso es el que tiene ms posibilidades de xito). (Wikipedia, 2005).

En 1963 Newell, Shaw y Simon define a las heursticas como un proceso que puede resolver un problema dado pero no ofrece garantas de que lo har. As definieron Bartholdi y Platzman (en 1988) lo que es heurstica para ellos: Una heurstica puede verse como un procesador de informacin que, deliberada, pero juiciosamente, ignora cierta informacin. Ignorando informacin, una heurstica se libra de gran parte del esfuerzo que debi haberse requerido para leer los datos y hacer clculos con ellos. Por otra parte, la solucin producida por tal heurstica, es independiente de la informacin ignorada, y de este modo no se ve afectada por cambios en tal informacin. Idealmente, se busca ignorar informacin que resulta muy caro colectar y mantener, esto es, computacionalmente caro de explotar y mantener, y que contribuye en poco a la precisin de la solucin.(Ramos, 2007) En 1995 se edita el primer nmero de la revista Journal of Heuristics dedicada ntegramente a la difusin de los procedimientos heursticos. (Mart Cunquero) El uso de las Heursticas se aconseja cuando: 1. No existe un mtodo exacto de resolucin, o el mismo requiere de mucho gasto computacional y/o de memoria. (Abdelmalik Moujahid) 2. No es necesario encontrar la solucin ptima; basta con una solucin suficientemente buena. (Abdelmalik Moujahid) 3. Los datos son poco fiables y por tanto no tiene sentido el tratar de encontrar el ptimo global para dichos datos. (Abdelmalik Moujahid) 4. Existen limitaciones de tiempo (y/o de memoria) en proporcionar la respuesta. (Abdelmalik Moujahid) 5. Se va a utilizar como solucin inicial para un algoritmo exacto de tipo iterativo. (Abdelmalik Moujahid)

COMPLEJIDAD COMPUTACIONAL Y HEURSTICAS

2011

6. Si bien las combinaciones que se logran con una heurstica pueden no ser muy buenas en los peores casos, estos peores casos raramente ocurren en el mundo real. (Ramos, 2007) 7. Intentar comprender por qu funciona una heurstica, o por qu no lo hace, normalmente sirve para profundizar en la comprensin del problema. (Ramos, 2007) Si bien es cierto las heursticas son utilizadas en el mundo actual existen ciertas ventajas y desventajas en su aplicacin, las cuales quedan resumidas de la siguiente manera: Ventajas: 1. Flexibilidad frente al encorsetamiento de la investigacin operativa clsica. 2. Ms comprensibles e intuitivos (en general) que los mtodos exactos. 3. En algunas ocasiones (que, en general, no se podrn determinar a priori), encontrarn una solucin (aceptablemente buena) en un tiempo razonable. 4. El mtodo heurstico se utiliza como parte de un procedimiento global, proporciona una buena solucin inicial de partida. 5. El mtodo heurstico es ms flexible que un mtodo exacto, permitiendo, por ejemplo, la incorporacin de condiciones de difcil modelizacin. Desventajas: 1. Imposible conocer la cercana con respecto del ptimo global de la solucin obtenida. 2. No garantizan que se encuentre una solucin, aunque existan soluciones. 3. Si encuentran una solucin, no se asegura que sta tenga las mejores propiedades (que sea de longitud mnima o de coste ptimo). 4. Dependencia de la estructura del problema considerado y falta de habilidad para adaptarse a nuevas situaciones o modificaciones del problema de partida. 2.2. CLASIFICACIN Existen muchos mtodos heursticos de naturaleza muy diferente, por lo que es complicado dar una clasificacin completa. Adems, muchos de ellos han sido diseados para un problema especfico sin posibilidad de generalizacin o aplicacin a otros problemas similares. (Mart Cunquero)
10

COMPLEJIDAD COMPUTACIONAL Y HEURSTICAS

2011

El siguiente esquema trata de dar unas categoras amplias, no excluyentes, en donde ubicar a los heursticos ms conocidos: a) Mtodos Constructivos: Consisten en construir literalmente paso a paso una solucin del problema. Usualmente son mtodos deterministas y suelen estar basados en la mejor eleccin en cada iteracin. Estos mtodos han sido muy utilizados en problemas clsicos como el del viajante. (Mart Cunquero). Las heursticas de construccin son aquellas para las cuales se estudia su garanta de calidad. La mayora de las heursticas comunes (las que se nos ocurriran a nosotros), son heursticas de construccin. Un representante de stos son los algoritmos greedy (golosos o devoradores). (Ramrez Cuevas, 2005). Dentro de este mtodo tambin existen los siguientes algoritmos: Vecino ms prximo, de insercin, rboles generadores y heursticos basados en ahorro. b) Mtodos de Descomposicin: El problema original se descompone en sub problemas ms sencillos de resolver, siendo el output del uno el input del otro, se debe tener en cuenta, aunque sea de manera general, que ambos pertenecen al mismo problema. De forma que al resolver los subproblemas obtengamos una solucin para el problema global. (Divide y vencers). (Repositorio de la Escuela Superior Politcnica del Litoral, 2006). Algunos autores [Ball, Magazine, 1981] diferencian entre mtodos de descomposicin (los subprogramas se resuelven en cascadas) y mtodos de particin (cuando los subprogramas son independientes entre s). (Ramrez Cuevas, 2005) c) Mtodos inductivos: La idea de estos mtodos es generalizar de versiones pequeas o ms sencillas al caso completo. Propiedades o tcnicas identificadas en estos casos ms fciles de analizar pueden ser aplicadas al problema completo. d) Mtodos de Reduccin: Consiste en identificar propiedades que se cumplen mayoritariamente por las buenas soluciones, es decir, se trata de identificar alguna caracterstica que presumiblemente deba poseer la solucin ptima e introducirlas como restricciones del problema. El objeto es restringir el espacio de soluciones simplificando el problema. El riesgo obvio es dejar fuera las soluciones ptimas del problema original. (Mart Cunquero)

11

COMPLEJIDAD COMPUTACIONAL Y HEURSTICAS

2011

e) Manipulacin del modelo: Se trata de simplificar el esquema terico para encontrar los valores de las variables de decisin con mayor facilidad, deduciendo, a partir de ella, la solucin del problema original. Como posibles estrategias se pueden ampliar o reducir el espacio de las opciones. (Piqueras, 2002). f) Mtodos de Bsqueda por entornos: A diferencia de los mtodos anteriores, estos mtodos parten de una solucin factible inicial (obtenida quiz mediante otra heurstica) y, mediante alteraciones de esa solucin, van pasando de forma iterativa, y mientras no se cumpla el criterio de parada, a otras soluciones factibles de su entorno, almacenando la mejor de las alternativas visitadas. A continuacin se describen las bsquedas por entornos ms usadas: 1. Bsqueda Aleatoria Pura: Generar aleatoriamente soluciones del problema hasta que se cumpla el criterio de parada. Devolver la mejor solucin encontrada. 2. Bsqueda Local: Dada una solucin inicial, determinar la mejor solucin vecina de sta. Si la nueva solucin es mejor que la inicial, continuar el proceso con ella. En caso contrario, finalizar la bsqueda. Devolver la mejor solucin encontrada. 3. Bsqueda Multiarranque: Aplicar bsquedas locales desde soluciones de inicio generadas aleatoriamente hasta que se cumpla el criterio de parada. 4. Bsqueda por entorno variable (VNS): Se parte de una solucin inicial y de un conjunto de entornos. Se aplica una bsqueda local con la estructura de entorno escogida hasta que se alcanza un ptimo local. Luego se genera aleatoriamente una solucin vecina del ptimo encontrado en la estructura. Se repite el proceso hasta alcanzar el nmero mximo de iteraciones en el conjunto de entornos. (Beltrn, Caldern, Cabrera, & Moreno Vega) Reglas de Parada En cualquier procedimiento de bsqueda de soluciones para un problema dado, uno de los elementos ms importantes es el criterio de parada empleado. La regla de parada es responsable, en gran medida, del grado de eficiencia y eficacia del procedimiento de solucin. En ocasiones, el criterio de parada viene determinado por la bsqueda empleada. Se obtienen criterios de parada ms eficaces al realizar un estudio del procedimiento, estudiar la funcin objetivo, estudiar la regin factible, analizar la evolucin de la bsqueda o evaluar las caractersticas de las soluciones obtenidas. (Beltrn, Caldern, Cabrera, & Moreno Vega)
12

COMPLEJIDAD COMPUTACIONAL Y HEURSTICAS

2011

g) Mtodos combinados: Si bien todos los mtodos citados anteriormente han contribuido a ampliar nuestro conocimiento para la resolucin de problemas reales, los mtodos constructivos y los de bsqueda local constituyen la base de los procedimientos metaheursticos y son conocidos como mtodos combinados. (Mart Cunquero) 3. REFERENCIAS:
Abdelmalik Moujahid, I. I. (s.f.). Tema 1. Heursticos en Optimizacin Combinatorial. Recuperado el 5 de Octubre de 2011, de http://www.sc.ehu.es/ccwbayes/docencia/mmcc/docs/t1heuristicos.pdf Alonso, J. R. (s.f.). Problemas NP. Obtenido de http://arantxa.ii.uam.es Beltrn, J. D., Caldern, J. E., Cabrera, R. J., & Moreno Vega, J. M. Reglas de parada dependientes e independientes del problema. Estudio comparativo para el Strip Packing Problem. Tenerife: Departamento de E.I.O. y Computacin Escuela Tcnica Superior de Ingeniera Informtica. Gir, J. (2008). Complejidad e Inteligencia Artificial. Recuperado el 10 de octubre de 2011, de http://www.cbaarg.com.ar Lpez, R. M. (s.f.). Teora de la Complejidad Algortmica. Recuperado el 22 de Octubre de 2011, de www.monografias.com: www.monografias.com Maas, J. A. (s.f.). Anlisis de Algoritmos: Complejidad. Recuperado el 10 de octubre de 2011, de http://www.lab.dit.upm.es Mart Cunquero, R. (s.f.). Algortmos Heursticos en Optimizacin Combinatoria. Recuperado el Septiembre de 2011, de http://yalma.fime.uanl.mx/~roger/work/teaching/mecbs5122/1Introduction/Intro-by-Rafa%20Marti.pdf Piqueras, V. Y. (21 de Mayo de 2002). Repositorio Institucional de la Universidad Politcnica de Valencia. Recuperado el 21 de Octubre de 2011, de http://riunet.upv.es/bitstream/handle/10251/2664/tesisUPV1497.pdf Ramrez Cuevas, C. (Octubre de 2005). Benemrita Universidad Autnoma de Puebla. Recuperado el Octubre de 2011, de perseo.cs.buap.mx/bellatrix/tesis/TES857.pdf tesis Ramos, S. A. (Noviembre de 2007). Modelos y Optimizacin, Heursticas y Problemas Combinatorios. Recuperado el Septiembre de 2011, de www.fi.uba.ar/materias/7114/Docs/ApunteHeuristicas.pdf Repositorio de la Escuela Superior Politcnica del Litoral. (2006). Recuperado el Octubre de 2011, de http://www.dspace.espol.edu.ec/bitstream/123456789/14688/15/CAPITULO %202.pdf Wikipedia. (Abril de 2005). Wikipedia. Recuperado el 22 de Septiembre de 2011, de http://es.wikipedia.org/wiki/Heur%C3%ADstica

13

COMPLEJIDAD COMPUTACIONAL Y HEURSTICAS

2011

14

Das könnte Ihnen auch gefallen