Вы находитесь на странице: 1из 18

Construccin formal y Eficiencia de un algoritmo

Ingeniera Informtica Ingeniera Tcnica en Informtica de Sistemas Ingeniera Tcnica en Informtica de Gestin Fundamentos de la Programacin 1
Dpto. de Ciencia de la Computacin e Inteligencia Artificial Universidad de Alicante
Fundamentos de la Programacin 1
Ingeniera Informtica Ingeniera Tcnica en Informtica de Gestin Ingeniera Tcnica en Informtica de Sistemas

Tema 4:

Construccin formal de algoritmos


Metodologa de programacin

Especificacin de los algoritmos Implementacin del programa Verificacin del programa

Describimos qu debe hacer, NO cmo hacerlo IMPLEMENTAR Comprobar que la implementacin realizada cumple la especificacin que se plante inicialmente
Fundamentos de la Programacin 1
Ingeniera Informtica Ingeniera Tcnica en Informtica de Gestin Ingeniera Tcnica en Informtica de Sistemas

Estados de un programa. Traza


El estado de un proceso queda correctamente descrito por el valor de cada uno de los objetos (variables) en el momento en que dicho proceso es observado
n1
Solicitar un nmero n1

n2 I 3 3 3

nRes I I 7 7

4
Solicitar un nmero n2

4
Calcular nRes = n1 + n2

4
Mostrar nRes

4
Fundamentos de la Programacin 1
Ingeniera Informtica Ingeniera Tcnica en Informtica de Gestin Ingeniera Tcnica en Informtica de Sistemas

Especificacin de un algoritmo (1)


Lo nico que nos importar de los algoritmos es la funcin que realizan, no los detalles de cmo la realizan

Cmo se comunica el algoritmo con el exterior

Fundamentos de la Programacin 1
Ingeniera Informtica Ingeniera Tcnica en Informtica de Gestin Ingeniera Tcnica en Informtica de Sistemas

Especificacin de un algoritmo (2)


Declaracin del algoritmo

Precondicin

Postcondicin

Predicados Si el algoritmo A inicia su ejecucin en alguno de los estados definidos por la precondicin P, se garantizar que el algoritmo termina y lo hace en alguno de los estados definidos por la postcondicin Q.
Fundamentos de la Programacin 1
Ingeniera Informtica Ingeniera Tcnica en Informtica de Gestin Ingeniera Tcnica en Informtica de Sistemas

Especificacin de un algoritmo (3)


Elementos: 1. Declaracin de variables
2. Precondicin: predicado que es satisfecho por el estado inicial 3. Algoritmo 4. Postcondicin: predicado que es satisfecho por el estado final

algoritmo : Suma reales (1) (2) (3) (4) var a,b,c : real; fvar {a=A b=B} suma reales {c=A+B a=A b=B} falgoritmo.
Fundamentos de la Programacin 1
Ingeniera Informtica Ingeniera Tcnica en Informtica de Gestin Ingeniera Tcnica en Informtica de Sistemas

Dado la siguiente especificacin

{P}

x := x + 1

{Q}

calcular la precondicin P para las siguientes postcondiciones:

a)Q {x > 8} b)Q {x + y = 8}

Fundamentos de la Programacin 1
Ingeniera Informtica Ingeniera Tcnica en Informtica de Gestin Ingeniera Tcnica en Informtica de Sistemas

Eficiencia de un algoritmo (1)


Cul es el mejor?

El tiempo de ejecucin de un Algoritmo depende de : 1. El tamao de los datos a procesar 2. Calidad del cdigo generado por el Compilador/Intrprete 3. Velocidad del computador Clculo de la eficiencia de un algoritmo Mtodo emprico o a posteriori Mtodo terico o a priori
Fundamentos de la Programacin 1
Ingeniera Informtica Ingeniera Tcnica en Informtica de Gestin Ingeniera Tcnica en Informtica de Sistemas

Eficiencia de un algoritmo (2)


Mtodo emprico o a posteriori
Desventajas: - No permite la comparacin de algoritmos sobre diversos soportes - Requiere el esfuerzo de programar cada uno de los algoritmos para determinar el mejor - Slo ser posible comparar los tiempos para algunos tamaos del problema
Fundamentos de la Programacin 1
Ingeniera Informtica Ingeniera Tcnica en Informtica de Gestin Ingeniera Tcnica en Informtica de Sistemas

Eficiencia de un algoritmo (3)


Mtodo terico o a priori
Ventajas: - Analiza el algoritmo y no el programa concreto resultado independiente de la mquina y del lenguaje - La expresin matemtica que da el tiempo de ejecucin es dependiente del tamao del problema - Nos evitamos programar el o los algoritmos
Fundamentos de la Programacin 1
Ingeniera Informtica Ingeniera Tcnica en Informtica de Gestin Ingeniera Tcnica en Informtica de Sistemas

