Tema 3. Análisis de costes

Documentos relacionados
La eficiencia de los programas

<tipo> Tipo de dato de los elementos del vector

Tema 6. Gestión dinámica de memoria

Agradecimientos. Nota de los autores. 1 Problemas, algoritmos y programas 1

Analisis de algoritmos

Complejidad de Algoritmos

: Algorítmica y Estructura de Datos I

PROGRAMA DE ASIGNATURA DE PROGRAMACIÓN I

Tema 2 Introducción a la Programación en C.

Notación Asintótica 2

Programación de Sistemas

Estructuras de datos: Árboles binarios de

UNIVERSIDAD AUTONOMA DE BAJA CALIFORNIA DIRECCION GENERAL DE ASUNTOS ACADEMICOS PROGRAMA DE ASIGNATURA

EJERCICIOS RESUELTOS PROGRAMACIÓN III

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

Introducción al lenguaje C

ALGORITMICA III Capitulo I ANALISIS DE ALGORITMOS

Desde los programas más simples escritos en un lenguaje de programación suelen realizar tres tareas en forma secuencial.

Fundamentos de Programación Visual Basic

Ejemplo, generación de #s aleatorios

Tema 2. El lenguaje JAVA

INTRODUCCIóN A LA PROGRAMACIóN APUNTES DE JAVA APUNTES DE JAVA

Problemas de Recursividad

NOTACIÓN O GRANDE. El análisis de algoritmos estima el consumo de recursos de un algoritmo.

Procesadores de lenguaje Tema 6 La tabla de símbolos

Relación de prácticas de la asignatura METODOLOGÍA DE LA PROGRAMACIÓN Segundo Cuatrimestre Curso º Grado en Informática

UNIVERSIDAD DE SAN CARLOS DE GUATEMALA FACULTAD DE INGENIERIA ESCUELA DE CIENCIAS Y SISTEMAS

Elementos de un programa en C

Ampliación de Estructuras de Datos

Todo programa en 'C' consta de una o más funciones, una de las cuales se llama main.

UNIDAD ACADÉMICA PROFESIONAL TIANGUISTENCO

Operadores de comparación

Introducción al tipo Vector Cómo guardar una colección de datos conceptualmente relacionados? - almacenar los 100 primeros números primos, - al

Ficha de Aprendizaje N 13

Guía práctica de estudio 05: Diagramas de flujo

Práctica 3. Paso de parámetros entre subrutinas. 3. Consideraciones sobre el paso de parámetros

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

Apuntadores en C y C++

Universidad Centroccidental Lisandro Alvarado. Decanato de Ciencias y Tecnología Departamento de Sistemas

Planificaciones Algoritmos y Programación II. Docente responsable: CALVO PATRICIA MABEL. 1 de 6

Índice general. Capítulo 1 Conceptos básicos. Capítulo 2 Controles básicos I. Pág. N. 1

POST REQUISITO: CATEGORIA: Obligatorio SEMESTRE: Primer Semestre 2015 HORAS POR SEMANA DEL LABORATORIO: DIAS QUE SE IMPARTE EL LABORATORIO:

4. Operadores Operador asignación

PROGRAMACIÓN UNIDADES

VI Colas de prioridad

Sistema electrónico digital (binario) que procesa datos siguiendo unas instrucciones almacenadas en su memoria

ARREGLOS DEFINICION GENERAL DE ARREGLO

El lenguaje C. 1. Identificadores, constantes y variables

ALGORITMOS DE ORDENACIÓN Y BÚSQUEDA

Funciones. Parámetros por valor

Ingeniería del Software. Índice

Operadores y Expresiones

ÁREA: MATEMÁTICAS UNIDAD : 1 TEMPORALIZACIÓN: OCTUBRE 1ª QUINCENA OBJETIVOS CONTENIDOS CRITERIOS DE EVALUACIÓN

la solución a una ecuación cuadrática solicitando al usuario los términos de dicha ecuación.

