Ingeniería del Software. Índice



Documentos relacionados
Analisis de algoritmos

Ampliación de Estructuras de Datos

Introducción a los Tipos Abstractos de Datos

Aritmética finita y análisis de error

ALGORITMICA III Capitulo I ANALISIS DE ALGORITMOS

Programación de Sistemas

Resolución de Problemas

Técnicas de prueba 1. FUNDAMENTOS DE LA PRUEBA DEL SOFTWARE

ESTRUCTURA DE DATOS: ARREGLOS

Tecnologías en la Educación Matemática. Expresiones. Datos. Expresiones Aritméticas. Expresiones Aritméticas 19/08/2014

Una (muy) breve introducción a la teoría de la computación

Matrices equivalentes. El método de Gauss

Soporte lógico de computadoras

Control Estadístico del Proceso. Ing. Claudia Salguero Ing. Alvaro Díaz

Tema I. Sistemas Numéricos y Códigos Binarios

Clase 25 de agosto. - Son los conjuntos de estados (válidos o no) para las condiciones de entrada.

PHP y MySQL. Indice: Switch Bucles For While do...while

Análisis asintótico: algoritmos recursivos e iterativos

TAD Lineales: Pila, Cola y Lista

Tecnólogo Informático- Estructuras de Datos y Algoritmos- 2009

Estructuras de Control - Diagrama de Flujo

Tema 3. Medidas de tendencia central Introducción. Contenido

TEMA 3. EL PROCESO DE COMPILACIÓN, DEL CÓDIGO FUENTE AL CÓDIGO MÁQUINA

Codd propuso estos tres lenguajes como base teórica de cualquier lenguaje que quisiera cumplir con los requisitos formales del modelo.

1. Descripción y objetivos

7. Conclusiones. 7.1 Resultados

Introducción. Conceptos y principios. Introducción. Introducción. Elementos del modelo de análisis. Elementos del modelo de diseño.

Sistemas Operativos. Curso 2014 Planificación

Tipos Abstractos de Datos

GOPPAR, UN DERIVADO DEL REVPAR!

Sistemas Operativos. Curso 2015 Planificación

Ejercicios. 1. Definir en Maxima las siguientes funciones y evaluarlas en los puntos que se indican:

Tema 7: Programación con Matlab

1 Agencia de viajes: enunciado

Análisis y cuantificación del Riesgo

UNIDAD I NÚMEROS REALES

Estructuras de datos: Árboles binarios de

EL MÉTODO PERT. Para ello debemos seguir 4 pasos:

Capítulo 8 Teoría de la Complejidad Algorítmica

Ciclo de vida y Metodologías para el desarrollo de SW Definición de la metodología

Procesadores de lenguaje Tema 5 Comprobación de tipos

Carrera: Licenciatura en Sistemas. Materia: Programación de computadoras. Profesor Asociado: Cdor. Héctor A. Carballo

x

PROCESOS SOFTWARE. Según esta estrategia, todo proceso debe planificarse, implantarse y evaluarse, para luego actuar sobre él.

Oprime click para iniciar

Clases y Objetos. Informática II Ingeniería Electrónica

Metodología. del ajuste estacional. Tablero de Indicadores Económicos

Curso 0 de Informática

1 Introducción a los tipos abstractos de datos

Universidad Católica del Maule. Fundamentos de Computación Especificación de tipos de datos ESPECIFICACIÓN ALGEBRAICA DE TIPOS DE DATOS

Soluciones de los ejercicios de Selectividad sobre Probabilidad de Matemáticas Aplicadas a las Ciencias Sociales II

Fundamentos del diseño 3ª edición (2002)

MODELO DE COSTOS ABC

21/02/2012. Agenda. Unidad Central de Procesamiento (CPU)

LABORATORIO Nº 2 GUÍA PARA REALIZAR FORMULAS EN EXCEL

IMPLANTACIONES DE ERP. CÓMO CONSEGUIR EL ÉXITO? MasEmpresa

Ejemplos de conversión de reales a enteros

Funciones de varias variables

Ciclo de vida y Requerimientos de software. Laboratorio de Programación

Producción II en Microsoft Dynamics AX 2009

Arquitectura de Aplicaciones

18. Camino de datos y unidad de control

Estructuras de Control - Diagrama de Flujo

Quién quiere ganar Taller?

Inicio de MO Inicio de MD Inicio de MF. Documento de Análisis. Base de datos de las especificaciones OMT. MO, MD, MF Detallados. Librería de Clases

Tema 2 Conceptos básicos de programación. Fundamentos de Informática

Este documento proporciona la secuencia de pasos necesarios para la construcción de un Diagrama de Flujo.

UNIVERSIDAD MINUTO DE DIOS PROGRAMA CONTADURÍA PÚBLICA

implantación Fig. 1. Ciclo de vida tradicional

by Tim Tran:

un programa concurrente

U.T. 2 Planificación de Proyectos

