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