Práctica 4. Organización del Computador 1 12 de septiembre de Algunas consideraciones preliminares:

Algoritmos. Medios de expresión de un algoritmo. Diagrama de flujo

Algoritmos de Búsqueda y Ordenamiento

Parte I: El computador y el proceso de programación

Representación de números enteros: el convenio exceso Z

Algoritmos de Ordenamiento

Nombre de la asignatura: Programación Básica. Créditos: Objetivo de aprendizaje

Representación de la información

MANUAL DE PRÁCTICAS DEL TALLER DE PROGRAMACIÒN PRACTICA NO.6

Programación. Tema 8: Tablas Hash. Apuntes elaborados por: Eduardo Quevedo, Aaron Asencio y Raquel López Revisado por: Javier Miranda el????

Fundamentos de programación

Algoritmos y programas. Algoritmos y Estructuras de Datos I

Matemáticas II. Carrera: IFM Participantes. Representantes de la academia de sistemas y computación de los Institutos Tecnológicos.

Herramientas de Programación. M.C. Juan Carlos Olivares Rojas

Algoritmos de Búsqueda y Ordenación. Rosalía Laza Fidalgo. Departamento de Informática. Universidad de Vigo

Capítulo 3 Ordenación(Clasificación) y Búsqueda

Definición de Memoria

Práctica 4 El algoritmo QuickSort, comparación de algoritmos de ordenación

UNIVERSIDAD DE GUADALAJARA

3. COLA DE PRIORIDAD DEFINICION (I)

Planificaciones Algoritmos y Programación I. Docente responsable: AZCURRA DIEGO ANDRES. 1 de 5

UNIVERSIDAD NACIONAL EXPERIMENTAL DE GUAYANA VICERRECTORADO ACADÉMICO COORDINACION DE PRE-GRADO PROYECTO DE CARRERA DE INGENIERIA INDUSTRIAL

1. Computadores y programación

TECNICO SUPERIOR EN INFORMÁTICA EMPRESARIAL MÓDULO INTRUCCIONAL

Estructuras de control

Algoritmos sobre secuencias y conjuntos de datos

ALGORITMOS, ESTRUCTURAS Y PROGRAMACION

Semana de las Matemáticas e Ingeniería. Desarrollo de algoritmos recursivos empleando la aplicación PseInt

Apuntadores (Punteros)

PROYECTO MATEM CURSO PRECÁLCULO UNDÉCIMO AÑO MODALIDAD ANUAL. Guía para el II parcial

Tema 10- Representación Jerárquica: Tema 10- Representación Jerárquica: Árboles Binarios

DEPARTAMENTO DE MATEMÁTICAS. IES GALLICUM

7. Agrupamiento (clustering)

Índice de contenido. Índice de contenido... i Indice de prácticas...ix Prólogo...xi Cómo utilizar este libro...xv

ESCUELA SUPERIOR POLITECNICA DEL LITORAL PROGRAMA DE ESTUDIOS

Toda copia en PAPEL es un "Documento No Controlado" a excepción del original.

Profesor(a): M. A. Zeferino Galarza Hernández

Métodos para escribir algoritmos: Diagramas de Flujo y pseudocódigo

Un identificador le da nombre único a un elemento en un programa (Variables, procedimientos, etc.). No puede contener operadores como + - * /

PLAN DE MATERIAS ACADEMUSOFT 3.2

PROGRAMA INSTRUCCIONAL

Ing. Ramón Morales Higuera

Operadores. Javier Fernández Rivera -

UNIVERSIDAD NACIONAL DE SAN ANTONIO ABAD DEL CUSCO

Práctica 3: Vectores y matrices en C.

Ejemplo: El problema de la mochila. Algoritmos golosos. Algoritmos y Estructuras de Datos III. Segundo cuatrimestre 2013

Transcripción:

Tema 3. Análisis de costes http://aulavirtual.uji.es José M. Badía, Begoña Martínez, Antonio Morales y José M. Sanchiz {badia, bmartine, morales, sanchiz}@icc.uji.es Estructuras de datos y de la información Universitat Jaume I

