U7.resumen.ANALISIS DE LOS ALGORITMOS

5

Click here to load reader

Transcript of U7.resumen.ANALISIS DE LOS ALGORITMOS

Page 1: U7.resumen.ANALISIS DE LOS ALGORITMOS

INSTITUTO TECNOLOGICO SUPERIOR DEFELIPE CARRILLO PUERTO

MATERIA: ESTRUCTURA DE DATOS

RESUMEN

UNIDAD 7: ANALISIS DE LOS ALGORITMOS.

DOCENTE: Dr. Niels Henryck Aranda Cuevas

ALUMNO: JOSE LUIS YAMA MAY

SEMESTRE: III GRUPO: B AULA: J-4

VIERNES 14 de DICIEMBRE del AÑO 2012

Page 2: U7.resumen.ANALISIS DE LOS ALGORITMOS

ITS CARRILLO PUERTOESTRUCTURA DE DATOS

2 YAMA MAY JOSE LUIS

ANÁLISIS DE ALGORITMOS.

El análisis de algoritmos es una parte importante de la Teoría de complejidadcomputacional más amplia, que provee estimaciones teóricas para los recursosque necesita cualquier algoritmo que resuelva un problema computacional dado.Estas estimaciones resultan ser bastante útiles en la búsqueda de algoritmoseficientes.

Para poder trabajar sobre el análisis de un algoritmo es necesario definir conclaridad que es un algoritmo, sus características en cuanto a estructura gráfica, sufuncionalidad y que aspectos se toman en cuenta o mejor dicho en que nosayudara esta herramienta, que si bien, es muy común escucharlo en el campo dela informática, es utiliza también en otras áreas por la ayuda que proporciona en latoma de decisiones sobre cualquier acción que se desee realizar, o programa,esto ultimo en la creación de software.

DEFINICIÓN: Un algoritmo es una secuencia de pasos lógica para encontrar lasolución de un problema. Todo algoritmo debe contar con las siguientescaracterísticas: preciso, definido y finito. Por Preciso, entenderemos que cadapaso del algoritmo tiene una relación con el anterior y el siguiente; un algoritmo esDefinido, cuando se ejecuta más de una vez con los mismos datos y el resultadoes el mismo; y Finito, indica que el algoritmo cuenta con una serie de pasosdefinidos o que tiene un fin.

Como se mencionó anteriormente, un algoritmo es útil para la toma dedecisiones sobre cualquier acción o programa que deseamos llevar a cabo. Perotambién es una herramienta útil para realizar pruebas sobre el funcionamiento decualquier cosa, ya sea antes de llevarlo a cabo o después para confirmar su buenfuncionamiento en cualquier condición de trabajo.

Para dejar en claro esta apartado de la utilidad de los algoritmos comoherramientas de prueba tenemos lo siguiente que habla sobre las pruebas y comose dará cuanta tiene una serie de pasos a seguir y a cumplirse; eso es unalgoritmo.

Tenemos como ejemplo dos tipos de pruebas muy conocidas en el campo delos sistemas computarizados, pero antes de entrar de lleno con estas pruebas,primero definiremos que es una prueba en computación:

Prueba: es realizar una serie de acciones que nos permitan definir, si elelemento que sometemos a prueba cumple con su objetivo y con lo que se esperaserá su funcionalidad, o también se puede decir que, una prueba es factor críticopara garantizar la calidad del software. Una prueba conlleva la intención dedescubrir algún error

Page 3: U7.resumen.ANALISIS DE LOS ALGORITMOS

ITS CARRILLO PUERTOESTRUCTURA DE DATOS

3 YAMA MAY JOSE LUIS

Un caso de prueba es bueno cuando su ejecución conlleva una altaprobabilidad de encontrar un error. El éxito de la prueba se mide en función de lacapacidad de detectar un error que estaba oculto. Existen varios tipos de pruebacomo: las pruebas Unitarias, de Integración, de Aceptación, entre muchos otros.

Dentro de la definición de prueba, se mencionan los errores, que puedengenerarse por varios motivos:

Error: acción humana que produce una falta. Falta: algo que está mal en un producto (modelo, código, documento, etc.) Fallo: manifestación de una falta. Defecto: error, falta o fallo.

Una vez estos conceptos, hablemos de las pruebas de caja blanca y caja negra,aunque se hablara más en específico de la primera prueba.

Prueba De Caja BlancaLa prueba de la caja blanca usa la estructura de control del diseño

procedural para derivar los casos de prueba y tiene como idea o finalidad principalla de confeccionar casos de prueba que garanticen que se verifican todos loscaminos independientes. Además verifica cada camino de manera independiente,probando sus dos facetas desde el punto de vista lógico, es decir, verdadera yfalsa, ejecutando todos los bucles en sus límites operacionales y ejercitando lasestructuras internas de datos.

