Complejidad de los Cálculos

8
5.1 Complejidad de los Cálculos Consideraremos que un problema es complejo si su resolución requiere la ejecución de un algoritmo complejo. A su vez, se considera que un algoritmo es complejo si su aplicación requiere la ejecución de un cálculo complicado (consideramos que un cálculo es el proceso que se lleva a cabo cuando se aplica un algoritmo en una situación determinada). Para alcanzar nuestro objetivo de medir la complejidad de los problemas, debemos aprender a medir la complejidad de los cálculos individuales, a partir de lo cual podemos determinar la complejidad de los algoritmos y por último la complejidad de los problemas. Medición de la Complejidad Un enfoque común, el cual seguiremos, es medir indirectamente la dificultad de un cálculo, midiendo los recursos necesarios para ejecutarlo; esto se basa en que un cálculo difícil requerirá más recursos que uno de menor dificultad. Por lo tanto, definimos que la complejidad de un cálculo es la cantidad de recursos necesarios para efectuarlo. El tiempo es uno de los recursos que con frecuencia se emplea en este contexto. Consideramos que un cálculo es más complejo que otro si la ejecución del primero requiere más tiempo, y llamamos complejidad temporal a la cantidad de tiempo necesaria para efectuar el cálculo. Otro recurso que se emplea con frecuencia para medir la complejidad de un cálculo es la cantidad de espacio de almacenamiento requerido. Esto se basa en el supuesto de que, conforme aumenta la complejidad de un cálculo, más espacio de almacenamiento se necesita para su ejecución. La cantidad de espacio de almacenamiento que requiere un cálculo se conoce como complejidad espacial.

description

Complejidad de los Cálculos

Transcript of Complejidad de los Cálculos