Índice 1. Motivación 5 2. Conceptos y definiciones 9 3. Análisis del coste 14 4. Notación asintótica 23 5. Algoritmos de ordenación 31 5.1. Ordenación por Selección......................... 32 5.2. Método de la burbuja............................ 35 5.3. Ordenación por Inserción......................... 38 6. Coste espacial 44

Tema 3. Análisis de costes 3 / 46 Bibliografía (Nyhoff 06), Apartados 10.4 y 13.1 G. Brassard y P. Bratley, Algorithmique: Conception et Analyse, Ed. Mason, (1987), Capítulos 1 y 2 G. Martínez, Apuntes de la asignatura IS04, (2006), Tema 10 A. Marzal, Apuntes de las asignaturas II04 e IG04, (2005), Tema 14 L. Joyanes y I. Zahonero, Estructuras de Datos. Algoritmos, abstracción y objetos, Ed. McGrawHill, (1998), Capítulos 15 y 16

Tema 3. Análisis de costes 4 / 46 Objetivos Comprender la importancia del desarrollo de algoritmos eficientes. Conocer los conceptos relacionados con el análisis de costes. Saber utilizar la notación asintótica para el análisis de costes. Conocer los principales algoritmos cuadráticos de ordenación y saber analizar su coste.

Tema 3. Análisis de costes 5 / 46 1 Motivación Por qué se buscan algoritmos eficientes? Problema: Desarrollar un algoritmo que calcule el valor de x 2n 1 f l o a t i n t e n t o 1 ( f l o a t x, i n t n ) { 2 i n t aux ; 3 f l o a t res ; 4 res = 1 ; 5 aux = power ( 2, n ) ; 6 for ( i n t i = 0 ; i <aux ; i ++) 7 res = res x ; 8 return res ; 9 }

Tema 3. Análisis de costes 6 / 46 1 Motivación (II) Duración de la primera versión Potencia de cálculo (prod/seg) n 10 6 10 9 10 12 10 0,001s. 10 6 10 9 20 1s. 0,001s. 10 6 50 36 años 13 dias 19 minutos 100 4 10 16 años 4 10 13 años 4 10 10 años Edad del universo 1,5 10 10 años

Tema 3. Análisis de costes 7 / 46 1 Motivación (III) Solución eficiente 1 f l o a t i n t e n t o 2 ( f l o a t x, i n t n ) { 2 f l o a t res ; 3 res = x ; 4 for ( i n t i = 0 ; i <n ; i ++) 5 res = res res ; 6 return res ; 7 } Coste: n productos

Tema 3. Análisis de costes 8 / 46 1 Motivación (IV) Duración de la segunda versión Potencia de cálculo: 10 6 prod/seg n versión 1 versión 2 10 0,001s. 10 5 s. 20 1s. 2 10 5 s. 100 4 10 16 años 10 4 s. 3.600.000.000 siempre 1 hora Coste exponencial vs. Coste lineal

Tema 3. Análisis de costes 9 / 46 2 Conceptos y definiciones La ejecución de un algoritmo en una máquina supone el uso de una serie de recursos: espacio y tiempo. Coste espacial: Cantidad de memoria consumida. Datos. Coste temporal: Tiempo necesario para ejecutar el programa. Operaciones. Ambos factores suelen entrar en conflicto: Necesidad de establecer una prioridad o un compromiso.

Tema 3. Análisis de costes 10 / 46 2 Conceptos y definiciones (II) Métodos de análisis A posteriori (o experimental): Se estudia el comportamiento de una implementación en un ordenador. Ejemplos: Coste espacial: 320Kbytes Coste temporal: 12, 3seg. A priori (o teórico): Se determina matemáticamente el coste antes de implementar o ejecutar el algoritmo. Ejemplos: Coste espacial: 3n 2 Coste temporal: 2logn