Fue propuesta por Tom McCabe (1976). La idea es derivar casos de pruebaa partir de un conjunto dado de caminos independientes.

Camino independiente es aquel que introduce por lo menos una sentenciade procesamiento (o valor de condición) que no estaba considerada. Para obtenerel conjunto de caminos independientes se construirá el Grafo de Flujo asociado yse calculará su Complejidad Ciclomática.

Grafo de Flujo de las Estructuras Básicas de programa

Page 4: U7.resumen.ANALISIS DE LOS ALGORITMOS

ITS CARRILLO PUERTOESTRUCTURA DE DATOS

4 YAMA MAY JOSE LUIS

Con estos grafos se pretende básicamente; Separar todas las condiciones,Agrupar sentencias ‘simples’ en bloques, y Numerar todos los bloques y tambiénlas condiciones.

Pruebas de Caja BlancaPrueba del Camino Básico - Complejidad Ciclomática

Complejidad Ciclomática de un grafo de flujo V (G) establece el número decaminos independientes. Puede calcularse de tres formas alternativas:

1. Mediante el número de regiones del grafo de flujo2. V (G) = A - N + 2, donde A es el número de aristas y N es el número de

nodos.3. V (G) = P + 1, donde P es el número de nodos predicado.

Pruebas de Caja NegraEn cuanto a las pruebas de caja negra tenemos que abordar dos aspectos

que se refieren a la Partición Equivalente y al Análisis de Valores Límite mediantela Verificación y Validación de los procesos llevados a cabo durante la prueba.

Verificación: ¿estamos construyendo el producto correctamente?Validación: ¿estamos construyendo el producto correcto?

En fin estas son las pruebas que se manejan como semejanza a losalgoritmos y con los que se pretende, dejar más en claro el objetivo de estaherramienta. Ahora bien, hablando de estructuras de datos podemos decir que losalgoritmos según su función se dividen en: Algoritmos de ordenamiento yAlgoritmos de búsqueda.

Un algoritmo de ordenamiento, es el que pone los elementos de una lista ovector en una secuencia (ascendente o descendente) diferente a la entrada.

Un algoritmo de búsqueda, es aquel que está diseñado para encontrar lasolución de un problema booleano de existencia o no de un elemento en particulardentro de un conjunto finito de elementos (estructura de datos)

Page 5: U7.resumen.ANALISIS DE LOS ALGORITMOS

ITS CARRILLO PUERTOESTRUCTURA DE DATOS

5 YAMA MAY JOSE LUIS

Además de que se utiliza para realizar pruebas de escritorio sobre elfuncionamiento de software.

COMPLEJIDAD ALGORITMICA.La complejidad algorítmica representa la cantidad de recursos (temporales) quenecesita un algoritmo para resolver un problema y por tanto permite determinar laeficiencia de dicho algoritmo.Los criterios que se van a emplear para evaluar la complejidad algorítmica noproporcionan medidas absolutas sino medidas relativas al tamaño del problema.Tareas en el Análisis de Algoritmos:

- Determinar qué operaciones se emplean y su costo relativo.- Determinarconjuntos de datos para exhibir todos los patrones posibles decomportamiento.

- Análisis a priori: se determina una función (de ciertos parámetros) queacote el tiempo de cómputo del algoritmo.

- Análisis a posteriori: estadísticas reales sobre tiempo y memoria.

Tiempo De Ejecución De Un Algoritmo.

La eficiencia en tiempo se mide en términos de la cantidad de tiempo deejecución del programa. El tiempo de ejecución de un algoritmo, se refiere a lasuma de los tiempos en los que el programa tarda en ejecutar una a una, todassus instrucciones, tomando en cuenta que cada instrucción requiere una unidad detiempo, dicho tiempo se puede calcular en función del número de datos.

La Complejidad De Espacio

La complejidad de espacio, se refiere a la memoria que utiliza un programapara su ejecución; es decir el espacio de memoria que ocupan todas las variablespropias del programa. Dicha memoria se divide en Memoria estática y Memoriadinámica.

Para calcular la memoria estática, se suman la cantidad de memoria que ocupacada una de las variables declaradas en el programa.

Eficiencia De Los Algoritmos

Un algoritmo es eficiente cuando logra llegar a sus objetivos planteadosutilizando la menor cantidad de recursos posibles, es decir, minimizando el usomemoria, de pasos y de esfuerzo humano.Espacio: medida de la cantidad de memoria requerida por un programa.Tiempo: la cantidad de tiempo de ejecución del programa