Complejidad - Departamento de Computación

Anuncio
Clase Práctica de Complejidad Algorı́tmica y Órdenes de
Complejidad
Algoritmos y Estructuras de Datos II
Departamento de Computación,
Facultad de Ciencias Exactas y Naturales,
Universidad de Buenos Aires
Primer cuatrimestre de 2014
Algoritmos 2 (DC-FCEyN-UBA)
Complejidad
Primer cuatrimestre de 2014
1 / 20
Hoy en Algo 2
1
2
Notación de O, Θ y Ω
Repaso y ejercitación de O
Repaso y ejercitación de Θ
Repaso y ejercitación de Ω
Álgebra de órdenes
Algoritmos 2 (DC-FCEyN-UBA)
3
Complejidad
Simplificando las cuentas
Complejidad
Funciones básicas
Funciones con parámetros
formales
Primer cuatrimestre de 2014
2 / 20
Notación de O, Θ y Ω
Repaso y ejercitación de O
Notación O
O(g ) = {f : N → N | (∃n0 , c)(∀n > n0 ) f (n) ≤ cg (n)}
f ∈ O(g ) si y sólo si ∃n0 , c tales que para todo n > n0
f (n) ≤ cg (n)
Demostrar que si
f (n) = 4n2 + 5n + 2 entonces f ∈ O(g ) donde g (n) = n2
f1 ∈ O(g1 ) y f2 ∈ O(g2 ) entonces f1 + f2 ∈ O(max{g1 , g2 })
Algoritmos 2 (DC-FCEyN-UBA)
Complejidad
Primer cuatrimestre de 2014
3 / 20
Notación de O, Θ y Ω
Repaso y ejercitación de O
Notación
f ∈ O(g ) si y sólo si f (n) ≤ cg (n) para todo n > n0
Notamos:
f (n) = O(g (n)), f (n) = O(g ), y f ∈ O(g (n)) si y sólo si f ∈ O(g )
f (n) 6= O(g (n)), f (n) 6= O(g ), y f 6∈ O(g (n)) si y sólo si f ∈
6 O(g )
Ejemplos:
n log n = O(n2 )
nn 6= O(n!)
n log n = O(n 7→ n2 )
nn 6= O(n 7→ n!)
n 7→ n log n ∈ O(n2 ).
n → nn 6∈ O(n!).
Cuidado: f (n) = O(g (n)) =⇒
6
g (n) = O(f (n)).
Algoritmos 2 (DC-FCEyN-UBA)
Complejidad
Primer cuatrimestre de 2014
4 / 20
Notación de O, Θ y Ω
Repaso y ejercitación de O
Múltiples parámetros
f ∈ O(g ) si y sólo si f (~n) ≤ cg (~n) para todo ~n > n~0 .
donde (x1 , . . . , xk ) > (y1 , . . . , yk ) sii xi > yi para todo 1 ≤ i ≤ k.
Otra vez, notamos:
f (~n) = O(g (~n)), f (~n) = O(g ), y f ∈ O(g (~n)) si y sólo si f ∈ O(g )
Ejemplos:
m log n = O(mn)
Algoritmos 2 (DC-FCEyN-UBA)
m log n = O(n 7→ mn)
Complejidad
n → m log n ∈ O(mn).
Primer cuatrimestre de 2014
5 / 20
Notación de O, Θ y Ω
Repaso y ejercitación de O
Parámetros vs. constantes.
¿Qué significa f ∈ O(nk )?
Hay que aclarar cuáles son las constantes.
Lo que no es constante, es parámetro de f
Ejemplos:
Para todo k ∈ N, si f ∈ O(nk ) entonces f ∈ O(nk+1 ).
nk ∈ O(2n ) para todo k ∈ N.
Si f es un polinomio, entonces f ∈ O(nk ) para algún k = O(1).
Algoritmos 2 (DC-FCEyN-UBA)
Complejidad
Primer cuatrimestre de 2014
6 / 20
Notación de O, Θ y Ω
Repaso y ejercitación de Θ
Notación Θ
Θ(g ) = {f : Nk → N | f ∈ O(g ) y g ∈ O(f )}
f ∈ Θ(g ) si y sólo si ∃n~0 , c0 , c1 tales que para todo ~n > n~0
c0 g (~n) ≤ f (~n) ≤ c1 g (~n)
Demostrar que si
4n2 + 5n + 2 = Θ(n2 )
Si f1 ∈ Θ(g1 ) y f2 ∈ Θ(g2 ) entonces f1 + f2 ∈ Θ(max{g1 , g2 })
Algoritmos 2 (DC-FCEyN-UBA)
Complejidad
Primer cuatrimestre de 2014
7 / 20
Notación de O, Θ y Ω
Repaso y ejercitación de Ω
Notación Ω
Ω(g ) = {f : Nk → N | g ∈ O(f )}
f ∈ Ω(g ) si y sólo si ∃n~0 , c tales que para todo ~n > n~0
cg (~n) ≤ f (~n)
Los ejercicios son similares.
Algoritmos 2 (DC-FCEyN-UBA)
Complejidad
Primer cuatrimestre de 2014
8 / 20
Notación de O, Θ y Ω
Repaso y ejercitación de Ω
Resumiendo...
f ∈ O(g ) cuando f está acotada superiormente por g
f ∈ Ω(g ) cuando f está acotada inferiormente por g
f ∈ Θ(g ) cuando f = O(g ) y f = Ω(g ).
Hay que tener cuidado con las constantes.
Vamos a suponer que conocen L’Hopital, regla de la cadena, etc.
O(1) ⊂ O(log n) ⊂ O(n) ⊂ O(nk ) ⊂ O(k n ) ⊂ O(n!) ⊂ O(nn )
Algoritmos 2 (DC-FCEyN-UBA)
Complejidad
Primer cuatrimestre de 2014
9 / 20
Álgebra de órdenes
Simplificando las cuentas
Álgebra de órdenes
¿Qué significan las siguientes expresiones?
O(f ) + O(g ) = O(h)
O(f ) · O(g ) = O(h)
n
X
O(n) = O(n2 ).
i=1
O(n) +
n
X
O(d(vi )) = O(n + m).
i=1
Algoritmos 2 (DC-FCEyN-UBA)
Complejidad
Primer cuatrimestre de 2014
10 / 20
Álgebra de órdenes
Simplificando las cuentas
Álgebra de órdenes
Definiciones.
O(f ) + O(g ) = O(f + g ) = O(max{f , g })
O(f ) · O(g ) = O(fg )
En general, O(f ) • O(g ) = O(f • g ).
!
k
k
X
X
O(f ) = O
f = O(kf ).
i=1
i=1
En particular, si k es constante, entonces
!
k
k
Y
Y
O(f ) = O
f = O(f k ).
i=1
Pk
i=1
O(f ) = O(f )
i=1
Nota: O(f ) + O(g ) 6= O(f ) ∪ O(g ).
Algoritmos 2 (DC-FCEyN-UBA)
Complejidad
Primer cuatrimestre de 2014
11 / 20
Álgebra de órdenes
Simplificando las cuentas
Álgebra de órdenes (ejercicios)
Evaluar la validez de las siguientes ecuaciones (justificar):
n
X
i=1
n
X
O(1) = O(n).
O(1) = O(1).
i=1
k
Si k ∈ N, entonces
2
X
O(n) = O(2k n) = O(n).
i=1
Si k ∈ N, entonces
n
Y
O(k) = O(1).
i=1
Algoritmos 2 (DC-FCEyN-UBA)
Complejidad
Primer cuatrimestre de 2014
12 / 20
Álgebra de órdenes
Simplificando las cuentas
Órdenes y expresiones
¿Qué significa f (n) + O(n)?
Por ejemplo, merge sort toma tiempo T (n) = 2T (n/2) + O(n)?.
En general, si f (n) = g (n) • O(h(n)) significa que
f (n) = g (n) • h0 (n) para algún h0 ∈ O(h), i.e.
existen c, n0 ∈ N tales que f (n) ≤ g (n) • (c · h(n)) ∀ n ≥ n0 .
Ejemplos:
f (n) = 3n + O(log n) significa f (n) ≤ 3n + c log n para c ∈ N.
T (n) = 2T (n/2) + O(n) significa T (n) ≤ 2T (n/2) + cn para c ∈ N.
f (n) = nO(1) significa f (n) = nc para c ∈ N.
Algoritmos 2 (DC-FCEyN-UBA)
Complejidad
Primer cuatrimestre de 2014
13 / 20
Complejidad
¿Qué es la complejidad de un algoritmo?
Función para medir los recursos que consume un algoritmo
Tiempo
Memoria
Ancho de banda
Escrituras a disco, etc
Operaciones elementales
Operaciones en general
Peor caso, mejor caso, caso promedio.
Algoritmos 2 (DC-FCEyN-UBA)
Complejidad
Primer cuatrimestre de 2014
14 / 20
Complejidad
Funciones básicas
Sumatoria
Sum(in A: arreglo(nat)) → res:nat
1.
res ← 0
2.
for i ← 1 to tam(A):
3.
res ← res + A[i]
Algoritmos 2 (DC-FCEyN-UBA)
Complejidad
Primer cuatrimestre de 2014
15 / 20
Complejidad
Funciones básicas
Sumatoria exponencial
SumExp(in A: arreglo(nat)) → res:nat
1.
var i: nat
2.
res ← 0
3.
i ←1
4.
while i ≤ tam(A):
5.
res ← res + A[i]
6.
i ←i ∗2
Algoritmos 2 (DC-FCEyN-UBA)
Complejidad
Primer cuatrimestre de 2014
16 / 20
Complejidad
Funciones básicas
Búsqueda secuencial
BúsquedaSecuencial(in A: arreglo(nat), in e: nat) → res:bool
1.
var i: nat
2.
i ←1
3.
while i ≤ tam(A) and A[i] 6= e:
4.
i ←i +1
5.
res ← i < tam(A)
Algoritmos 2 (DC-FCEyN-UBA)
Complejidad
Primer cuatrimestre de 2014
17 / 20
Complejidad
Funciones con parámetros formales
Parámetros formales y subrutinas
¿Qué pasa si tenemos llamadas a subrutinas?
Veámoslo en el pizarrón
¿Qué pasa si tenemos parámetros formales?
Veámoslo en los ejemplos
Algoritmos 2 (DC-FCEyN-UBA)
Complejidad
Primer cuatrimestre de 2014
18 / 20
Complejidad
Funciones con parámetros formales
Búsqueda secuencial
Parámetros formales
generos α
operaciones
• =α • : α × α → bool
BúsquedaSecuencial(in A: arreglo(α), in e: α) → res:bool
1.
var i: nat
2.
i ←1
3.
while i ≤ tam(A) and A[i] 6=α e:
4.
i ←i +1
5.
res ← i < tam(A)
Algoritmos 2 (DC-FCEyN-UBA)
Complejidad
Primer cuatrimestre de 2014
19 / 20
Complejidad
Funciones con parámetros formales
Resumiendo...
Complejidad (modo AED 2): Contar operaciones elementales de los
algoritmos.
Peor caso vs. Mejor caso; no confundir con O vs. Ω.
Las OE son las operaciones que provee una máquina RAM.
Suponemos que las OE toman tiempo constante O(1).
¡En Algo 3 se cuestiona si esto es cierto!
Algoritmos 2 (DC-FCEyN-UBA)
Complejidad
Primer cuatrimestre de 2014
20 / 20
Descargar