Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


ADA - Complejidad, Apuntes de Informática

Asignatura: Analisis y Diseño de Algoritmos, Profesor: , Carrera: I.T.I. Sistemas, Universidad: UMA

Tipo: Apuntes

2012/2013

Subido el 25/04/2013

hyper50
hyper50 🇪🇸

4

(6)

6 documentos

1 / 62

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
Capítulo 1: ComplejidadCapítulo 1: Complejidad
Capítulo 1: Complejidad Análisis y Diseño de Algoritmos
1
Universidad de Málaga
ETSII Gestión y Sistemas
Dpto. Lenguajes y Ciencias de la Computación
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e
pf2f
pf30
pf31
pf32
pf33
pf34
pf35
pf36
pf37
pf38
pf39
pf3a
pf3b
pf3c
pf3d
pf3e

Vista previa parcial del texto

¡Descarga ADA - Complejidad y más Apuntes en PDF de Informática solo en Docsity!

Capítulo 1: ComplejidadCapítulo 1: Complejidad

Análisis y Diseño de Algoritmos

Universidad de MálagaETSII Gestión y SistemasDpto. Lenguajes y Ciencias de la Computación

ÍndiceÍndice^ 

I.

Complejidad ◦ 1. 1 Introducción ◦ 1.2 Eficiencia de un algoritmo ◦ 1.3 Noción de complejidad. Determinación del tiempo deejecución ◦ 1.4 Cotas de complejidad. Notación asintótica

Análisis y Diseño de Algoritmos

◦^

1.4 Cotas de complejidad. Notación asintótica^ ^

1.4.1 Cota superior. Orden O ^

1.4.2 Cota inferior. Orden Ω ^

1.4.3 Orden exacto. Orden

Θ

Universidad de MálagaETSII Gestión y SistemasDpto. Lenguajes y Ciencias de la Computación

1.1 Introducción1.1 Introducción^ 

¿Cómo resolver un problema?^ ◦

1º. Especificarlo. ◦ 2º.

Diseñar

una posible solución.

◦^

3º. Expresarlo mediante un lenguaje de

Análisis y Diseño de Algoritmos

◦^

3º. Expresarlo mediante un lenguaje de programación. ◦^

4º.Validar y verificar lo realizadoanteriormente. ◦^

5º. Por último, se

evalúa

.

Universidad de MálagaETSII Gestión y SistemasDpto. Lenguajes y Ciencias de la Computación

1.2 Eficiencia de un algoritmo1.2 Eficiencia de un algoritmo^ 

Diseñar la solución

◦^

¿Qué método o algoritmo seguir para resolver un problema? Seaplicarán métodos a problemas diferentes pero concaracterísticas comunes. ◦^

¿Cuál es el objetivo?^ Crear nuevos y mejores algoritmos.

Análisis y Diseño de Algoritmos

Crear nuevos y mejores algoritmos. ◦^

¿Qué factores tendremos en cuenta?Eficiencia en la programación:

Facilidad de programación,

claridad, robustez, etc.Eficiencia empresarial:

relación entre los recursos consumidos y

los productos conseguidos.

Universidad de MálagaETSII Gestión y SistemasDpto. Lenguajes y Ciencias de la Computación

1.2 Eficiencia de un algoritmo1.2 Eficiencia de un algoritmo^ 

Recursos que requiere un algoritmo.

Análisis y Diseño de Algoritmos

Universidad de MálagaETSII Gestión y SistemasDpto. Lenguajes y Ciencias de la Computación

1.2 Eficiencia de un algoritmo1.2 Eficiencia de un algoritmo

◦^

Evaluar la solución^ ^

¿En qué medida es bueno el algoritmo?

^

¿Mejora las características de los anteriores?

◦^

¿Cómo medir la eficiencia de un algoritmo?

Análisis y Diseño de Algoritmos

^

Simplicidad.

^

Uso eficiente de los recursos.

Universidad de MálagaETSII Gestión y SistemasDpto. Lenguajes y Ciencias de la Computación

1.2 Eficiencia de un algoritmo1.2 Eficiencia de un algoritmo^ 

¿Cómo cuantificamos el tiempo? Operaciones elementales.

◦^

Operación elemental:

operación mínima cuyo tiempo de ejecución se

puede acotar superiormente por una constante que dependeráexclusivamente de la implementación utilizada: factores externos. Por lotanto, la constante no depende del tamaño ni de la naturaleza de los datosde entrada. ◦^

Ejemplos de operaciones elementales:

suma, acceso a tablas, asignación…

Análisis y Diseño de Algoritmos

◦^

Ejemplos de operaciones elementales:

suma, acceso a tablas, asignación…

^

Análisis: se utilizará sólo el número de operaciones elementalesejecutadas, y no el tiempo requerido para ellas.^ ◦^

Será dependiente de los factores externos.

Universidad de MálagaETSII Gestión y SistemasDpto. Lenguajes y Ciencias de la Computación

1.31.

Determinación del tiempo deDeterminación del tiempo de ejecuciónejecución^ 

¿Cómo medimos la eficiencia teórica de un algoritmo?

◦^

Tiempo:

NO, puesto que dependería del ordenador donde se

ejecutara. ◦^

t(n) = tiempo de ejecución del algoritmo i para una entrada dei tamaño n. ◦

Análisis y Diseño de Algoritmos

◦^

Principio de Invarianza:

SI, no depende del ordenador en el que

se ejecuta. La eficiencia de dos implementaciones diferentes delmismo algoritmo difiere únicamente en una constantemultiplicativa.

^

Principio de Invarianza^ ◦^

