Análisis de
Algoritmos
Análisis de Algoritmos
Qué es Complejidad?.
Ordenes de Complejidad.
Complejidad de instrucciones básicas.
Algunos problemas clásicos.
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?
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.
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.
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.
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?).
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!
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.
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.
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
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
Análisis de Algoritmos
Qué es Complejidad?.
Ordenes de Complejidad.
Complejidad de instrucciones básicas.
Un problema clásico.
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
Ordenes de Complejidad
Establecer la complejidad precisa es difícil….
…entonces se estudia el comportamiento
asintótico.
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?
Ordenes de Complejidad
n
T
k
De k en adelante un múltiplo de f supera a g
g es O(f)
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)
Ordenes de Complejidad
n
T
k
De k en adelante un múltiplo de f es inferior a g
g es Ω(f)
Ordenes de Complejidad
n
T
k
De k en adelante un múltiplo de f es superior a g y
otro múltiplo de f es inferior a g.
g es Θ(f)
Análisis de Algoritmos
Qué es Complejidad?.
Ordenes de Complejidad.
Complejidad de instrucciones básicas.
Un problema clásico.
Complejidad de Instrucciones Básicas
T(skip) = 0
T(abort) = 0
T(x := e) = O(T(e))
T(S1; S2) = O(T(S1)) + O(T(S2))
= O(max(T(S1),T(S2)))
T(IF) = O(max(T(Bk)) + max(T(Sk)))
T(DO) = O(t * (max(T(Bk)) + max(T(Sk))))
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
)

Complejidad de Algoritmos

  • 1.
  • 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 entiendepor 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 sobreun 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 recursoes 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 unarregloBú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 unarregloBú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 unarregloBú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 unarregloBú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 Algoritmo1 : 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
  • 15.
    Ordenes de Complejidad Establecerla complejidad precisa es difícil…. …entonces se estudia el comportamiento asintótico.
  • 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?
  • 17.
    Ordenes de Complejidad n T k Dek en adelante un múltiplo de f supera a g g es O(f)
  • 18.
    Ordenes de Complejidad Dek 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)
  • 19.
    Ordenes de Complejidad n T k Dek en adelante un múltiplo de f es inferior a g g es Ω(f)
  • 20.
    Ordenes de Complejidad n T k Dek en adelante un múltiplo de f es superior a g y otro múltiplo de f es inferior a g. g es Θ(f)
  • 21.
    Análisis de Algoritmos Quées Complejidad?. Ordenes de Complejidad. Complejidad de instrucciones básicas. Un problema clásico.
  • 22.
    Complejidad de InstruccionesBásicas T(skip) = 0 T(abort) = 0 T(x := e) = O(T(e)) T(S1; S2) = O(T(S1)) + O(T(S2)) = O(max(T(S1),T(S2))) T(IF) = O(max(T(Bk)) + max(T(Sk))) T(DO) = O(t * (max(T(Bk)) + max(T(Sk))))
  • 23.
    Complejidad de InstruccionesBá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 )