Sunteți pe pagina 1din 14

INSTITUTO TECNOLGICO

Superior de Apatzingn

CARRERA
Ingeniera en Informtica

ESTRUCTURA DE DATOS

UNIDAD
7

PRESENTAN
ALONDRA GMEZ VACA ALAN JOS ! MEDINA GMEZ J AN A"IMELEC C#AVEZ MORENO

DOCENTE
L$I$ L IS AL"ER%OI VERD ZCO VERD ZCO

A&A%ZING'N( MIC#OAC'N()* DICIEM"RE DE +,)*$

INTRODUCCIN La siguiente investigacin est basada en el tema algoritmos. Entendemos por algoritmo como un conjunto finito de instrucciones no ambiguas y efectivas que indican cmo resolver un problema, producen al menos una salida, reciben cero o ms entradas y, para ejecutarse, necesitan una cantidad finita de recursos. Una instruccin es no ambigua cuando la accin a ejecutar est perfectamente definida. El tema principal de la investigacin es el anlisis de los algoritmos: estudia la complejidad espacial y temporal de los algoritmos.

Anlisis de algoritmos. Un algoritmo es una secuencia de pasos lgica para encontrar la solucin de un problema. Todo algoritmo debe contar con las siguientes caracter sticas: preciso, definido y finito. !or !reciso, entenderemos que cada paso del algoritmo tiene una relacin con el anterior y el siguiente" un algoritmo es #efinido, cuando se ejecuta ms de una ve$ con los mismos datos y el resultado es el mismo" y %inito, indica que el algoritmo cuenta con una serie de pasos definidos o que tiene un fin. &ablando de estructuras de datos podemos decir que los algoritmos seg'n su funcin se dividen en: ( ( )lgoritmos de ordenamiento y )lgoritmos de b'squeda.

Un algoritmo de ordenamiento, es el que pone los elementos de una lista o vector en una secuencia *ascendente o descendente+ diferente a la entrada, es decir, el resultado de salida debe ser una permutacin *reordenamiento+ de la entrada que satisfaga la relacin de orden requerida. Un algoritmo de b'squeda, es aquel que est dise,ado para encontrar la solucin de un problema booleano de e-istencia o no de un elemento en particular dentro de un conjunto finito de elementos *estructura de datos+, es decir al finali$ar el algoritmo este debe decir si el elemento en cuestin e-iste o no en ese conjunto, adems, en caso de e-istir, el algoritmo podr a proporcionar la locali$acin del elemento dentro del conjunto.

Concepto de complejidad de algoritmos. La mayor a de los problemas que se plantean en la actualidad se pueden resolver con algoritmos que difieren en su eficiencia. #ic.a diferencia puede ser irrelevante cuando el n'mero de datos es peque,o pero cuando la cantidad de datos es mayor la diferencia crece. Ejemplo: /uma de 0 y 12 primero n'meros naturales.

La complejidad de un algoritmo o complejidad computacional, estudia los recursos y esfuer$os requeridos durante el clculo para resolver un problema los cuales se dividen en: tiempo de ejecucin y espacio en memoria. El factor tiempo, por lo general es ms importante que el factor espacio, pero e-isten algoritmos que ofrecen el peor de los casos en un menor tiempo que el mejor de los casos, lo cual no es la mejor de las soluciones. El tiempo de ejecucin de un algoritmo , se refiere a la suma de los tiempos en los que el programa tarda en ejecutar una a una todas sus instrucciones, tomando en cuenta que cada instruccin requiere una unidad de tiempo, dic.o tiempo se puede calcular en funcin de n *el numero de datos+, lo que se denomina T*n+ /i .acemos un anlisis de forma directa al programa para determinar el tiempo de ejecucin del mismo, debemos definir el conjunto de operaciones primitivas, que son independientes del lenguaje de programacin que se use. Seleccin de un algoritmo. Una de las caracter sticas primordiales en la seleccin de un algoritmo es que este sea sencillo de entender, calcular, codificar y depurar, as mismo que utilice eficientemente los recursos de la computadora y se ejecute con la mayor rapide$ posible con un efica$ uso de memoria dinmica y esttica.

7.1 CO !LE"IDAD EN EL TIE !O 3El tiempo de Ejecucin de un programa se mide en funcin de 4 , lo que designaremos como T*4+. 3Esta funcin se puede calcular f sicamente ejecutando el programa acompa,ados de un reloj, o calcularse directamente sobre el cdigo, contando las instrucciones a ser ejecutadas y multiplicando por el tiempo requerido por cada instruccin. )s , un sencillo cdigo como: /1" for*- 5 2" - 6 4" -77+