Si tenemos dos implementaciones de un mismo algoritmo detamaño

n

que tardan t

(n) y t 1

(n) segundos en ejecutarse, existe 2

una constante positiva

c

tal que para todo

n

se verifica que:

t(n) ≤^1

c

t(n).^2

Universidad de MálagaETSII Gestión y SistemasDpto. Lenguajes y Ciencias de la Computación

1.3 Determinación del tiempo de1.3 Determinación del tiempo deejecuciónejecución^ 

Eficiencia temporal

◦^

Se valora el tiempo de ejecución, es decir,

“lo rápido que se ejecuta”.

◦^

Enfoque empírico(a posteriori)



mide exactamente el tiempo de

ejecución. Se programan los algoritmos y se ejecutan para diferentessituaciones del problema.^ ^

Desventajas:^ ^

Depende de l lenguaje en el que se ha programado, del compilador, del ordenador

Análisis y Diseño de Algoritmos

^ Depende de l lenguaje en el que se ha programado, del compilador, del ordenador^ donde se ejecuta y de las habilidades del programador. ^ No se puede generalizar.

◦^

Enfoque teórico(a priori)



calcula una función matemática que

determina el tiempo de ejecución en función del tamaño de los datosde entrada del programa.^ ^

Ventajas:^ ^

Es generalizable a otras instancias, sin importar el tamaño.  Evita el esfuerzo de programar algoritmos ineficiente y desperdiciar tiempo deejecución haciendo pruebas.

Universidad de MálagaETSII Gestión y SistemasDpto. Lenguajes y Ciencias de la Computación

1.3 Determinación del tiempo de1.3 Determinación del tiempo deejecuciónejecución^ 

Ejemplo:

Ordenación por inserción

//@ pre: true

public static void insercion (int [] a) {

int pos, tmp, j; for ( pos = 1; pos < a.length; pos++ ) {

tmp = a[pos];

Análisis y Diseño de Algoritmos

tmp = a[pos]; j = pos-1;while ( 0 <= j

ЄЄ

tmp < a[j] ) {

a[j+1] = a[j];j--;

} a[j+1] = tmp;} }

Universidad de MálagaETSII Gestión y SistemasDpto. Lenguajes y Ciencias de la Computación

1.3 Determinación del tiempo de1.3 Determinación del tiempo deejecuciónejecución^ 

Idea clave:

para cada paso i, quedan ordenados los elementos a

, …, 1

ai-

y se inserta entre ellos el elemento a

, quedando ordenados losi

elementos a

, …, a 1

.i

^

Ordenar la siguiente colección de datos de entrada:^ ◦^

3

1

9

7

5

23

15

20

Análisis y Diseño de Algoritmos

◦^

3

1

9

7

5

23

15

20

^

Paso 1:

Numerar las líneas de código.

^

Paso 2:

Determinar las operaciones elementales.

^

Paso 3:

Estudiar los diferentes casos(mejor, promedio y peor).

Universidad de MálagaETSII Gestión y SistemasDpto. Lenguajes y Ciencias de la Computación

1.3 Determinación del tiempo de1.3 Determinación del tiempo deejecuciónejecución^ 

Pasos 1 y 2: //@ pre: true

public static void insercion (int [] a) {

int pos, tmp, j; (1)

for ( pos = 2; pos <= a.length; pos++ ) {

2 o.e.

(2)

tmp = a[pos];

2 o.e.

Análisis y Diseño de Algoritmos

1 o.e. al

2 o.e. al final

de cadaiteración

(2)

tmp = a[pos];

2 o.e.

(3)

j = pos-1;

2 o.e

(4)

while ( 0 < j

ЄЄ

tmp < a[j] ) {

4 o.e.

(5)

a[j+1] = a[j];

4 o.e

(6)

j--;

2 o.e.

}

(7)

a[j+1] = tmp;

3 o.e.

} }

Universidad de MálagaETSII Gestión y SistemasDpto. Lenguajes y Ciencias de la Computación

1 o.e. al principio

.

1.3 Determinación del tiempo de1.3 Determinación del tiempo deejecuciónejecución

2

(^10)

(^10)

2

(^10)

(^10)

2

(^10)

2

(^10)

12

∑^ ∑

∑^

∑^

∑^

=

− =

− =

=

− =

− =

=

− =

=

− =

pos pos

k

pos

k

pos

pos

pos

k

pos

pos

k

pos

pos

n t

n pos n

pos k

pos k

n pos

pos k

pos k

n pos

pos k

n pos

pos k

Capítulo 1: Complejidad

Análisis y Diseño de Algoritmos

2 2

2

2

2 2 2 2

∑ ∑ ∑ ∑

=

= = = =^ n n

n

n

n

n

n

n

n

n n

pos pos

pos

pos

pos pos pos

pos^ n pos

n n pos n posn pos pos

Universidad de MálagaETSII Gestión y SistemasDpto. Lenguajes y Ciencias de la Computación

1.3 Determinación del tiempo de1.3 Determinación del tiempo deejecuciónejecución^ 

¿Es mejor el algoritmo que tiene menos o.e.?^ ◦

El algoritmo A resuelve un problema usando 2

n^ o.e.

◦^

El algoritmo B lo resuelve haciendo uso de n

3 o.e.

Análisis y Diseño de Algoritmos

◦^

Tenemos tres computadores diferentes:^ ^

Computador 1 realiza 10K o.e/seg ^

Computador 2 realiza 1M o.e./seg ^

Computador 3 realiza 100 o.e./seg

Universidad de MálagaETSII Gestión y SistemasDpto. Lenguajes y Ciencias de la Computación