Tema 3. Análisis de costes 11 / 46 2 Conceptos y definiciones (III) Factores de que depende el coste Habilidad del programador. Lenguaje de programación y compilador utilizado. Ordenador sobre el que se implementa. Tipo y carga. Son realmente importantes? Es necesario implementar el algoritmo? Es mejor realizar un análisis teórico independiente de la implementación.

Tema 3. Análisis de costes 12 / 46 2 Conceptos y definiciones (IV) Coste de un algoritmo genérico n i : número de veces que se ejecuta i t i : tiempo de ejecución de i El factor n i puede depender de: Talla: Tamaño del problema (n i t i ) i {instrucciones} Instancia: Conjunto posible de datos de entrada del problema El factor t i depende de: Las características del ordenador

Tema 3. Análisis de costes 13 / 46 2 Conceptos y definiciones (V) Ejemplos de talla e instancia Problema: Sumar dos vectores de reales. Talla: Tamaño de los vectores. Instancia: Cualquier par posible de vectores de reales. Problema: Buscar un elemento en una lista. Talla: Longitud de la lista. Instancia: Cualquier posible conjunto de valores en la lista y el valor buscado. Problema: Calcular el sumatorio de 1 a n. Talla: Cantidad de elementos a sumar. Instancia: El valor de n (coincide con la talla).

Tema 3. Análisis de costes 14 / 46 3 Análisis del coste Coste temporal Número de pasos de un programa expresado en función de la talla del problema. Qué es un paso de programa? Cualquier operación o conjunto de operaciones cuyo tiempo de ejecución no depende de la instancia ni de la talla del problema. Operaciones aritméticas. Comparaciones.... Al comparar hay que mantener siempre el mismo criterio.

Tema 3. Análisis de costes 15 / 46 3 Análisis del coste (II) Suma de vectores 1 void sumavec ( f l o a t v [ ], f l o a t w [ ], i n t n ) { 2 for ( i n t i = 0 ; i <n ; i ++) 3 v [ i ] = v [ i ] + w[ i ] ; 4 } Paso: Suma en coma flotante. Coste = n sumas (igual para todas las instancias posibles).

Tema 3. Análisis de costes 16 / 46 3 Análisis del coste (III) Búsqueda de un elemento en un vector ordenado Primera aproximación 1 i n t b u scalin ( f l o a t v [ ], i n t n, f l o a t buscado ) { 2 i n t i = 0 ; 3 while ( ( i <n ) & & ( v [ i ] < buscado ) ) 4 i ++; 5 i f ( ( i = = n ) ( v [ i ] > buscado ) ) return 1; 6 else return i ; 7 } Paso: elementos comprobados comparaciones incrementos.

Tema 3. Análisis de costes 17 / 46 3 Análisis del coste (IV) El coste depende de la instancia. 3 casos básicos: Caso mejor: Aquellas instancias que, para cada talla, hacen que se ejecuten el menor número de pasos. Cuidado! No es la instancia de talla más pequeña posible. Caso peor: Idem con el mayor número de pasos. Caso promedio: Aquellas instancias que para cada talla hacen que se ejecuten el número de pasos promedio del algoritmo. numop i prob i i {instancias}

Tema 3. Análisis de costes 18 / 46 3 Análisis del coste (V) Coste de la búsqueda lineal Caso mejor: El elemento buscado es el primero. Coste = 1 Caso peor: el elemento buscado es mayor que el último. Coste = talla = n Caso promedio: depende de la probabilidad de cada instancia. Coste = n 1 i=0 (i + 1) 1 n = n + 1 2

Tema 3. Análisis de costes 19 / 46 3 Análisis del coste (VI) Búsqueda dicotómica 1 i n t buscadic ( f l o a t v [ ], i n t n, f l o a t buscado ) { 2 i n t desde = 0, hasta = n 1, centro ; 3 bool encontrado = false ; 4 while ( ( desde <= hasta ) & & (! encontrado ) ) { 5 centro = ( desde + hasta ) / 2 ; 6 i f ( v [ centro ] = = buscado ) encontrado = true ; 7 else i f ( v [ centro ] > buscado ) hasta = centro 1; 8 else desde = centro + 1 ; 9 } 10 i f encontrado return centro ; 11 else return 1; 12 }