Proyecto MONO. Juantomás García. 1. Introducción. GNOME Hispano

3. COLA DE PRIORIDAD DEFINICION (I)

Tema 8: Algoritmos de ordenación y búsqueda

Instituto Universitario Politécnico. Santiago Mariño. Unidad I Revisión de conceptos de Sistemas. Operativos. Elaborado por: Ing. Víctor Valencia.

Ejercicios de Programación Orientada a Objetos

E.R.M.C. Experiencia Relacional Marca - Cliente

Estructuras de Datos. Montículos. Montículos. Montículos. Tema 3. Montículos. Definiciones básicas: Definiciones básicas:

1. Ecuaciones no lineales

Resumen de técnicas para resolver problemas de programación entera Martes, 9 de abril. Enumeración. Un árbol de enumeración

Análisis amortizado El plan:

Diseño de algoritmos.

Objetivos. Contenidos. Revisar los principales conceptos de la lógica de primer orden

Preliminares. Tipos de variables y Expresiones

Matrices: Conceptos y Operaciones Básicas

Notación algorítmica (seudocódigo en castellano) (fecha: )

CMMI (Capability Maturity Model Integrated)

GUIA PROGRAMACIÓN ORIENTADA A OBJETOS

Árboles AVL. Laboratorio de Programación II

Capítulo 12: Indexación y asociación

Lección 1. Representación de números

Ecuaciones de primer grado con dos incógnitas

CALIDAD DEL SOFTWARE TESTS DE EXAMEN ACTUALIZADO SEP TEMA 8 MÉTRICAS DEL SOFTWARE

AHORRACOM SOLUCIONES AVANZADAS S.L. Avda. de la Industria 13, Oficina Alcobendas, Madrid.

Tema 1: Computadores y Programas

Valoración de inventario a precio medio.

Tema 1. Introducción a las estructuras y tipos de datos

Transcripción:

Índice Introducción a los TADs Medida de la eficiencia de las implementaciones Estructuras lineales: pilas, colas, listas Tablas asociativas: hash Árboles Grafos 1

Introducción a los TADs Los Tipos Abstractos de Datos nos permiten implementar/usar módulos de software (Tipos Concretos de Datos) en base a su especificación. Tenemos una abstración de los datos reales. Sabemos qué sin saber cómo. Con los primeros lenguajes estructurados (algol, pascal,...) aparecieron los tipos de datos: valores que podian usarse como dominio de ciertas operaciones TAD = VALORES + OPERACIONES VALORES: tipos de datos, estructuras de datos OPERACIONES: Comportamiento, propiedades, son las únicas que conocen la implementación del tipo Aquí, abstracto significa que podemos usar el TAD olvidando la representación del tipo y la implementación de las operaciones 2

Introducción a los TADs Dada una especificación puede haber muchas implementaciones válidas. Escogeremos aquella que sea más eficiente Cualquier cambio en la implementación es transparente a los programas que usan el TAD TAD Diseño Eficacia QUÉ TCD Implementación Eficiencia CÓMO 3

Introducción a los TADs Esta metodología tiene muchos puntos interesantes: Organización del trabajo: los programadores sólo deben conocer la especificación del TAD Reusabilidad: uso del mismo TAD en distintos contextos Corrección: pruebas unitarias y de integración Legibilidad: se manipulan operaciones Eficiencia: podemos buscar la estructura de datos y algortimos más eficiente para implementar el TAD Seguridad: el usuario del TAD no manipula directamente el tipo de datos 4

Introducción a los TADs: ejemplo Construir un programa que lea una série de números complejos (acabados en 0+0i) y que nos devuelva su suma. VALORES: a + bi, donde a y b son reales OPERACIONES: crear: real x real --> complejo preal: complejo --> real pimaginaria: complejo --> real suma: complejo x complejo --> complejo PROPIEDADES: las habituales de los complejos (a+bi) + (c+di) = (a+c) + (b+d)i... 5

Introducción a los TADs: ejemplo algoritmo suma_complejos es var r : complejo; a, b : real fvar r := crear(0.0, 0.0); leerreal(a); leerreal(b); mientras (a <> 0.0 o b <> 0.0) hacer r := suma(r, crear(a,b)); leerreal(a); leerreal(b) fmientras escribirtexto( El resultado es: ); escribirreal(preal(r)); escribirtexto( + ); escribirreal(pimaginaria(r)); escribirtexto( i. ) falgoritmo 6

Introducción a los TADs: ejemplo Hemos hecho el programa sin tener ni idea de como se implementan los complejos, ni de cómo están implementadas las operaciones Ahora que sabemos qué operaciones necesitamos, las podemos implementar 7

Introducción a los TADs: ejemplo Hemos hecho el programa sin tener ni idea de como se implementan los complejos, ni de cómo están implementadas las operaciones Ahora que sabemos qué operaciones necesitamos, las podemos implementar 8