10

Eficiencia de un algoritmo (4)

T(n) : Funcin del tamao del problema que


proporciona el tiempo que invierte una implementacin de un algoritmo para un problema de tamao n Ejemplo: Sea un algoritmo cuyo tiempo de ejecucin ha resultado ser t(n) = 32n2 + 78n + 54 Puesto que n n2 y 1 n2 para todo n 1, se cumple que t(n) = 32n2 + 78n + 54 32n2 + 78n2 + 54n2 = 164n2 Este algoritmo tiene un tiempo de ejecucin cuadrtico, es decir, en el orden de n2
Fundamentos de la Programacin 1
Ingeniera Informtica Ingeniera Tcnica en Informtica de Gestin Ingeniera Tcnica en Informtica de Sistemas

O(n2)
11

Eficiencia de un algoritmo (5)


Qu algoritmo es ms eficiente para resolver un mismo problema, uno que tarda T(n) = 100n2 o uno que tarda T(n) = 5n3 ? 100n2 = 5n3 100/5 = n3/ n2 20 = n
n 1 ... 10 ... 20 ... 30 ... 100n2 100 ... 10.000 ... 40.000 ... 90.000 ... 5n3 5 ... 5.000 ... 40.000 ... 135.000 ...

Fundamentos de la Programacin 1
Ingeniera Informtica Ingeniera Tcnica en Informtica de Gestin Ingeniera Tcnica en Informtica de Sistemas

12

Eficiencia de un algoritmo (6)


T(n) 240000 Tiempo de Ejecucin de un Algoritmo 100n**2 5n**3 200000

160000 Tiempo T(n)

120000

80000

40000

10

15 20 25 Tamao de la entrada (n)

30

35

40

Fundamentos de la Programacin 1
Ingeniera Informtica Ingeniera Tcnica en Informtica de Gestin Ingeniera Tcnica en Informtica de Sistemas

13

Eficiencia de un algoritmo (7)


Disponemos de un tiempo de uso de 1.000 segundos para resolver un determinado problema en nuestro ordenador. Podemos ejecutar 4 algoritmos distintos cuyos tiempos de ejecucin son T(n)=100n, T(n)=5n2, T(n) = n3/2 y T(n) = 2n. Cul es el tamao mximo del problema que pueden resolver cada uno de los algoritmos ? Supongamos ahora que podemos incrementar la velocidad del computador 10 veces ms, Cuales seran los nuevos tamaos ?
T(n) 100n 5n2 n3/2 2n n1 10 14 12 10 n2 100 45 27 13 n2/n1 10 32 23 13
14

Fundamentos de la Programacin 1
Ingeniera Informtica Ingeniera Tcnica en Informtica de Gestin Ingeniera Tcnica en Informtica de Sistemas

Eficiencia de un algoritmo (8)


4000 3500 3000 2500 Tiempo T(n) 2000 1500 1000 500 0 n T(n) Tiempo de Ejecucin de un Algoritmo 100n 5n**2 (n**3)/2 2**n

10

15 Tamao de la entrada (n)

20

25

30

Fundamentos de la Programacin 1
Ingeniera Informtica Ingeniera Tcnica en Informtica de Gestin Ingeniera Tcnica en Informtica de Sistemas

15

Eficiencia de un algoritmo (9)


Pasos de Programa :
- Sentencias de asignacin, lectura, escritura, ... 1 paso ... salvo cuando en ellas aparezca la llamada a un subalgoritmo, entonces la complejidad de la sentencia ser la del subalgoritmo ms una unidad. - Estructura secuencial suma de cada una - Estructura alternativa condicin + MAX (entonces, sino)

Fundamentos de la Programacin 1
Ingeniera Informtica Ingeniera Tcnica en Informtica de Gestin Ingeniera Tcnica en Informtica de Sistemas

16

Eficiencia de un algoritmo (10)


Pasos de Programa :
- Estructura iterativa con condicin inicial (cuerpo + condicin) * nm. de veces + cond. finalizacin - Estructura iterativa con condicin final
(cuerpo + condicin) * nm. de veces

- Estructura iterativa controlada por contador


inicializacin + (cuerpo + condicin + incremento) * nm. de veces + cond. finalizacin

1 < log n < n < n log n < n2 < n3 < 2n


Fundamentos de la Programacin 1
Ingeniera Informtica Ingeniera Tcnica en Informtica de Gestin Ingeniera Tcnica en Informtica de Sistemas

17

Caractersticas deseables en un programa


Correccin Claridad Eficiencia Sencillez Modularidad Generalidad Bien documentado
Fundamentos de la Programacin 1
Ingeniera Informtica Ingeniera Tcnica en Informtica de Gestin Ingeniera Tcnica en Informtica de Sistemas

18

Вам также может понравиться