/8" #emanda: T*4+5 t1 7 t8 9 4 #onde t1 es el tiempo que lleva ejecutar la serie /1 de sentencias, y t8 es el que lleva la serie /8. &abitualmente todos los algoritmos contienen alguna sentencia condicional o selectiva, .aciendo que las sentencias ejecutadas dependan de la condicin lgica, esto .ace que apare$ca ms de un valor para T*4+, Es por ello que debemos .ablar de un rango de valores. :uando se .abla del tiempo de ejecucin de un algoritmo debe tenerse presente que el tiempo de ejecucin e-acto de un programa depende de varios factores: 1.( Los datos de entrada 8.( La calidad del condigo generado por el compilador ;.( La maquina donde se ejecuta el programa 0.( La complejidad del tiempo del algoritmo base del programa En el momento de dise,ar y elegir entre posibles alternativas, sin embargo, los tres primero factores generalmente o no se conoc an o nos vienen dados. !or lo tanto, el estudio de un algoritmo se centra en su complejidad de tiempo de ejecucin. <ejorar su eficiencia generalmente implica reducir su complejidad de tiempo de ejecucin. :uando se estudia la complejidad de tiempo de ejecucin de un algoritmo se define est en funcin de los datos de entrada. El estudio sin embargo, depende del tama,o de los datos de entrada, no de los datos concretos. !or ejemplo, supongamos que se requiere estudiar un algoritmo de ordenacin que, dada una lista de n'mero, devuelva la misma lista ordenada ascendentemente. )s , si se quisiera ordenar la lista =8, 1, ;, 1, >, ?@, se .ablar a de una entrada de tama,o den5A. #enotemos, pues T*n+ la funcin del tiempo de ejecucin de un algoritmo con entrada de tama,o n. T*n+ se e-presa sin unidades, ya que el tiempo de ejecucin

e-acto depende de muc.os otros factores. T*n+ representa el n'mero de operaciones elementales que reali$a el algoritmo para obtener la solucin. /e consideran operaciones elementales las asignaciones, comparaciones, operaciones aritmBticas, etc. Nota#i$n a%int$ti#a /e a descrito la eficiencia de un algoritmo mediante su funcin de ejecucin, T*n+.#ebido a que el tiempo de ejecucin e-acto depende de factores diversos, cuando se escribe que T*n+ es una determinada funcin f*n+, por ejemplo f*n+5n8, o f*n+5n9log *n+, debe entenderse 'nicamente que T*n+ es proporcional a f*n+.Este concepto de proporcionalidad entre funciones se puede representar formalmente mediante lo que se llama notacin asinttica. Esta es la notacin que se utili$a cuando se quiere describir la eficiencia de un algoritmo. Cntuitivamente, la notacin asinttica sirve para indicar la velocidad de crecimiento de la funcin del tiempo de ejecucin de un algoritmo. /e dice que T*n+ es D*f*n++,le do D grande f*n+, cuando la velocidad de crecimiento de T*n+ esta acotada superiormente por f*n+. )s D *f*n++ representa el conjunto de todas las funciones g*n+ que crecen, como muc.o, tan rpidamente como f*n+. T&#ni#a% para e%ti'ar e( tie'po de e)e#u#i$n !ara estimar el tiempo de ejecucin, se utili$a la tBcnica de anlisis. Esta estimacin, se .ar en funcin del n'mero de operaciones elementales que reali$a dic.o algoritmo para un tama,o de entrada dado. Entendiendo por operaciones elementales como aquellas operaciones cuyo tiempo de ejecucin se puede acortar superiormente por una constante. )s se consideran como operaciones elementales: ( Dperaciones aritmBticas bsicas *7. (, 9, E, F+( )signaciones variables *5+ ( :omparaciones lgicas o relacionales =GG, l l, 6H, H5, 56, 55, I5+ ( )cceso a estructuras de datos estticas y dinmicas