Tema 3. Análisis de costes 20 / 46 3 Análisis del coste (VII) Búsqueda dicotómica 0 8 16 desde 3 v[centro]>buscado 7 centro hasta desde v[centro]<buscado centro 4 5 hasta desde centro hasta El tamaño del espacio de búsqueda se divide aproximadamente por dos en cada iteración.

Tema 3. Análisis de costes 21 / 46 3 Análisis del coste (VIII) Paso: intentos (uno por iteración del bucle while). Caso mejor: el elemento está en la mitad del vector: Coste = 1. Caso peor: el elemento no está o es el último buscado: Coste = log 2 n. iteración tamaño 1... n/2 2... n/2 2 Última iteración......... k... n/2 k un solo elemento en el vector n 2 k = 1 log 2 n 2 k = log 21 = 0 k = log 2 n

Tema 3. Análisis de costes 22 / 46 3 Análisis del coste (IX) Búsqueda dicotómica vs. lineal n (talla) lineal (n) binario (log 2 n) lineal/binario 10 10 4 2,5 10 2 10 2 7 14,3 10 3 10 3 10 100 10 4 10 4 14 714,3 10 5 10 5 17 5882,4 10 6 10 6 20 50,000

Tema 3. Análisis de costes 23 / 46 4 Notación asintótica Problema: Multiplicar una matriz triangular superior por un vector. 1 void matvec ( f l o a t a [ ] [ MAX], f l o a t b [ ], f l o a t c [ ], i n t n ) { 2 for ( i n t i = 0 ; i <n ; i + + ) { 3 c [ i ] = 0. 0 ; 4 for ( i n t j = i ; j <n ; j ++) 5 c [ i ] = c [ i ] + a [ i ] [ j ] b [ j ] ; 6 } 7 } Paso: operación en coma flotante (suma y producto).

Tema 3. Análisis de costes 24 / 46 4 Notación asintótica (II) Coste del producto matriz vector i pasos bucle j 0... 2n 1... 2(n 1) 2... 2(n 2)......... n-1... 2 Coste = 2n + 2(n 1) +... + 2 = n 2i = n(n + 1) = n 2 + n i=1

Tema 3. Análisis de costes 25 / 46 4 Notación asintótica (III) Influencia de los distintos factores n n 2 n 2 + n 2n 2 1 1 2 2 10 100 110 200 100 10.000 10.100 20.000 1.000 1.000.000 1.001.000 2.000.000 10.000 100.000.000 100.010.000 200.000.000 n 2 + n se aproxima asintóticamente a n 2

Tema 3. Análisis de costes 26 / 46 4 Notación asintótica (IV) Notación O Sea f : N R +, definimos la siguiente familia de funciones O( f (n)) = {t : N R + c R +, n 0 N : n > n 0 t(n) c f (n)}

Tema 3. Análisis de costes 27 / 46 4 Notación asintótica (V) El coste de un algoritmo es O( f (n)) si puede expresarse como una función que pertenece a esa familia. Ejemplos: 3n + 2 es O(n) 2n 2 + 10n es O(n 2 ) c = 4, n 0 = 2 : n > 2 3n + 2 4n 6 2 n + n 2 es O(2 n ) c = 3, n 0 = 10 : n > 10 2n 2 + 10n 3n 2 c = 7, n 0 = 4 : n > 4 6 2 n + n 2 7 2 n

Tema 3. Análisis de costes 28 / 46 4 Notación asintótica (VI) Notación Ω Sea f : N R +, definimos la siguiente familia de funciones Ω( f (n)) = {t : N R + c R +, n 0 N : n > n 0 t(n) c f (n)}

