2. Análisis de Algoritmos
Qué es Complejidad?.
Ordenes de Complejidad.
Complejidad de instrucciones básicas.
Algunos problemas clásicos.
3. Complejidad
¿Qué entiende Ud. por complejidad?
¿Cómo se mide la complejidad?
¿La complejidad está asociada a un problema o a una solución del
problema?
¿La complejidad depende de la implementación?
4. Complejidad
¿Qué se entiende por complejidad?
La Complejidad es una medida de laLa Complejidad es una medida de la
cantidad que consume un algoritmo de uncantidad que consume un algoritmo de un
recurso determinado.recurso determinado.
5. Complejidad
Problema: Pregunta sobre un conjunto dePregunta sobre un conjunto de
datos.datos.
Solución:Solución: Método general para resolverMétodo general para resolver
todas las posibles preguntas.todas las posibles preguntas.
6. Complejidad
Problema: XX = { (p(x),r(x)) | x= { (p(x),r(x)) | x ∈∈ D }.D }.
Solución:Solución: Es una relación A: PEs una relación A: P R talR tal
que para cada preguntaque para cada pregunta
posible p, (p,A(p))posible p, (p,A(p)) ∈∈ XX..
Para un problemaPara un problema XX existen preguntas másexisten preguntas más
difíciles de resolver o más grandes que otras.difíciles de resolver o más grandes que otras.
7. Complejidad
Problema:
XX = { ((a,k),i) | a=A[0..n-1]= { ((a,k),i) | a=A[0..n-1] ∧∧
00 ≤ i ≤ n-1≤ i ≤ n-1 ∧∧
a[i] = ka[i] = k}.}.
Solución:Solución: Algoritmo de Búsqueda Lineal.Algoritmo de Búsqueda Lineal.
BL responde preguntas fáciles y preguntasBL responde preguntas fáciles y preguntas
difícilesdifíciles (¿de que depende la dificultad?).(¿de que depende la dificultad?).
8. Complejidad
Si el recurso es espacio:Si el recurso es espacio:
Cantidad de memoria requeridaCantidad de memoria requerida
para una ejecución.para una ejecución.
Si el recurso es tiempo:Si el recurso es tiempo:
Cantidad de tiempo requeridoCantidad de tiempo requerido
para una ejecución.para una ejecución.
n + 2n + 2..
depende!depende!
9. Complejidad
Búsqueda en un arregloBúsqueda en un arreglo::
{Pre Q: a=A[0..n-1]{Pre Q: a=A[0..n-1] ∧∧ x=X}x=X}
i:=0;i:=0;
dodo (i(i ≠ n≠ n ∧∧ a[i]≠x)a[i]≠x) i:=i+1i:=i+1 odod
{Pos R: (i=n{Pos R: (i=n ∧∧ XX∉∉A)A) ∨∨ (0≤i<n(0≤i<n ∧∧ A[i]=X)}A[i]=X)}
Operación básica: Comparación.Operación básica: Comparación.
Si X está en la posición k: k +1 comparaciones.Si X está en la posición k: k +1 comparaciones.
Si X no está en A: n comparaciones.Si X no está en A: n comparaciones.
10. Complejidad
Búsqueda en un arregloBúsqueda en un arreglo::
TTBLIBLI (n) = n(n) = n en el peor caso.en el peor caso.
TTBLIBLI (n) = n – a(n-1)/2(n) = n – a(n-1)/2 en el caso promedio.en el caso promedio.
11. Complejidad
Búsqueda en un arregloBúsqueda en un arreglo::
TTBLIBLI (n) = n – a(n-1)/2(n) = n – a(n-1)/2 en el caso promedio.en el caso promedio.
TTBLIBLI (n) = (+ k | 0(n) = (+ k | 0≤k≤≤k≤n : qn : qnn(k) T(k) TBLIBLI(k))(k))
= (+ k | 0= (+ k | 0≤k<≤k<n : qn : qnn(k) T(k) TBLIBLI(k))+q(k))+qnn(n)T(n)TBLIBLI(n)(n)
= (+ k | 0= (+ k | 0≤k<≤k<n : (a/n) Tn : (a/n) TBLIBLI(k))+(1-a)n(k))+(1-a)n
= (+ k | 0= (+ k | 0≤k<≤k<n : (a/n) (k+1))+(1-a)nn : (a/n) (k+1))+(1-a)n
= n – a(n-1)/2= n – a(n-1)/2
12. Complejidad
Búsqueda en un arregloBúsqueda en un arreglo::
TTBLIBLI (n) = n – a(n-1)/2(n) = n – a(n-1)/2 en el caso promedio.en el caso promedio.
Casos interesantes:Casos interesantes:
XX ∈∈ AA ⇒⇒ a = 1 : Ta = 1 : TBLIBLI (n) = (n+1)/2(n) = (n+1)/2
a = ½ : Ta = ½ : TBLIBLI (n)(n) ≈≈ 3n/43n/4
XX ∉∉ AA ⇒⇒ a = 0 : Ta = 0 : T (n) = n(n) = n
13. Análisis de Algoritmos
Qué es Complejidad?.
Ordenes de Complejidad.
Complejidad de instrucciones básicas.
Un problema clásico.
14. Ordenes de Complejidad
Algoritmo 1 : T1(n) = 1000 n
Algoritmo 2 : T2(n) = 200 n log n
Algoritmo 3 : T3(n) = 10 n2
Algoritmo 4 : T4(n) = 2n
1 9 100
2 4 3 1
16. Ordenes de Complejidad
A. Existen constantes C y D tales que para todo N el algoritmo ejecuta
en tiempo menor que CN2.5
+ D.
B. Para todo N pueden existir entradas que ejecutan en tiempo menor a N2.5
C. Para todo N pueden existir entradas que ejecutan en tiempo menor a N2.6
D. Para todo N pueden existir entradas que ejecutan en tiempo mayor a N2.4
E. Para todo N pueden existir entradas que ejecutan en tiempo mayor a N2.6
Cierto algoritmo se ejecuta en tiempo O(n2.5
),
donde n es el tamaño de la entrada. Cuál de
las afirmaciones NO es verdad?
18. Ordenes de Complejidad
De k en adelante un múltiplo de f supera a g
3 = O(n) 3n = O(n) 3n = O(n2
)
n = O(n log n) log n = O(n)
n7
= O(2n
)
g = O(f)
23. Complejidad de Instrucciones Básicas
for (i = 0, n – 2, i = i + 1) {
for (j = n -1, i + 1, j = j -1) {
if a[j-1] > a[j] then
{ temp = a[j];
a[j] = a[j-1];
a[j-1] = temp; }
else skip
fi
rof
rof
O(1)
O(1)
O(n-1-i)
O(n2
)