Introducción a los TADs: ejemplo tipo complejo es tupla r, i : real ftupla ftipo función crear (a, b : real) devuelve complejo var c : complejo fvar c.r := a; c.i := b devuelve c ffunción función preal (c : complejo) devuelve real devuelve c.r ffunción función pimaginaria (c : complejo) devuelve real devuelve c.i ffunción función suma (a, b : complejo) devuelve complejo var c : complejo fvar c.r := a.r + b.r; c.i := a.i + b.i devuelve c ffunción 9

Implementación de TADs Para implementar un TAD tenemos que: Escoger una representación adecuada de la estructura de datos Codificar las operaciones visibles/públicas del TAD en función de la representación escogida de forma que las operaciones cumplan las propiedades definidas de la forma más eficiente posible Obviamente, la representación más adecuada será aquella que nos permita codificar las operaciones del TAD con la máxima eficiencia espacial y temporal Primar siempre la eficiencia temporal a la espacial Primar las operaciones críticas 10

Medida de la eficiencia de las implementaciones El tiempo de ejecución de un algoritmo depende de: Ordenador, CPU SO Lenguaje, compilador Factores multiplicativos Datos del problema (tamaño del problema) Condiciones de los datos Aproximación empírica: cronometrar el tiempo de ejecución No conseguimos independencia de máquina, lenguaje, etc. No podemos comparar algoritmos a priori Resultados difícilmente extrapolabres 11

Medida de la eficiencia de las implementaciones Aproximación teórica: Buscamos expresar el tiempo de ejecución de un algortimo en función del tamaño de datos Nos interesa el orden de crecimiento de la función de coste despreciando factores constantes aditivos y multiplicativos y por tanto independientes de los factores anteriores Tenemos que tener en cuenta además las condiciones de los datos, no sólo el tamaño de los datos Análisis del caso peor: límite superior (pesimista) Análisis del caso medio: difícil... (realista) Análisis del caso mejor: límite inferior (optimista) 12

Medida de la eficiencia de las implementaciones Búsqueda de un elemento en un vector desordenado de tamaño n Caso peor: n Caso medio: n/2 Caso mejor: 1 Normalmente estudiaremos el análisis de coste del caso peor Las notaciones más usadas para clasificar las funciones de coste de un algoritmo usan la velocidad de crecimiento respecto al volúmen de los datos y definen el coste asimptótico de los algoritmos mirando su comportamiento en el límite En notación asimptótica se prescinde de constantes y funciones de orden inferior 13

Medida de la eficiencia de las implementaciones O(1) constante asignación O(log n) logarítmico búsqueda dicotómica O(n) lineal búsqueda en vector desordenado O(n log n) quasilineal ordenar un vector O(n k ) polinómico árbol de expansión mínimo de un grafo O(k n ) exponencial satisfactibilidad de una fórmula 14

Medida de la eficiencia de las implementaciones t O(2 n ) O(n) O(log n) O(1) n 15

Medida de la eficiencia de las implementaciones La tasa de crecimiento de un algoritmo nos da el tamaño máximo de datos que podremos procesar fijando el tiempo f(n) 10 3 u.t. 10 4 u.t. 100n O(n) 10 100 x10 5n 2 O(n 2 ) 14 44 x3.14 n 3 /2 O(n 3 ) 12 27 x2.25 2 n O(2 n ) 9 13 x1.44 16

Cálculo de la complejidad de un algoritmo Regla de la suma: A1 y A2 son dos acciones coste A1 es T1(n) O(f1(n)) coste A2 es T2(n) O(f2(n)) coste A1; A2 es T1(n) + T2(n) O(max(f1(n),f2(n))) Ejemplos: n+1 O(n) n+n 2 O(n 2 ) 17

Cálculo de la complejidad de un algoritmo Regla del producto: T1(n) O(f1(n)) T2(n) O(f2(n)) T1(n) * T2(n) O(f1(n) * f2(n)) Ejemplos: n * 1 O(n) n * n 2 O(n 3 ) 18

Cálculo de la complejidad de un algoritmo Asignación, lectura, escritura, comparación tipos elementales O(1) Coste de una secuencia: regla de la suma (máximo de costes) Coste estructura control alternativa: Coste evaluar la condición + coste de la alternativa peor Coste estructura control repetitiva: Suma extendida a todas las iteraciones del coste del cuerpo de la iteración + coste de evaluar la condición del bucle Max número de iteraciones * max coste de cada iteración 19

Cálculo de la complejidad de un algoritmo: ejemplo acción ordena (ent/sal v : tabla[1..n] de entero) es var i, j, k, e : entero fvar para i := 1 hasta N-1 hacer e := v[i]; k := i; para j := i+1 hasta N hacer si v[j]<e entonces e:=v[j]; k:=j fsi fpara v[k]:=v[i]; v[i]:=e fpara facción O(n-i) n 2 -n/2 O(n 2 ) 20