( !armetros que llegan a los mBtodos ( Cnstrucciones de salto *breaJ, contin'e+( Ketorno de valores *return+ ( Keferencia a objetos ( Cnstrucciones condicionales ( :reacin de objetos ( E-presiones que con incrementos y decrementos :omplejidad Temporal: !armetro de medicin: /e toma el tama,o de la entrada n *descripcin de la instancia+ para medir los requerimientos de tiempo de un algoritmo. El tiempo de ejecucin se describe como una funcin de la entrada T*n+Ejemplo: T*n+5n878n.

7.* CO !LE"IDAD EN EL ES!ACIO La misma idea que se utili$a para medir la complejidad en tiempo de un algoritmo se utili$a para medir su complejidad en espacio. #ecir que un programa es D*4+en espacio significa que sus requerimientos de memoria aumentan proporcionalmente con el tama,o del problema. Esto es, si el problema se duplica, se necesita el doble de memoria. #el mismo modo, para un programa de complejidad D * 48 + en espacio, la cantidad de memoria que se necesita para almacenar los datos crece con el cuadrado del tama,o del problema: si el problema se duplica, se requiere cuatro veces ms memoria. En general, el clculo de la complejidad en espacio de un algoritmo es un proceso sencillo que se reali$a mediante el estudio de las estructuras de datos y su relacin con el tama,o del problema.

CO !LE"IDAD EN EL ES!ACIO Es la memoria que utili$a un programa para su ejecucin" es decir el espacio de memoria que ocupan todas las variables propias del algoritmo. Esta se divide en <emoria Esttica y <emoria #inmica. <emoria esttica. !ara calcularla se suma de memoria que ocupan las variables declaradas en el algoritmo. <emoria dinmica. /u clculo no es tan simple ya que depende de cada ejecucin del algoritmo. Ejemplo: algoritmo de b'squeda en arboles. %uncin b'squeda arboles. #evuelve una solucin o fallo. Cniciali$a un rbol de b'squeda con estado inicial. Lucle .acer ( /i no .ay candidatos para e-pandir. ( Entonces devolver fallo. ( En otro caso escoger nodo para e-pandir. ( /i el nodo es el objetivo.

( Entonces devolver solucin. ( En otro caso e-pandir nodo. < 5 profundidad m-ima del rbol *puede ser infinita+ # 5 profundidad de la mejor solucin *menor costo+ L 5 factor de ramificacin *n'mero m-imo de sucesiones+ 5 12 El problema de eficiencia de un programa se puede plantear como un compromiso entre el tiempo y el espacio utili$ados. En general, al aumentar el espacio utili$ado para almacenar la informacin, se puede conseguir un mejor desempe,o, y, entre ms compactas sean las estructuras de datos, menos veloces resultan los algoritmos. Lo mismo sucede con el tipo de estructura de datos que utilice un programa, puesto que cada una de ellas lleva impl citas unas limitaciones de eficiencia para sus operaciones bsicas de administracin. !or eso, la etapa de dise,o es tan importante dentro del proceso de construccin de softMare, ya que va a determinar en muc.os aspectos la calidad del producto obtenido. Es la memoria que utili$a un programa para su ejecucin. Lo que implica que la eficiencia en memoria de un algoritmo lo indica la cantidad de espacio requerido para ejecutarlo, es decir, el espacio memoria que ocupan todas las variables propias Ejemplo )lgoritmo de L'squeda en )rboles %uncin ((((H busquedaNarboles *problema+. #evuelve ((((HsolucinEfallo. del algoritmo.

Cniciali$a ((((Hrbol de b'squeda con estado inicial. :iclo &acer /i ((((Hno .ay candidatos para e-pandir. Entonces ((((Hdevolver fallo. En Dtro :aso ((((Hescoger nodo para e-pandir. /i ((((Hel nodo es el objetivo. Entonces ((((Hdevolver solucin. En Dtro :aso ((((He-pandir nodo.

7.+ E,ICIENCIA DE LOS ALGORIT OS :on muc.a frecuencia se plantea la necesidad de tener que decidir que algoritmo se debe utili$ar para resolver un determinado problema, de entre un conjunto de algoritmos posibles. Una estrategia para decidir que algoritmos escoger consistir a en implementar todos estos algoritmos, ejecutarlos, y escoger el ms eficiente. Esta apro-imacin tiene principalmente dos inconvenientes. !or un lado, es necesario implementar un conjunto de algoritmos, aunque en realidad solo se necesita uno, lo que representa un esfuer$o considerable *generalmente pro.ibitivo+. !or otro lado, el .ec.o de ejecutar una implementacin de un algoritmo en una maquina concreta y por un conjunto de datos de prueba espec ficos, no necesariamente aporta suficiente informacin para saber cmo se comportara el mismo algoritmo en una maquina diferente o con entradas diferentes. )s pues el objetivo consiste en estudiar las propiedades del algoritmo a priori, e implementar solo lo que se considere mejor. La calidad de un algoritmo normalmente se mide en funcin de su eficiencia, pero tambiBn .ay que valorar el coste de escribirlo, entenderlo y modificarlo. La Eficiencia nos la da el )nlisis de )lgoritmos: O#imensin Temporal: <edida del tiempo empleado. O#imensin Espacial: medida de los recursos invertidos.

1. 4ocin de complejidad :omplejidad temporal, tama,o del problema y paso 8. :otas de complejidad :ota superior, inferior y promedio ;. 4otacin asinttica P, Q, R 0. Dbtencin de cotas de complejidad. :lculo de complejidad: determinacin de dos parmetros o funciones de coste: :omplejidad espacial: :antidad de recursos espaciales *de almacBn+ que un algoritmo consume o necesita para su ejecucin :omplejidad temporal: :antidad de tiempo que un algoritmo necesita para su ejecucin !osibilidad de .acer Saloraciones el algoritmo es: TbuenoU, Tel mejorU, Tpro.ibitivoU :omparaciones el algoritmo ) es mejor que el L. Talla o tama,o de un problema: Salor o conjunto de valores asociados a la entrada del problema que representa una medida de su tama,o respecto de otras entradas posibles !aso de programa: /ecuencia de operaciones con contenido semntico cuyo coste es independiente de la talla del problema. Unidad de medida de la complejidad de un algoritmo.

E-presin de la complejidad temporal: %uncin que e-presa el n'mero de pasos de programa que un algoritmo necesita ejecutar para cualquier entrada posible *para cualquier talla posible+ 4o se tienen en cuenta los factores e-ternos. Encontrar )lgoritmos eficientes puede definir si E-iste o no una /olucin al

!roblema. )l )nlisis de )lgoritmos se centra en el estudio de los Lucles, del cual en 'ltima instancia, dependern las instrucciones a ser ejecutadas. 4o se puede reali$ar un anlisis del n'mero de Cnstrucciones pues son dependientes de las tecnolog as *KC/V, :C/:+.Eficiencia 5 %*n+ /iendo n la cantidad de elementos a ser procesados edi#i$n de (a E-i#ien#ia La estimacin debe ser independiente de la plataforma y la Lenguaje con que se codificar pero debe reflejar sus diferencias.( Usamos el Drden de <agnitud *D Wgrande+ de la Eficiencia del Tiempo y de los recursos.( /e lo complementa con la Tasa de crecimiento del programa para evaluar su comportamiento %uturo. X:mo comparar la Eficiencia Keal de 8 )lgoritmosY( !rogramndolos, implementndolos y midiendo para el mismo lote de !rueba: el tiempo de ejecucin y los recursos utili$ados.( /uele ser caro, y una ve$ reali$ado no suele ser sencillo volver atrs y corregir. An(i%i% de Rendi'iento: <ediante la complejidad en el Tiempo y en el Espacio Tiempo de Ejecucin: depender del programa y de su entrada *carga de trabajo+. ( El tiempo medio suele ser ms realista. !ara usar todos los tipos de entradas son equiprobables. ( El Tiempo <-imo depende de la :arga <-ima: y no siempre se puede establecer con claridad o es estad sticamente variable. A%.ntota% 3El anlisis de la eficiencia algor tmica nos lleva a estudiar el comportamiento de

los algoritmos frente a condiciones e-tremas. <atemticamente .ablando, cuando 4 tiende al infinito Z , es un comportamiento asinttico. 3 /ean g*n+ diferentes %unciones que determinan el uso de recursos, pudiendo e-istir infinidad de funciones g. 3Estas funciones g sern congregadas en familias, usando como criterio de agrupacin su comportamiento asinttico, este comportamiento asinttico. Es similar cuando los argumentos toman valores muy grandes. 3 Una familia de funciones que comparten un mismo comportamiento asinttico ser llamada un Drden de :omplejidad. Estas familias se designan con D*log *n++. 3 !ara cada uno de estos conjuntos se suele identificar un miembro f*n+ que se Utili$a como representante de la familia, .ablndose del conjunto defunciones g que son del orden de f*n+. Talla o tama,o de un problema: Salor o conjunto de valores asociados a la entrada del problema que representa una medida de su tama,o respecto de otras entradas posibles !aso de programa: /ecuencia de operaciones con contenido semntico cuyo coste es independiente de la talla del problema Unidad de medida de la complejidad de un algoritmo. E-presin de la complejidad temporal: %uncin que e-presa el n'mero de pasos de programa que un algoritmo necesita ejecutar para cualquier entrada posible *para cualquier talla posible+.4o se tienen en cuenta los factores e-ternos.

CONCLUSIN/ El anlisis de algoritmos es una parte importante de la Teor a de complejidad computacional ms amplia, que provee estimaciones tericas para los recursos que necesita cualquier algoritmo que resuelva un problema computacional dado. Estas estimaciones resultan ser bastante 'tiles en la b'squeda de algoritmos eficientes. ) la .ora de reali$ar un anlisis terico de algoritmos es conveniente calcular su complejidad en su sentido asinttico, es decir, para un tama,o de entrada suficientemente grande .Lo esencial de la investigacin era .acer .incapiB en la complejidad en el tiempo y espacio, as como la eficiencia de los algoritmos. :omo ya se menciono anteriormente la complejidad de tiempo es ms que nada el clculo del tiempo que tarda en ejecutarse el algoritmo de igual manera la complejidad de espacio, es la memoria que ocupa dic.o algoritmo y por 'ltimo la eficiencia nos ayuda a saber cules son las medidas adecuadas a tomar para el uso de estos tipos de algoritmos de acuerdo al problema a resolver.

S-ar putea să vă placă și