Tema 3. Análisis de costes 29 / 46 4 Notación asintótica (VII) Notación Θ Θ( f (n)) = O( f (n)) Ω( f (n))

Tema 3. Análisis de costes 30 / 46 4 Notación asintótica (VIII) sublineal lineal superlineal Ordenes más comunes constante O(1) logarítmico O(log n) O(sqrt n) O(n) O(nlog n) cuadrático O(n 2 ) polinómico cúbico O(n 3 ) exponencial O(2 n ) O(n n ) Orden creciente

Tema 3. Análisis de costes 31 / 46 5 Algoritmos de ordenación Algoritmos cuadráticos Selección Burbuja Inserción No cuadráticos: mergesort, quicksort,... Pasos: Comparación de dos elementos del vector. Intercambio de dos elementos del vector.

Tema 3. Análisis de costes 32 / 46 5.1 Ordenación por Selección Para i=0 hasta n-2 hacer * Buscar el mínimo entre i y n. * Intercambiarlo con el elemento que ocupa la posición i. no colocados i=3 i=4 i=5 i=6 1 1 3 7 4 23 15 42 9 1 1 3 4 7 23 15 42 9 1 1 3 4 7 23 15 42 9 1 1 3 4 7 9 15 42 23 orden global

Tema 3. Análisis de costes 33 / 46 5.1 Ordenación por Selección (II) 1 void Seleccion ( i n t v [ ], i n t n ) { 2 i n t posmin, aux ; 3 for ( i n t i = 0 ; i <n 1; i + + ) { 4 posmin = i ; 5 for ( i n t j = i + 1 ; j <n ; j ++) 6 i f ( v [ j ] < v [ posmin ] ) posmin= j ; 7 aux = v [ i ] ; 8 v [ i ] = v [ posmin ] ; 9 v [ posmin ] = aux ; 10 } 11 }

Tema 3. Análisis de costes 34 / 46 5.1 Ordenación por Selección (III) Caso peor = Caso mejor Paso: comparaciones Coste = n 2 i=0 n 1 1 = j=i+1 n 2 i=0 (n i 1) = n2 n 2 Coste O(n 2 ) : cuadrático Paso: intercambios Coste = n 2 1 = n 1 O(n) : lineal i=0

Tema 3. Análisis de costes 35 / 46 5.2 Método de la burbuja Para i=n-1 hasta 1 hacer Mover el elemento mayor entre 0 e i a la posición i. intercambiando elementos sucesivos desordenados. 3 1 4 7 1 15 9 23 42 no colocados i = n-3 = 6 1 3 4 7 1 15 9 23 42 1 3 4 7 1 15 9 23 42 1 3 4 7 1 15 9 23 42 1 3 4 1 7 15 9 23 42 1 3 4 1 7 15 9 23 42 1 3 4 1 7 9 15 23 42 orden global

Tema 3. Análisis de costes 36 / 46 5.2 Método de la burbuja (II) 1 void Burbuja ( i n t v [ ], i n t n ) { 2 i n t aux ; 3 for ( i n t i =n 1; i > 0 ; i ) 4 for ( i n t j = 0 ; j < i ; j ++) 5 i f ( v [ j ] > v [ j + 1 ] ) { 6 aux = v [ j ] ; 7 v [ j ] = v [ j + 1 ] ; 8 v [ j + 1 ] = aux ; 9 } 10 }

Tema 3. Análisis de costes 37 / 46 5.2 Método de la burbuja (III) Paso: comparaciones (Caso mejor = Caso peor). Coste = n 1 i=1 i 1 1 = j=0 n 1 i = n2 n i=1 2 Coste O(n 2 ) : cuadrático Paso: intercambios Caso mejor: vector en orden creciente. Coste = 0 O(1) : constante Caso peor: vector en orden decreciente. Coste = n2 n 2 O(n 2 ) : cuadrático

