Upload
karina1602
View
29
Download
0
Embed Size (px)
Citation preview
INSTITUTO TECNOLÓGICO SUPERIOR DE FELIPE CARRILLO
PUERTO.
Carpeta de evidencia.
Unidad 7: Análisis de los algoritmos.
Alumna: Diana Karina Pech May.
Materia: Estructura de datos.
Docente: Niels Henryk Aranda cuevas.
3° semestre
Grupo: «B»
Ing. sistemas computacionales.
INTRODUCCIÓN
La siguiente investigación esta basada en el tema algoritmos.
Entendemos por algoritmo como un conjunto finito de
instrucciones no ambiguas y efectivas que indican cómo resolver
un problema, producen al menos una salida, reciben cero o
más entradas y, para ejecutarse, necesitan una cantidad finita
de recursos. Una instrucción es no ambigua cuando la acción a
ejecutar está perfectamente definida. El tema principal de la
investigación es el análisis de los algoritmos: estudia la
complejidad espacial y temporal de los algoritmos.
7.1 COMPLEJIDAD DEL TIEMPO El tiempo de Ejecución de un programa se mide en función de
N , lo que designaremos como
T(N).
Esta función se puede calcular físicamente ejecutando el programa acompañados
de un reloj, o calcularse directamente sobre el código, contando las instrucciones a
ser ejecutadas y multiplicando por el tiempo requerido por cada instrucción. Así, un
sencillo código 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 condición lógica, esto hace que aparezca más de un valor para T(N),
es por ello que debemos hablar de un rango de valores. Cuando se habla del tiempo
de ejecución de un algoritmo debe tenerse presente que el tiempo de ejecución
exacto de un programa depende de varios factores:1.- Los datos de entrada2.- La
calidad del condigo generado por el compilador3.- La maquina donde se ejecuta el
programa4.- 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. Por lo tanto, el
estudio de un algoritmo se centra en su complejidad de tiempo de ejecución.
Mejorar su eficiencia generalmente implica reducir su complejidad de tiempo de
ejecución
7.2 COMPLEJIDAD EN EL ESPACIO
La misma idea que se utiliza para medir la complejidad en tiempo de un algoritmo se utiliza para medir su complejidad en espacio. Decir que un programa es O(N)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. Del mismo modo, para un programa de complejidad O ( N2 ) 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 más memoria. En general, el cálculo de la complejidad en espacio de un algoritmo es un proceso sencillo que se realiza mediante el estudio de las estructuras de datos y su relación con el tamaño del problema.
7.3 EFICIENCIA DE LOS ALGORITMOS
La Eficiencia nos la da el Análisis de Algoritmos:
Dimensión Temporal: Medida del tiempo empleado.
Dimensión Espacial: medida de los recursos invertidos.
Encontrar Algoritmos eficientes puede definir si Existe o no una Solución al Problema. Al Análisis de Algoritmos se centra en el estudio de los Bucles, del cual en última instancia, dependerán las instrucciones a ser ejecutadas. No se puede realizar un análisis del número de Instrucciones pues son dependientes de las tecnologías (RISK, CISC).Eficiencia = F(n)Siendo n la cantidad de elementos a ser procesados
CONCLUSIÓN
El análisis de algoritmos es una parte importante de la Teoría de complejidad computacional mas amplia, que provee estimaciones teóricas 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. A la hora de realizar un análisis teórico de algoritmos es conveniente calcular su complejidad en su sentido asintótico, es decir, para un tamaño de entrada suficientemente grande. Lo esencial de la investigación era hacer hincapié en la complejidad en el tiempo espacio, así como la eficiencia de los algoritmos. Como ya se menciono anteriormente la complejidad de tiempo es mas que nada el calculo del tiempo que tarda en ejecutarse el algoritmo de igual manera la complejidad de espacio, es la memoria que ocupa dicho algoritmo y por ultimo la eficiencia nos ayuda a saber cuales son las medidas adecuadas a tomar para el uso de estos tipos de algoritmos de acuerdo al problema a resolver.