5.1 Complejidad de los ClculosConsideraremosqueunproblemaescomplejosi suresolucinrequierelaejecucin de un algoritmo complejo. A su vez, se considera que un algoritmo escomplejo si su aplicacin requiere la ejecucin de un clculo complicado(consideramosqueunclculoesel procesoquesellevaacabocuandoseaplica un algoritmo en una situacin determinada).Paraalcanzar nuestroobjetivodemedir lacomplejidaddelos problemas,debemos aprender a medir la complejidad de los clculos individuales, a partirde lo cual podemos determinar la complejidad de los algoritmos y por ltimo lacomplejidad de los problemas.Medicin de la Complejidad!n en"oque comn, el cual seguiremos, es medir indirectamente la di#cultadde un clculo, midiendo los recursos necesarios para ejecutarlo$ esto se basaen que un clculo di"%cil requerir ms recursos que uno de menor di#cultad.Por lotanto, de#nimosquelacomplejidaddeunclculoeslacantidadderecursos necesarios para e"ectuarlo.&l tiempoes unodelos recursos quecon"recuenciaseempleaenesteconte'to. Consideramos que un clculo es ms complejo que otro si laejecucin del primero requiere ms tiempo, y llamamos complejidad temporala la cantidad de tiempo necesaria para e"ectuar el clculo.(tro recurso que se emplea con "recuencia para medir la complejidad de unclculo es la cantidad de espacio de almacenamiento requerido. &sto se basaen el supuesto de que, con"orme aumenta la complejidad de un clculo, msespaciodealmacenamientosenecesitaparasuejecucin. )acantidaddeespacio de almacenamiento que requiere un clculo se conoce comocomplejidad espacial.Complejidad de los clculos de mquinas de Turing(tro recurso que se emplea con "recuencia para medir la complejidad de unclculo es la cantidad de espacio de almacenamiento requerido. &sto se basaen el supuesto de que, con"orme aumenta la complejidad de un clculo, msespaciodealmacenamientosenecesitaparasuejecucin. )acantidaddeespacio de almacenamiento que requiere un clculo se conoce comocomplejidad espacial.)a complejidad temporal de los clculos e"ectuados por la mquina de *uring,al iniciar con la con#guracin de la cinta xxx , ser%a + (se requierencuatro pasos para mover la cabeza al primer espacio en blanco despu,s de las', un espacio para escribir una ' en este lugar y cuatro pasos ms para colocarlacabezaensuposicinoriginal). (, si lacon#guracinoriginal delacinta"uera , los clculos e"ectuados tendr%an una complejidad temporal-.)acomplejidadespacial deunclculodeunamquinade*uringsede#necomoel nmerodeceldasdelacintaquedic.oclculorequiere. As%, si lacomplejidad espacial de una mquina de *uring"uera +, la mquina utilizar%alas primeras nueve celdas de la cinta durante sus clculos pero no requerir%aque estuviera presente el resto de la cinta.(bservequelascomplejidadesespacial ytemporal sondi"erentesy, porlotanto, es posible que di#eran para el mismo clculo. Por ejemplo, una mquinaque nunca mueve la cabeza de la cinta pero escribe /00 veces un espacio enblanco en la celda actual antes de detenerse, ejecutar%a un clculo concomplejidad temporal /00 pero complejidad espacial /. 1e .ec.o, es "cil vercmo puede e'tenderse este ejemplo para producir clculos en las cuales lascomplejidades espacial y temporal di#eren en cualquier cantidad deseada.5.2 Complejidad de los Algoritmos&n general, distintas aplicaciones del mismo algoritmo producen clculosdi"erentes. Por ejemplo, el clculo que e"ecte el algoritmo de bsquedabinaria depender del contenido de la lista y del valor que se busca.2ntuitivamente, para considerar si un algoritmo es complejo .ay que basarseen la cuestin de si los clculos son complejos o no.Complejidad temporal de las mquinas de TuringComenzamos nuestro estudio de la complejidad de algoritmos considerndolosalgoritmos en el conte'to de las mquinas de *uring. Cada mquina de *uringno es ms que la implantacin de un algoritmo, representado en la "orma deldiagrama de transiciones de la mquina.Consideremos unamquinae*uringparacomparar dos cadenas deiguallongituden{ x, y , z}.3uponemosqueestascadenasestnescritasenlacintac lamquina, una tras laotray separadas por unasterisco (paracomparar las cadenasyxxzyyxzx, iniciar%amos la mquina conlacon#guracin de cinta yxxzyxzx ) )a tarea de la mquina es decidirsi lacadenaanterior al asteriscoes id,nticaalaquevienedespu,s delasterisco. )a mquina deber detenerse con la con#guracin de cintaY si las cadenas son iguales, y con N si son di"erentes.)a t,cnica que utiliza nuestra mquina de *uring es comparar repetidamentelos elementos correspondientes de las cadenas .asta .aber considerado todoslos pares o detectar una discrepancia. &sto se .ace leyendo el primer s%mbolode la primera cadena y luego moviendo la cabeza .asta el primer s%mbolo en lasegunda, paracon#nar si soniguales. 3i loson, lamquinaregresaalaprimera cadena para observar el segundo s%mbolo antes de pasar a la segundacadenayveri#car quesusegundoelementoseaigual. As%, el procesodcomparacin da como resultado que la cabeza de la cinta alterne entre las doscadenas con"orme se copiaran sus elementos.Al evaluarlacomplejidaddeunalgoritmo, generalmentesemanejanestasvariaciones en el rendimiento de un algoritmo identi#cando las situaciones demejor caso y peor caso.Rendimiento medio3i planeamos utilizar repetidamente un algoritmo durante un largo periodo detiempo, es probableque nos interese ms su rendimiento medio que sucomportamiento en el mejor o el peor caso. Adems, no es necesario que esterendimientomedioseencuentreprecisamenteenel puntocentral entrelose'tremos. Por ejemplo, si las situaciones que producen el mejor "uncionamientodeunalgoritmosonmuyraras, entonces surendimientoreal duranteunperiodo puede tender .acia el peor caso, y viceversa. &valuemos entonces lacomplejidad temporal media (o estimada) de nuestra mquina de *uring paracomparar cadenas, suponiendo que cada disposicin de s%mbolos de longitud ntiene la misma probabilidad de ocurrencia que las dems.Anlisis informal de algoritmos&nestosambientesdeterminar lacomplejidadtemporal noestansencillocomo calcular el nmero de pasos que se ejecutarn. 1e .ec.o, la capacidadpara predecir la complejidad temporal con este m,todo se basa en lasuposicin, conocida como suposicin de costo uni"orme, de que cada uno delos pasos requerirlamismacantidaddetiempo. 4staes unasuposicinrazonable en el caso de una mquina de *uring terica, pero es posible que lasuposicindecostouni"ormeno sea vlida al tratar con otrossistemas.Porejemplo, enuncomputadormodernogeneralmenteserequieremstiempopara multiplicar dos valores que para sumarlos, y una operacin de entrada ysalida consume muc.o ms tiempo5.3 Complejidad de los ro!lemas5eamos a.ora la tarea de medir la complejidad de un problema.2ntuitivamente, estamedicindeberelacionarseconlacomplejidaddelassoluciones del problema6 un problema es di"%cilporque no es "cil resolverlo.3in embargo siempre .ay que declarar que un problema es complejosimplementeporqueesdi"%cil llegar asusolucin$ casi siempree'isteuna"ormadi"%cil deresolver unproblema. !nproblemadebedeclararsecomocomplejonicamentecuandonotengaunasolucinsencilla. Paraser msprecisos, nos gustar%a decir que la complejidad de un problema es lacomplejidad de su solucin ms sencilla. Por desgracia, veremos que laabundancia de soluciones para un problema .ace muy di"%cil la identi#cacinde una solucin ms sencilla. 1e .ec.o, se .a mostrado que varios problemasno tienen una solucin ms sencilla."l pro!lema de comparacin de cadenas!no de los principales obstculos al tratar de establecer la complejidad de unproblema por medio de la bsqueda de una solucin ptima es que, al parecer,sepuedemejorar cualquier solucinqueencontremos. Por consiguiente, labsqueda de una solucin ptima se convierte en una tarea sin #n dedescubrimiento de mejores soluciones. 2nvestiguemos este "enmeno conmayor detenimiento regresandoal ambiente delasmquinas de*uring y alproblema de comparar dos cadenas de la misma longitud en 7', y, z89.Al reconocer quepodemos mejorar nuestrasolucinparael problemadecomparacin de cadenas, comparando dos s%mbolos a la vez, se abre la puertaparaunapl,toradeposiblesmejoras. 3i comparamos:s%mbolosalavez,donde:escualquier enteromayor que/, podr%amosesperar unasolucinapro'imadamente l;: veces mejor que nuestra solucin original.)legamos entonces a la conclusin de que la bsqueda de la mejor solucin (ent,rminos de la complejidad temporal) para el problema de la comparacin decadenas nos lleva a una cadena sin #n de soluciones, cada una ms e#cienteque la anterior. 3e trata de un "enmeno comn$ de .ec.o, el teoremaconocidocomoteoremadeaceleracinde