Tema 3. Análisis de costes 38 / 46 5.3 Ordenación por Inserción Para i=n-2 hasta 0 hacer * Guardar el elemento i en un auxiliar. * Desplazar una posición a la izquierda los elementos menores que el i-ésimo situados a su derecha. * Colocar el auxiliar en el hueco habilitado. 7 15 3 1 4 23 1 9 42 aux 7 15 3 1 4 1 9 42 23 no colocados i = n-4 = 5 7 15 3 1 4 1 9 42 7 15 3 1 4 23 1 9 42 orden parcial

Tema 3. Análisis de costes 39 / 46 5.3 Ordenación por Inserción (II) 1 void CasiInsercion ( i n t v [ ], i n t n ) { 2 i n t j, aux ; 3 for ( i n t i =n 2; i >=0; i ) { 4 aux = v [ i ] ; 5 j = i ; 6 while ( v [ j + 1 ] < aux ) { 7 v [ j ] = v [ j + 1 ] ; 8 j ++; 9 } 10 v [ j ] = aux ; 11 }

Tema 3. Análisis de costes 40 / 46 5.3 Ordenación por Inserción (III) i=7 v[0] v[1] v[2] v[3] v[4] v[5] v[6] v[7] v[8] aux=v[7] j=7 7 15 3 1 4 23 1 42 9 (aux=42) v[8]<aux? (9<42?) SI j=8 v[7]=v[8] v[9]<aux? (v[7]=9) Cuánto vale v[9]? Solución: Colocar un centinela en la posición adicional v[n].

Tema 3. Análisis de costes 41 / 46 5.3 Ordenación por Inserción (IV) 1 void I n s e r c i o n ( i n t v [ ], i n t n ) { 2 i n t i, j ; 3 for ( i =n 2; i >=0; i ) { 4 v [ n ] = v [ i ] ; / / v [ n ] es e l c e n t i n e l a 5 j = i ; 6 while ( v [ j + 1 ] < v [ n ] ) { 7 v [ j ] = v [ j + 1 ] ; 8 j ++; 9 } 10 v [ j ] = v [ n ] ; 11 } 12 }

Tema 3. Análisis de costes 42 / 46 5.3 Ordenación por Inserción (V) Paso: comparaciones Caso mejor: vector en orden creciente. Coste = n 2 1 = n 1 O(n) : lineal i=0 Caso peor: vector en orden decreciente. Coste = n 2 i=0 n 1 j=i 1 = n2 + n 2 2 O(n 2 ) : cuadrático

Tema 3. Análisis de costes 43 / 46 5.3 Ordenación por Inserción (VI) Paso: intercambios (en este caso contamos desplazamientos). Caso mejor: vector en orden creciente. Coste = n 2 2 = 2(n 1) O(n) : lineal i=0 Caso peor: vector en orden decreciente. Coste = n 2 i=0 (2 + n 2 j=i 1) = n2 + 3n 4 2 O(n 2 ) : cuadrático

Tema 3. Análisis de costes 44 / 46 6 Coste espacial Coste espacial: ocupación de memoria en función de la talla. Paso elementos de tipo base (no tienen porque ser bytes). Ejemplo: Producto de una matriz cuadrada de tamaño n n por un vector. Coste: número de elementos de la matriz + elementos del vector. No importa si son enteros, reales (float o double). Puede usarse notación asintótica: O, Ω y Θ. Coste = n 2 + n + k O(n 2 )

Tema 3. Análisis de costes 45 / 46 6 Coste espacial (II) Ejemplos Máximo de tres enteros: Coste O(1). Suma de dos vectores: Coste O(n). Ordenación de un vector por inserción: Coste O(n). Producto de dos matrices cuadradas: Coste O(n 2 ).

Tema 3. Análisis de costes 46 / 46 6 Coste espacial (III) Caso sencillo: algoritmos estáticos no recursivos (zona de datos en memoria). Otros casos: Algoritmos con memoria dinámica: Uso del montículo (heap). Algoritmos recursivos: Uso de la pila (stack). Ejemplo: Cálculo del factorial. Versión iterativa: Coste O(1). Versión recursiva: Coste O(n).