Beruflich Dokumente
Kultur Dokumente
http://cs.uns.edu.ar/~sag
Departamento de Ciencias e Ingeniera de la Computacin
Universidad Nacional del Sur
Baha Blanca, Argentina
Motivaciones
Estamos interesados en construir buenas
estructuras de datos y buenos algoritmos.
Estructura de datos = Manera sistemtica de
organizar y acceder datos.
Algoritmo = Procedimiento paso a paso para
realizar una tarea en una cantidad finita de
tiempo.
Cmo analizar algoritmos y estructuras de
datos para decidir si son buenos o no?
Estructuras de datos - Dr. Sergio A. Gmez
Motivaciones
La herramienta de anlisis que usaremos
consiste de caracterizar el tiempo de
ejecucin de algoritmos y operaciones de
estructuras de datos (con uso de espacio de
memoria tambin de inters).
Objetivo: Una aplicacin debe correr lo ms
rpidamente posible.
Preliminares: Funciones
Constante: f(n) = c
Logaritmo: f(n) = logb(x) para b>1
Lineal: f(n) = n
N-LogN: f(n) = n log(n)
Cuadrtica: f(n) = n2
Cbica: f(n) = n3
Polinomial: f(n) = nk, con k natural
Exponencial: f(n) = an con a real positivo y n
Factorial: n!
Estructuras de datos - Dr. Sergio A. Gmez
Funciones comparadas
4500
4000
3500
100
3000
log(n)
2500
n
nlog(n)
2000
n2
1500
n3
2n
1000
500
0
0
10
12
14
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
100 log(n)
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
N
0
1
2
2
2
3
3
3
3
3
3
4
4
4
4
4
4
4
4
4
4
4
5
5
nlog(n)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
0
2
5
8
12
16
20
24
29
33
38
43
48
53
59
64
69
75
81
86
92
98
104
110
n2
n3
1
4
9
16
25
36
49
64
81
100
121
144
169
196
225
256
289
324
361
400
441
484
529
576
2n
1
8
27
64
125
216
343
512
729
1000
1331
1728
2197
2744
3375
4096
4913
5832
6859
8000
9261
10648
12167
13824
2
4
8
16
32
64
128
256
512
1024
2048
4096
8192
16384
32768
65536
131072
262144
524288
1048576
2097152
4194304
8388608
16777216
Tiempo de un algoritmo
Tiempo de ejecucin
f(n)
cg(n)
n0
Tamao de la entrada
10
11
Lema
Si a b y c d entonces a + c b + d
Demostracin:
Si a b entonces b-a 0
Si c d entonces d-c 0
La suma de dos nmeros mayores o iguales a 0
es mayor o igual a 0, por lo tanto:
(b-a) + (d-c) 0
Luego, a+c b+d.
Estructuras de datos - Dr. Sergio A. Gmez
12
13
14
Propiedades tiles
Para probar por induccin:
n(n + 1)
i = 1+ 2 ++ n =
2
i =1
n
=2
n +1
n +1
1
r =
r 1
i =1
i =0
De las series:
n
(a + b ) = a + b
i =1
i =1
i =1
ca
i =1
= c ai
i =1
15
16
Big-Omega y Big-Theta
Big-Omega: Sean f(n) y g(n) funciones de los
naturales en los reales. f(n) es (g(n)) ssi
existen c real positivo y n0 natural tales que
f(n) cg(n) para todo n n0.
Big-Theta: Sean f(n) y g(n) funciones de los
naturales en los reales. f(n) es (g(n)) ssi f(n)
es O(g(n)) y f(n) es (g(n)).
Nota: Big-Theta quiere decir c1g(n) f(n)
c2g(n)
Estructuras de datos - Dr. Sergio A. Gmez
17
Ejemplo
Ejercicio: Mostrar que 3n2+2n+5 es O(n2)
Proc: Hay que hallar c real y n0 natural tal que
3n2+2n+5 cn2 para n n0.
3n2 3n2
2n 2n2
5 5n2
Luego 3n2+2n+5 3n2 + 2n2 + 5n2 = (3+2+5)n2 = 10n2
Por lo tanto: c=10
Para hallar n0 resolver 10n2 3n2+2n+5, lo que da
n -5/7 y n>=1. Luego n0=1.
Estructuras de datos - Dr. Sergio A. Gmez
18
Ejemplo
Prop: Mostrar que un polinomio en n de grado k
es de orden nk.
Dem: Sea P(n) = cknk + ck-1nk-1 + . + c1n + c0
Como Cknk |Ck|nk, Ck-1nk-1 |Ck-1|nk, , C1n
|C1|nk, C1n |C1|nk , Co |Co|nk
Ser que P(n) i=0..k |Ci|nk = (i=0..k |Ci|) nk
19
20
21
22
23
24
Bibliografa
Goodrich & Tamassia. Data Structures and
Algorithms. Fourth Edition. Captulo 4.
25