132
An´ alisis de Algoritmos I Jos´ e de Jes´ us Lavalle Mart´ ınez Benem´ erita Universidad Aut´ onoma de Puebla Facultad de Ciencias de la Computaci´ on Maestr´ ıa en Ciencias de la Computaci´ on An´ alisis y Dise˜ no de Algoritmos MCOM 20300 Oto˜ no 2020 Jos´ e de Jes´ us Lavalle Mart´ ınez (FCC-BUAP) An´ alisis de Algoritmos I Oto˜ no 2020 1 / 41

Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

  • Upload
    others

  • View
    6

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Analisis de Algoritmos I

Jose de Jesus Lavalle Martınez

Benemerita Universidad Autonoma de PueblaFacultad de Ciencias de la ComputacionMaestrıa en Ciencias de la Computacion

Analisis y Diseno de AlgoritmosMCOM 20300

Otono 2020

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 1 / 41

Page 2: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Contenido

1 Llamados recursivos

2 Ciclos “while” y “repeat”

3 Uso de un barometro

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 2 / 41

Page 3: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Llamados recursivos I

El analisis de algoritmos recursivos usualmente es directo, al menoshasta cierto punto.

Una simple inspeccion al algoritmo frecuentemente da lugar a unaecuacion de recurrencia que imita el flujo de control en el algoritmo.Una vez que ha sido obtenida la ecuacion de recurrencia, se puedenaplicar tecnicas generales para resolver dichas ecuaciones ytransformarlas a la notacion asintotica no recursiva, la cual es massimple.

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 3 / 41

Page 4: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Llamados recursivos I

El analisis de algoritmos recursivos usualmente es directo, al menoshasta cierto punto.

Una simple inspeccion al algoritmo frecuentemente da lugar a unaecuacion de recurrencia que imita el flujo de control en el algoritmo.

Una vez que ha sido obtenida la ecuacion de recurrencia, se puedenaplicar tecnicas generales para resolver dichas ecuaciones ytransformarlas a la notacion asintotica no recursiva, la cual es massimple.

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 3 / 41

Page 5: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Llamados recursivos I

El analisis de algoritmos recursivos usualmente es directo, al menoshasta cierto punto.Una simple inspeccion al algoritmo frecuentemente da lugar a unaecuacion de recurrencia que imita el flujo de control en el algoritmo.

Una vez que ha sido obtenida la ecuacion de recurrencia, se puedenaplicar tecnicas generales para resolver dichas ecuaciones ytransformarlas a la notacion asintotica no recursiva, la cual es massimple.

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 3 / 41

Page 6: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Llamados recursivos II

Como un ejemplo, considere de nuevo el problema de calcular la secuenciade Fibonacci, pero esta vez con el algoritmo recursivo Fibrec(n).

function Fibrec(n)1 if n < 22 then return n3 else return Fibrec(n− 1) + Fibrec(n− 2)

Sea T (n) el tiempo consumido por un llamado a Fibrec(n). Sin < 2, el algoritmo simplemente regresa n, lo cual consume tiempoconstante a.De otra manera, la mayor parte del trabajo se gasta en los dosllamados recursivos, los cuales consumen respectivamente tiempoT (n− 1) y T (n− 2).

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 4 / 41

Page 7: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Llamados recursivos II

Como un ejemplo, considere de nuevo el problema de calcular la secuenciade Fibonacci, pero esta vez con el algoritmo recursivo Fibrec(n).

function Fibrec(n)1 if n < 22 then return n3 else return Fibrec(n− 1) + Fibrec(n− 2)

Sea T (n) el tiempo consumido por un llamado a Fibrec(n). Sin < 2, el algoritmo simplemente regresa n, lo cual consume tiempoconstante a.

De otra manera, la mayor parte del trabajo se gasta en los dosllamados recursivos, los cuales consumen respectivamente tiempoT (n− 1) y T (n− 2).

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 4 / 41

Page 8: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Llamados recursivos II

Como un ejemplo, considere de nuevo el problema de calcular la secuenciade Fibonacci, pero esta vez con el algoritmo recursivo Fibrec(n).

function Fibrec(n)1 if n < 22 then return n3 else return Fibrec(n− 1) + Fibrec(n− 2)

Sea T (n) el tiempo consumido por un llamado a Fibrec(n). Sin < 2, el algoritmo simplemente regresa n, lo cual consume tiempoconstante a.De otra manera, la mayor parte del trabajo se gasta en los dosllamados recursivos, los cuales consumen respectivamente tiempoT (n− 1) y T (n− 2).

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 4 / 41

Page 9: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Llamados recursivos III

Mas aun, debe ser ejecutada una adicion que involucra a fn−1 y afn−2 (los cuales son los valores regresados por los llamadosrecursivos), ası como, el control de la recursion y la prueba“if n < 2”.

Sea h(n) que denota el trabajo involucrado en esta adicion y control,esto es, el tiempo requerido por un llamado a Fibrec(n) ignorandoel tiempo gastado dentro de los dos llamados recursivos.Por definicion de T (n) y h(n) obtenemos la siguiente recurrencia.

T (n) =a si n = 0 o n = 1,T (n− 1) + T (n− 2) + h(n) en otro caso

(1)

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 5 / 41

Page 10: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Llamados recursivos III

Mas aun, debe ser ejecutada una adicion que involucra a fn−1 y afn−2 (los cuales son los valores regresados por los llamadosrecursivos), ası como, el control de la recursion y la prueba“if n < 2”.

Sea h(n) que denota el trabajo involucrado en esta adicion y control,esto es, el tiempo requerido por un llamado a Fibrec(n) ignorandoel tiempo gastado dentro de los dos llamados recursivos.

Por definicion de T (n) y h(n) obtenemos la siguiente recurrencia.

T (n) =a si n = 0 o n = 1,T (n− 1) + T (n− 2) + h(n) en otro caso

(1)

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 5 / 41

Page 11: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Llamados recursivos III

Mas aun, debe ser ejecutada una adicion que involucra a fn−1 y afn−2 (los cuales son los valores regresados por los llamadosrecursivos), ası como, el control de la recursion y la prueba“if n < 2”.Sea h(n) que denota el trabajo involucrado en esta adicion y control,esto es, el tiempo requerido por un llamado a Fibrec(n) ignorandoel tiempo gastado dentro de los dos llamados recursivos.

Por definicion de T (n) y h(n) obtenemos la siguiente recurrencia.

T (n) =a si n = 0 o n = 1,T (n− 1) + T (n− 2) + h(n) en otro caso

(1)

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 5 / 41

Page 12: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Llamados recursivos IV

function Fibrec(n)1 if n < 22 then return n3 else return Fibrec(n− 1) + Fibrec(n− 2)

T (n) =a si n = 0 o n = 1,T (n− 1) + T (n− 2) + h(n) en otro caso

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 6 / 41

Page 13: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Llamados recursivos V

Si contamos las adiciones de costo unitario, h(n) esta acotada poruna constante. Al aplicarle a (1) tecnicas para solucion derecurrencias encontramos que T (n) ∈ O(fn).

Un razonamiento similar muestra que T (n) ∈ Ω(fn) y por tantoT (n) ∈ Θ(fn).Usando la formula de de Moivre (esta formula nos dice que fn eln−esimo termino en la secuencia, es aproximadamente igual a φn/

√5

donde φ = (1 +√

5)/2 es la proporcion dorada), concluimos queFibrec(n) consume tiempo exponencial en n.

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 7 / 41

Page 14: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Llamados recursivos V

Si contamos las adiciones de costo unitario, h(n) esta acotada poruna constante. Al aplicarle a (1) tecnicas para solucion derecurrencias encontramos que T (n) ∈ O(fn).

Un razonamiento similar muestra que T (n) ∈ Ω(fn) y por tantoT (n) ∈ Θ(fn).

Usando la formula de de Moivre (esta formula nos dice que fn eln−esimo termino en la secuencia, es aproximadamente igual a φn/

√5

donde φ = (1 +√

5)/2 es la proporcion dorada), concluimos queFibrec(n) consume tiempo exponencial en n.

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 7 / 41

Page 15: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Llamados recursivos V

Si contamos las adiciones de costo unitario, h(n) esta acotada poruna constante. Al aplicarle a (1) tecnicas para solucion derecurrencias encontramos que T (n) ∈ O(fn).Un razonamiento similar muestra que T (n) ∈ Ω(fn) y por tantoT (n) ∈ Θ(fn).

Usando la formula de de Moivre (esta formula nos dice que fn eln−esimo termino en la secuencia, es aproximadamente igual a φn/

√5

donde φ = (1 +√

5)/2 es la proporcion dorada), concluimos queFibrec(n) consume tiempo exponencial en n.

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 7 / 41

Page 16: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Llamados recursivos VI

Si no contamos la adicion de costo unitario, h(n) ya no estaraacotada por una constante.

En su lugar h(n) esta dominada por el tiempo requerido para laadicion de fn−1 y fn−2 para n suficientemente grande.Ya hemos visto que esta adicion consume un tiempo en el ordenexacto de n. Por tanto h(n) ∈ Θ(n).Sorprendentemente, al aplicarle a (1) tecnicas para solucion derecurrencias, el resultado es el mismo sin importar cuando h(n) esconstante o lineal, es decir, se sigue cumpliendo que T (n) ∈ Θ(fn).En conclusion, ¡Fibrec(n) consume tiempo exponencial en n sinimportar que consideremos o no a las adiciones como de costounitario!

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 8 / 41

Page 17: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Llamados recursivos VI

Si no contamos la adicion de costo unitario, h(n) ya no estaraacotada por una constante.

En su lugar h(n) esta dominada por el tiempo requerido para laadicion de fn−1 y fn−2 para n suficientemente grande.

Ya hemos visto que esta adicion consume un tiempo en el ordenexacto de n. Por tanto h(n) ∈ Θ(n).Sorprendentemente, al aplicarle a (1) tecnicas para solucion derecurrencias, el resultado es el mismo sin importar cuando h(n) esconstante o lineal, es decir, se sigue cumpliendo que T (n) ∈ Θ(fn).En conclusion, ¡Fibrec(n) consume tiempo exponencial en n sinimportar que consideremos o no a las adiciones como de costounitario!

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 8 / 41

Page 18: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Llamados recursivos VI

Si no contamos la adicion de costo unitario, h(n) ya no estaraacotada por una constante.En su lugar h(n) esta dominada por el tiempo requerido para laadicion de fn−1 y fn−2 para n suficientemente grande.

Ya hemos visto que esta adicion consume un tiempo en el ordenexacto de n. Por tanto h(n) ∈ Θ(n).

Sorprendentemente, al aplicarle a (1) tecnicas para solucion derecurrencias, el resultado es el mismo sin importar cuando h(n) esconstante o lineal, es decir, se sigue cumpliendo que T (n) ∈ Θ(fn).En conclusion, ¡Fibrec(n) consume tiempo exponencial en n sinimportar que consideremos o no a las adiciones como de costounitario!

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 8 / 41

Page 19: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Llamados recursivos VI

Si no contamos la adicion de costo unitario, h(n) ya no estaraacotada por una constante.En su lugar h(n) esta dominada por el tiempo requerido para laadicion de fn−1 y fn−2 para n suficientemente grande.Ya hemos visto que esta adicion consume un tiempo en el ordenexacto de n. Por tanto h(n) ∈ Θ(n).

Sorprendentemente, al aplicarle a (1) tecnicas para solucion derecurrencias, el resultado es el mismo sin importar cuando h(n) esconstante o lineal, es decir, se sigue cumpliendo que T (n) ∈ Θ(fn).

En conclusion, ¡Fibrec(n) consume tiempo exponencial en n sinimportar que consideremos o no a las adiciones como de costounitario!

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 8 / 41

Page 20: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Llamados recursivos VI

Si no contamos la adicion de costo unitario, h(n) ya no estaraacotada por una constante.En su lugar h(n) esta dominada por el tiempo requerido para laadicion de fn−1 y fn−2 para n suficientemente grande.Ya hemos visto que esta adicion consume un tiempo en el ordenexacto de n. Por tanto h(n) ∈ Θ(n).Sorprendentemente, al aplicarle a (1) tecnicas para solucion derecurrencias, el resultado es el mismo sin importar cuando h(n) esconstante o lineal, es decir, se sigue cumpliendo que T (n) ∈ Θ(fn).

En conclusion, ¡Fibrec(n) consume tiempo exponencial en n sinimportar que consideremos o no a las adiciones como de costounitario!

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 8 / 41

Page 21: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Ciclos “while” y “repeat” I

Los ciclos while y repeat usualmente son mas difıciles de analizarque los ciclos for ya que no existe una manera a priori obvia parasaber cuantas veces se entrara al ciclo.

La tecnica estandar para analizar estos ciclos es encontrar una funcionde las variables involucradas cuyo valor decrezca conforme se entre alciclo.Para concluir que el ciclo eventualmente termina es suficiente condemostrar que este valor debe ser un entero positivo, ya que no sepuede decrementar indefinidamente un entero positivo.Para determinar cuantas veces se repite el ciclo, necesitamos entenderbien como decrece el valor de dicha funcion.Un enfoque alternativo para el analisis de los ciclos while consiste entratarlos como algoritmos recursivos. Ilustraremos ambas tecnicas conel mismo ejemplo.

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 9 / 41

Page 22: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Ciclos “while” y “repeat” I

Los ciclos while y repeat usualmente son mas difıciles de analizarque los ciclos for ya que no existe una manera a priori obvia parasaber cuantas veces se entrara al ciclo.

La tecnica estandar para analizar estos ciclos es encontrar una funcionde las variables involucradas cuyo valor decrezca conforme se entre alciclo.

Para concluir que el ciclo eventualmente termina es suficiente condemostrar que este valor debe ser un entero positivo, ya que no sepuede decrementar indefinidamente un entero positivo.Para determinar cuantas veces se repite el ciclo, necesitamos entenderbien como decrece el valor de dicha funcion.Un enfoque alternativo para el analisis de los ciclos while consiste entratarlos como algoritmos recursivos. Ilustraremos ambas tecnicas conel mismo ejemplo.

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 9 / 41

Page 23: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Ciclos “while” y “repeat” I

Los ciclos while y repeat usualmente son mas difıciles de analizarque los ciclos for ya que no existe una manera a priori obvia parasaber cuantas veces se entrara al ciclo.La tecnica estandar para analizar estos ciclos es encontrar una funcionde las variables involucradas cuyo valor decrezca conforme se entre alciclo.

Para concluir que el ciclo eventualmente termina es suficiente condemostrar que este valor debe ser un entero positivo, ya que no sepuede decrementar indefinidamente un entero positivo.

Para determinar cuantas veces se repite el ciclo, necesitamos entenderbien como decrece el valor de dicha funcion.Un enfoque alternativo para el analisis de los ciclos while consiste entratarlos como algoritmos recursivos. Ilustraremos ambas tecnicas conel mismo ejemplo.

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 9 / 41

Page 24: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Ciclos “while” y “repeat” I

Los ciclos while y repeat usualmente son mas difıciles de analizarque los ciclos for ya que no existe una manera a priori obvia parasaber cuantas veces se entrara al ciclo.La tecnica estandar para analizar estos ciclos es encontrar una funcionde las variables involucradas cuyo valor decrezca conforme se entre alciclo.Para concluir que el ciclo eventualmente termina es suficiente condemostrar que este valor debe ser un entero positivo, ya que no sepuede decrementar indefinidamente un entero positivo.

Para determinar cuantas veces se repite el ciclo, necesitamos entenderbien como decrece el valor de dicha funcion.

Un enfoque alternativo para el analisis de los ciclos while consiste entratarlos como algoritmos recursivos. Ilustraremos ambas tecnicas conel mismo ejemplo.

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 9 / 41

Page 25: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Ciclos “while” y “repeat” I

Los ciclos while y repeat usualmente son mas difıciles de analizarque los ciclos for ya que no existe una manera a priori obvia parasaber cuantas veces se entrara al ciclo.La tecnica estandar para analizar estos ciclos es encontrar una funcionde las variables involucradas cuyo valor decrezca conforme se entre alciclo.Para concluir que el ciclo eventualmente termina es suficiente condemostrar que este valor debe ser un entero positivo, ya que no sepuede decrementar indefinidamente un entero positivo.Para determinar cuantas veces se repite el ciclo, necesitamos entenderbien como decrece el valor de dicha funcion.

Un enfoque alternativo para el analisis de los ciclos while consiste entratarlos como algoritmos recursivos. Ilustraremos ambas tecnicas conel mismo ejemplo.

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 9 / 41

Page 26: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Ciclos “while” y “repeat” II

Usaremos el algoritmo de BinarySearch para ilustrar el analisis deciclos while.

El proposito de la busqueda binaria es encontrar un elemento x en unarreglo T [1 . . . n] que esta en orden no decreciente.Asuma por simplicidad que se garantiza que x aparezca al menos unavez en T . Se requiere encontrar un entero i tal que 1 ≤ i ≤ n yT [i] = x.La idea basica detras de la busqueda binaria es comparar x con elelmento y que esta en la mitad de T .La busqueda termina si x = y, si x > y se busca en la mitad superiordel arreglo, si no es el caso se busca en la mitad inferior del arreglo,tenemos ası el siguiente algoritmo.

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 10 / 41

Page 27: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Ciclos “while” y “repeat” II

Usaremos el algoritmo de BinarySearch para ilustrar el analisis deciclos while.

El proposito de la busqueda binaria es encontrar un elemento x en unarreglo T [1 . . . n] que esta en orden no decreciente.

Asuma por simplicidad que se garantiza que x aparezca al menos unavez en T . Se requiere encontrar un entero i tal que 1 ≤ i ≤ n yT [i] = x.La idea basica detras de la busqueda binaria es comparar x con elelmento y que esta en la mitad de T .La busqueda termina si x = y, si x > y se busca en la mitad superiordel arreglo, si no es el caso se busca en la mitad inferior del arreglo,tenemos ası el siguiente algoritmo.

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 10 / 41

Page 28: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Ciclos “while” y “repeat” II

Usaremos el algoritmo de BinarySearch para ilustrar el analisis deciclos while.El proposito de la busqueda binaria es encontrar un elemento x en unarreglo T [1 . . . n] que esta en orden no decreciente.

Asuma por simplicidad que se garantiza que x aparezca al menos unavez en T . Se requiere encontrar un entero i tal que 1 ≤ i ≤ n yT [i] = x.

La idea basica detras de la busqueda binaria es comparar x con elelmento y que esta en la mitad de T .La busqueda termina si x = y, si x > y se busca en la mitad superiordel arreglo, si no es el caso se busca en la mitad inferior del arreglo,tenemos ası el siguiente algoritmo.

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 10 / 41

Page 29: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Ciclos “while” y “repeat” II

Usaremos el algoritmo de BinarySearch para ilustrar el analisis deciclos while.El proposito de la busqueda binaria es encontrar un elemento x en unarreglo T [1 . . . n] que esta en orden no decreciente.

Asuma por simplicidad que se garantiza que x aparezca al menos unavez en T . Se requiere encontrar un entero i tal que 1 ≤ i ≤ n yT [i] = x.La idea basica detras de la busqueda binaria es comparar x con elelmento y que esta en la mitad de T .

La busqueda termina si x = y, si x > y se busca en la mitad superiordel arreglo, si no es el caso se busca en la mitad inferior del arreglo,tenemos ası el siguiente algoritmo.

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 10 / 41

Page 30: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Ciclos “while” y “repeat” II

Usaremos el algoritmo de BinarySearch para ilustrar el analisis deciclos while.El proposito de la busqueda binaria es encontrar un elemento x en unarreglo T [1 . . . n] que esta en orden no decreciente.

Asuma por simplicidad que se garantiza que x aparezca al menos unavez en T . Se requiere encontrar un entero i tal que 1 ≤ i ≤ n yT [i] = x.La idea basica detras de la busqueda binaria es comparar x con elelmento y que esta en la mitad de T .La busqueda termina si x = y, si x > y se busca en la mitad superiordel arreglo, si no es el caso se busca en la mitad inferior del arreglo,tenemos ası el siguiente algoritmo.

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 10 / 41

Page 31: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Ciclos “while” y “repeat” III

function BinarySearch(T [1 . . . n], x)1 i← 12 j ← n3 while i < j4 do k ← (i+ j)÷ 25 switch6 case x < T [k] : j ← k − 17 case x = T [k] : i, j ← k8 case x > T [k] : i← k + 19 return i

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 11 / 41

Page 32: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Ciclos “while” y “repeat” IV

Recuerde que para analizar el tiempo de ejecucion de un ciclo whiledebemos encontrar una funcion de las variables involucradas cuyovalor decrezca cada vez que se entra al ciclo. En este caso, es naturalconsiderar a j − i+ 1 al que llamaremos d.

Ası, d representa el numero de elementos que todavıa se tienen queconsiderar, inicialmente d = n. El ciclo termina cuando i ≥ j, lo cuales equivalente a que d ≤ 1.En cada iteracion existen tres posibilidades: j toma el valor k − 1, itoma el valor k + 1 o tanto i como j toman el valor k.Sean d y d′ respectivamente el valor de j − i+ 1 antes y despues de laiteracion bajo consideracion, usaremos i, j, i′ y j′ de manera similar.

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 12 / 41

Page 33: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Ciclos “while” y “repeat” IV

Recuerde que para analizar el tiempo de ejecucion de un ciclo whiledebemos encontrar una funcion de las variables involucradas cuyovalor decrezca cada vez que se entra al ciclo. En este caso, es naturalconsiderar a j − i+ 1 al que llamaremos d.

Ası, d representa el numero de elementos que todavıa se tienen queconsiderar, inicialmente d = n. El ciclo termina cuando i ≥ j, lo cuales equivalente a que d ≤ 1.

En cada iteracion existen tres posibilidades: j toma el valor k − 1, itoma el valor k + 1 o tanto i como j toman el valor k.Sean d y d′ respectivamente el valor de j − i+ 1 antes y despues de laiteracion bajo consideracion, usaremos i, j, i′ y j′ de manera similar.

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 12 / 41

Page 34: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Ciclos “while” y “repeat” IV

Recuerde que para analizar el tiempo de ejecucion de un ciclo whiledebemos encontrar una funcion de las variables involucradas cuyovalor decrezca cada vez que se entra al ciclo. En este caso, es naturalconsiderar a j − i+ 1 al que llamaremos d.Ası, d representa el numero de elementos que todavıa se tienen queconsiderar, inicialmente d = n. El ciclo termina cuando i ≥ j, lo cuales equivalente a que d ≤ 1.

En cada iteracion existen tres posibilidades: j toma el valor k − 1, itoma el valor k + 1 o tanto i como j toman el valor k.

Sean d y d′ respectivamente el valor de j − i+ 1 antes y despues de laiteracion bajo consideracion, usaremos i, j, i′ y j′ de manera similar.

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 12 / 41

Page 35: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Ciclos “while” y “repeat” IV

Recuerde que para analizar el tiempo de ejecucion de un ciclo whiledebemos encontrar una funcion de las variables involucradas cuyovalor decrezca cada vez que se entra al ciclo. En este caso, es naturalconsiderar a j − i+ 1 al que llamaremos d.Ası, d representa el numero de elementos que todavıa se tienen queconsiderar, inicialmente d = n. El ciclo termina cuando i ≥ j, lo cuales equivalente a que d ≤ 1.En cada iteracion existen tres posibilidades: j toma el valor k − 1, itoma el valor k + 1 o tanto i como j toman el valor k.

Sean d y d′ respectivamente el valor de j − i+ 1 antes y despues de laiteracion bajo consideracion, usaremos i, j, i′ y j′ de manera similar.

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 12 / 41

Page 36: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Ciclos “while” y “repeat” V

Si x < T [k], la instruccion “j ← k − 1” se ejecuta y ası

i′ = i y j′ = [(i+ j)÷ 2]− 1.

Por lo tanto,

d′ = j′ − i′ + 1 = [(i+ j)÷ 2]− 1− i+ 1 =(i+ j)÷ 2− i ≤ (i+ j)/2− i =(i+ j − 2i)/2 = (j − i)/2 <

(j − i)/2 + 1/2 = (j − i+ 1)/2 = d/2.

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 13 / 41

Page 37: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Ciclos “while” y “repeat” V

Si x < T [k], la instruccion “j ← k − 1” se ejecuta y ası

i′ = i y j′ = [(i+ j)÷ 2]− 1.

Por lo tanto,

d′ = j′ − i′ + 1 = [(i+ j)÷ 2]− 1− i+ 1 =

(i+ j)÷ 2− i ≤ (i+ j)/2− i =(i+ j − 2i)/2 = (j − i)/2 <

(j − i)/2 + 1/2 = (j − i+ 1)/2 = d/2.

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 13 / 41

Page 38: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Ciclos “while” y “repeat” V

Si x < T [k], la instruccion “j ← k − 1” se ejecuta y ası

i′ = i y j′ = [(i+ j)÷ 2]− 1.

Por lo tanto,

d′ = j′ − i′ + 1 = [(i+ j)÷ 2]− 1− i+ 1 =(i+ j)÷ 2− i ≤ (i+ j)/2− i =

(i+ j − 2i)/2 = (j − i)/2 <(j − i)/2 + 1/2 = (j − i+ 1)/2 = d/2.

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 13 / 41

Page 39: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Ciclos “while” y “repeat” V

Si x < T [k], la instruccion “j ← k − 1” se ejecuta y ası

i′ = i y j′ = [(i+ j)÷ 2]− 1.

Por lo tanto,

d′ = j′ − i′ + 1 = [(i+ j)÷ 2]− 1− i+ 1 =(i+ j)÷ 2− i ≤ (i+ j)/2− i =(i+ j − 2i)/2 = (j − i)/2 <

(j − i)/2 + 1/2 = (j − i+ 1)/2 = d/2.

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 13 / 41

Page 40: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Ciclos “while” y “repeat” V

Si x < T [k], la instruccion “j ← k − 1” se ejecuta y ası

i′ = i y j′ = [(i+ j)÷ 2]− 1.

Por lo tanto,

d′ = j′ − i′ + 1 = [(i+ j)÷ 2]− 1− i+ 1 =(i+ j)÷ 2− i ≤ (i+ j)/2− i =(i+ j − 2i)/2 = (j − i)/2 <

(j − i)/2 + 1/2 = (j − i+ 1)/2 = d/2.

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 13 / 41

Page 41: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Ciclos “while” y “repeat” VI

Similarmente, si x > T [k], la instruccion “i← k + 1” se ejecuta y ası

i′ = [(i+ j)÷ 2] + 1 y j′ = j.

Por lo tanto,

d′ = j′ − i′ + 1 = j − [((i+ j)÷ 2) + 1] + 1 =j − (i+ j)÷ 2− 1 + 1 ≤ j − (i+ j)/2 =

(2j − (i+ j))/2 = (j − i)/2 <(j − i)/2 + 1/2 = (j − i+ 1)/2 = d/2.

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 14 / 41

Page 42: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Ciclos “while” y “repeat” VI

Similarmente, si x > T [k], la instruccion “i← k + 1” se ejecuta y ası

i′ = [(i+ j)÷ 2] + 1 y j′ = j.

Por lo tanto,

d′ = j′ − i′ + 1 = j − [((i+ j)÷ 2) + 1] + 1 =

j − (i+ j)÷ 2− 1 + 1 ≤ j − (i+ j)/2 =(2j − (i+ j))/2 = (j − i)/2 <(j − i)/2 + 1/2 = (j − i+ 1)/2 = d/2.

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 14 / 41

Page 43: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Ciclos “while” y “repeat” VI

Similarmente, si x > T [k], la instruccion “i← k + 1” se ejecuta y ası

i′ = [(i+ j)÷ 2] + 1 y j′ = j.

Por lo tanto,

d′ = j′ − i′ + 1 = j − [((i+ j)÷ 2) + 1] + 1 =j − (i+ j)÷ 2− 1 + 1 ≤ j − (i+ j)/2 =

(2j − (i+ j))/2 = (j − i)/2 <(j − i)/2 + 1/2 = (j − i+ 1)/2 = d/2.

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 14 / 41

Page 44: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Ciclos “while” y “repeat” VI

Similarmente, si x > T [k], la instruccion “i← k + 1” se ejecuta y ası

i′ = [(i+ j)÷ 2] + 1 y j′ = j.

Por lo tanto,

d′ = j′ − i′ + 1 = j − [((i+ j)÷ 2) + 1] + 1 =j − (i+ j)÷ 2− 1 + 1 ≤ j − (i+ j)/2 =

(2j − (i+ j))/2 = (j − i)/2 <

(j − i)/2 + 1/2 = (j − i+ 1)/2 = d/2.

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 14 / 41

Page 45: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Ciclos “while” y “repeat” VI

Similarmente, si x > T [k], la instruccion “i← k + 1” se ejecuta y ası

i′ = [(i+ j)÷ 2] + 1 y j′ = j.

Por lo tanto,

d′ = j′ − i′ + 1 = j − [((i+ j)÷ 2) + 1] + 1 =j − (i+ j)÷ 2− 1 + 1 ≤ j − (i+ j)/2 =

(2j − (i+ j))/2 = (j − i)/2 <(j − i)/2 + 1/2 = (j − i+ 1)/2 = d/2.

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 14 / 41

Page 46: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Ciclos “while” y “repeat” VII

Finalmente, is x = T [k] entonces i y j toman el mismo valor portanto d′ = 1; pero d fue al menos 2 ya que de otro modo no se habrıaentrado al ciclo (la condicion del ciclo es que i < j y d = j − i+ 1).

Concluimos que d′ = d/2 en cualquier caso, lo que significa que elvalor de d se reduce al menos a la mitad en cada iteracion.Ya que paramos cuando d ≤ 1, el proceso eventualmente termina,pero ¿cuanto tiempo toma?

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 15 / 41

Page 47: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Ciclos “while” y “repeat” VII

Finalmente, is x = T [k] entonces i y j toman el mismo valor portanto d′ = 1; pero d fue al menos 2 ya que de otro modo no se habrıaentrado al ciclo (la condicion del ciclo es que i < j y d = j − i+ 1).

Concluimos que d′ = d/2 en cualquier caso, lo que significa que elvalor de d se reduce al menos a la mitad en cada iteracion.

Ya que paramos cuando d ≤ 1, el proceso eventualmente termina,pero ¿cuanto tiempo toma?

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 15 / 41

Page 48: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Ciclos “while” y “repeat” VII

Finalmente, is x = T [k] entonces i y j toman el mismo valor portanto d′ = 1; pero d fue al menos 2 ya que de otro modo no se habrıaentrado al ciclo (la condicion del ciclo es que i < j y d = j − i+ 1).Concluimos que d′ = d/2 en cualquier caso, lo que significa que elvalor de d se reduce al menos a la mitad en cada iteracion.

Ya que paramos cuando d ≤ 1, el proceso eventualmente termina,pero ¿cuanto tiempo toma?

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 15 / 41

Page 49: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Ciclos “while” y “repeat” VIII

Para determinar una cota superior sobre el tiempo de ejecucion de labusqueda binaria, sea dl que denota el valor j − i+ 1 al final de lal−esima iteracion para l ≥ 1 y sea d0 = n.

Ya que dl−1 es el valor de j − i+ 1 antes de iniciar la l−esimaiteracion y como hemos demostrado que dl ≤ dl−1/2 para todo l ≤ 1,se sigue inmediatamente por induccion matematica que dl ≤ n/2l.Pero el ciclo termina cuando d ≤ 1, lo cual sucede a lo mas cuandol ≤ dlgne(recuerde que en los preliminares matematicos dijimos quelg x es una abreviacion para log2 x).

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 16 / 41

Page 50: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Ciclos “while” y “repeat” VIII

Para determinar una cota superior sobre el tiempo de ejecucion de labusqueda binaria, sea dl que denota el valor j − i+ 1 al final de lal−esima iteracion para l ≥ 1 y sea d0 = n.

Ya que dl−1 es el valor de j − i+ 1 antes de iniciar la l−esimaiteracion y como hemos demostrado que dl ≤ dl−1/2 para todo l ≤ 1,se sigue inmediatamente por induccion matematica que dl ≤ n/2l.

Pero el ciclo termina cuando d ≤ 1, lo cual sucede a lo mas cuandol ≤ dlgne(recuerde que en los preliminares matematicos dijimos quelg x es una abreviacion para log2 x).

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 16 / 41

Page 51: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Ciclos “while” y “repeat” VIII

Para determinar una cota superior sobre el tiempo de ejecucion de labusqueda binaria, sea dl que denota el valor j − i+ 1 al final de lal−esima iteracion para l ≥ 1 y sea d0 = n.Ya que dl−1 es el valor de j − i+ 1 antes de iniciar la l−esimaiteracion y como hemos demostrado que dl ≤ dl−1/2 para todo l ≤ 1,se sigue inmediatamente por induccion matematica que dl ≤ n/2l.

Pero el ciclo termina cuando d ≤ 1, lo cual sucede a lo mas cuandol ≤ dlgne(recuerde que en los preliminares matematicos dijimos quelg x es una abreviacion para log2 x).

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 16 / 41

Page 52: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Ciclos “while” y “repeat” IX

Concluimos que se entra al ciclo a lo mas dlgne veces. Ya que cadaiteracion tarda un tiempo constante, la busqueda binaria tarda untiempo en O(logn).

Un razonamiento similar nos da como resultado una cota inferior enΩ(logn), por tanto la busqueda binaria tarda un tiempo en Θ(logn).

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 17 / 41

Page 53: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Ciclos “while” y “repeat” IX

Concluimos que se entra al ciclo a lo mas dlgne veces. Ya que cadaiteracion tarda un tiempo constante, la busqueda binaria tarda untiempo en O(logn).

Un razonamiento similar nos da como resultado una cota inferior enΩ(logn), por tanto la busqueda binaria tarda un tiempo en Θ(logn).

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 17 / 41

Page 54: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Ciclos “while” y “repeat” X

El enfoque alternativo para analizar el tiempo de ejecucion de labusqueda binaria empieza muy parecido.

La idea es pensar en el ciclo while como si estuviera pensadorecursivamente en lugar de iterativamente.En cada iteracion, reducimos el rango de posibles posiciones en elarreglo para x.

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 18 / 41

Page 55: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Ciclos “while” y “repeat” X

El enfoque alternativo para analizar el tiempo de ejecucion de labusqueda binaria empieza muy parecido.

La idea es pensar en el ciclo while como si estuviera pensadorecursivamente en lugar de iterativamente.

En cada iteracion, reducimos el rango de posibles posiciones en elarreglo para x.

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 18 / 41

Page 56: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Ciclos “while” y “repeat” X

El enfoque alternativo para analizar el tiempo de ejecucion de labusqueda binaria empieza muy parecido.La idea es pensar en el ciclo while como si estuviera pensadorecursivamente en lugar de iterativamente.

En cada iteracion, reducimos el rango de posibles posiciones en elarreglo para x.

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 18 / 41

Page 57: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Ciclos “while” y “repeat” XI

Sea t(d) que denota el tiempo maximo necesario para terminar elciclo while cuando j − i+ 1 ≤ d, esto es cuando existen a lo mas delementos por considerar. Hemos visto que el valor de j − i+ 1 almenos decrece la mitad en cada iteracion.

En terminos recursivos esto significa que t(d) es a lo mas el tiempoconstante b necesario para realizar una vez la iteracion, mas el tiempot(d÷ 2) suficiente para que la iteracion se termine.Ya que determinar si el ciclo ha terminado, cuando d = 1, tarda untiempo constante c, obtenemos la siguiente recurrencia.

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 19 / 41

Page 58: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Ciclos “while” y “repeat” XI

Sea t(d) que denota el tiempo maximo necesario para terminar elciclo while cuando j − i+ 1 ≤ d, esto es cuando existen a lo mas delementos por considerar. Hemos visto que el valor de j − i+ 1 almenos decrece la mitad en cada iteracion.

En terminos recursivos esto significa que t(d) es a lo mas el tiempoconstante b necesario para realizar una vez la iteracion, mas el tiempot(d÷ 2) suficiente para que la iteracion se termine.

Ya que determinar si el ciclo ha terminado, cuando d = 1, tarda untiempo constante c, obtenemos la siguiente recurrencia.

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 19 / 41

Page 59: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Ciclos “while” y “repeat” XI

Sea t(d) que denota el tiempo maximo necesario para terminar elciclo while cuando j − i+ 1 ≤ d, esto es cuando existen a lo mas delementos por considerar. Hemos visto que el valor de j − i+ 1 almenos decrece la mitad en cada iteracion.En terminos recursivos esto significa que t(d) es a lo mas el tiempoconstante b necesario para realizar una vez la iteracion, mas el tiempot(d÷ 2) suficiente para que la iteracion se termine.

Ya que determinar si el ciclo ha terminado, cuando d = 1, tarda untiempo constante c, obtenemos la siguiente recurrencia.

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 19 / 41

Page 60: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Ciclos “while” y “repeat” XII

t(d) =c si d = 1b+ t(d÷ 2) en otro caso

Las tecnicas que veremos para resolver recurrencias se aplican para quefacilmente concluyamos que t(n) ∈ O(logn).

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 20 / 41

Page 61: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Ciclos “while” y “repeat” XII

t(d) =c si d = 1b+ t(d÷ 2) en otro caso

Las tecnicas que veremos para resolver recurrencias se aplican para quefacilmente concluyamos que t(n) ∈ O(logn).

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 20 / 41

Page 62: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Uso de un barometro I

El analisis de muchos algoritmos se simplifica significativamentecuando una instruccion, o una prueba, se puede identificar comobarometro.

Una instruccion barometro es una que se ejecuta al menos tanfrecuentemente como cualquier otra instruccion en el algoritmo.No hay problema si algunas instrucciones se ejecutan hasta unnumero constante de veces mas a menudo que el barometro, ya quesu contribucion se absorbe en la notacion asintotica.Siempre que el tiempo que tarda cada instruccion esta acotado poruna constante, el tiempo que tarda todo el algoritmo esta en el ordenexacto del numero de veces que la instruccion barometro se ejecuta.

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 21 / 41

Page 63: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Uso de un barometro I

El analisis de muchos algoritmos se simplifica significativamentecuando una instruccion, o una prueba, se puede identificar comobarometro.

Una instruccion barometro es una que se ejecuta al menos tanfrecuentemente como cualquier otra instruccion en el algoritmo.

No hay problema si algunas instrucciones se ejecutan hasta unnumero constante de veces mas a menudo que el barometro, ya quesu contribucion se absorbe en la notacion asintotica.Siempre que el tiempo que tarda cada instruccion esta acotado poruna constante, el tiempo que tarda todo el algoritmo esta en el ordenexacto del numero de veces que la instruccion barometro se ejecuta.

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 21 / 41

Page 64: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Uso de un barometro I

El analisis de muchos algoritmos se simplifica significativamentecuando una instruccion, o una prueba, se puede identificar comobarometro.Una instruccion barometro es una que se ejecuta al menos tanfrecuentemente como cualquier otra instruccion en el algoritmo.

No hay problema si algunas instrucciones se ejecutan hasta unnumero constante de veces mas a menudo que el barometro, ya quesu contribucion se absorbe en la notacion asintotica.

Siempre que el tiempo que tarda cada instruccion esta acotado poruna constante, el tiempo que tarda todo el algoritmo esta en el ordenexacto del numero de veces que la instruccion barometro se ejecuta.

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 21 / 41

Page 65: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Uso de un barometro I

El analisis de muchos algoritmos se simplifica significativamentecuando una instruccion, o una prueba, se puede identificar comobarometro.Una instruccion barometro es una que se ejecuta al menos tanfrecuentemente como cualquier otra instruccion en el algoritmo.No hay problema si algunas instrucciones se ejecutan hasta unnumero constante de veces mas a menudo que el barometro, ya quesu contribucion se absorbe en la notacion asintotica.

Siempre que el tiempo que tarda cada instruccion esta acotado poruna constante, el tiempo que tarda todo el algoritmo esta en el ordenexacto del numero de veces que la instruccion barometro se ejecuta.

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 21 / 41

Page 66: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Uso de un barometro II

Esto es util porque nos permite despreciar los tiempos exactos quetarda cada instruccion.

En particular, evita la necesidad de introducir constantes tales comoaquellas que acotan el tiempo que tardan varias operacioneselementales, las cuales no son importantes ya que dependen de laimplementacion y que son descartadas cuando el resultado final seexpresa en terminos de la notacion asintotica.

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 22 / 41

Page 67: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Uso de un barometro II

Esto es util porque nos permite despreciar los tiempos exactos quetarda cada instruccion.

En particular, evita la necesidad de introducir constantes tales comoaquellas que acotan el tiempo que tardan varias operacioneselementales, las cuales no son importantes ya que dependen de laimplementacion y que son descartadas cuando el resultado final seexpresa en terminos de la notacion asintotica.

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 22 / 41

Page 68: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Uso de un barometro III

Por ejemplo, considere el analisis de Fibiter cuando contamos todaslas operaciones aritmeticas como de costo unitario.

Vimos que el algoritmo tarda un tiempo acotado superiormente porcn para alguna constante c despreciable, y por lo tanto tarda untiempo en Θ(n).Hubiera sido mas simple decir que la instruccion j ← i+ j se puedetomar como barometro, que obviamente esta instruccion se ejecuta nveces y por tanto el algoritmo tarda un tiempo en Θ(n).

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 23 / 41

Page 69: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Uso de un barometro III

Por ejemplo, considere el analisis de Fibiter cuando contamos todaslas operaciones aritmeticas como de costo unitario.

Vimos que el algoritmo tarda un tiempo acotado superiormente porcn para alguna constante c despreciable, y por lo tanto tarda untiempo en Θ(n).

Hubiera sido mas simple decir que la instruccion j ← i+ j se puedetomar como barometro, que obviamente esta instruccion se ejecuta nveces y por tanto el algoritmo tarda un tiempo en Θ(n).

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 23 / 41

Page 70: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Uso de un barometro III

Por ejemplo, considere el analisis de Fibiter cuando contamos todaslas operaciones aritmeticas como de costo unitario.Vimos que el algoritmo tarda un tiempo acotado superiormente porcn para alguna constante c despreciable, y por lo tanto tarda untiempo en Θ(n).

Hubiera sido mas simple decir que la instruccion j ← i+ j se puedetomar como barometro, que obviamente esta instruccion se ejecuta nveces y por tanto el algoritmo tarda un tiempo en Θ(n).

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 23 / 41

Page 71: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Uso de un barometro IV

Cuando un algoritmo involucra varios ciclos anidados, cualquierinstruccion del ciclo mas interno usualmente puede tomarse comobarometro.

No obstante, esto se debe hacer con cuidado porque hay casos dondees necesario tomar en cuenta el control implıcito del ciclo.Esto sucede tipicamente cuando algunos de los ciclos se ejecutan ceroveces, ya que tales ciclos consumen tiempo aunque no se llegue aejecutar la instruccion barometro.Si esto sucede con frecuencia, el numero de veces que la instruccionbarometro se ejecuta puede ser minimizado por el numero de vecesque se ejecuta el control de los ciclos vacıos y por tanto serıa un errorconsiderar tal instruccion mas interna como barometro.

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 24 / 41

Page 72: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Uso de un barometro IV

Cuando un algoritmo involucra varios ciclos anidados, cualquierinstruccion del ciclo mas interno usualmente puede tomarse comobarometro.

No obstante, esto se debe hacer con cuidado porque hay casos dondees necesario tomar en cuenta el control implıcito del ciclo.

Esto sucede tipicamente cuando algunos de los ciclos se ejecutan ceroveces, ya que tales ciclos consumen tiempo aunque no se llegue aejecutar la instruccion barometro.Si esto sucede con frecuencia, el numero de veces que la instruccionbarometro se ejecuta puede ser minimizado por el numero de vecesque se ejecuta el control de los ciclos vacıos y por tanto serıa un errorconsiderar tal instruccion mas interna como barometro.

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 24 / 41

Page 73: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Uso de un barometro IV

Cuando un algoritmo involucra varios ciclos anidados, cualquierinstruccion del ciclo mas interno usualmente puede tomarse comobarometro.No obstante, esto se debe hacer con cuidado porque hay casos dondees necesario tomar en cuenta el control implıcito del ciclo.

Esto sucede tipicamente cuando algunos de los ciclos se ejecutan ceroveces, ya que tales ciclos consumen tiempo aunque no se llegue aejecutar la instruccion barometro.

Si esto sucede con frecuencia, el numero de veces que la instruccionbarometro se ejecuta puede ser minimizado por el numero de vecesque se ejecuta el control de los ciclos vacıos y por tanto serıa un errorconsiderar tal instruccion mas interna como barometro.

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 24 / 41

Page 74: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Uso de un barometro IV

Cuando un algoritmo involucra varios ciclos anidados, cualquierinstruccion del ciclo mas interno usualmente puede tomarse comobarometro.No obstante, esto se debe hacer con cuidado porque hay casos dondees necesario tomar en cuenta el control implıcito del ciclo.Esto sucede tipicamente cuando algunos de los ciclos se ejecutan ceroveces, ya que tales ciclos consumen tiempo aunque no se llegue aejecutar la instruccion barometro.

Si esto sucede con frecuencia, el numero de veces que la instruccionbarometro se ejecuta puede ser minimizado por el numero de vecesque se ejecuta el control de los ciclos vacıos y por tanto serıa un errorconsiderar tal instruccion mas interna como barometro.

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 24 / 41

Page 75: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Uso de un barometro V

Considere por ejemplo ordenamiento por casillas.

Aquı generalizamos el algoritmo para manejar el caso donde loselementos a ordenar son enteros que se sabe estan entre 1 y s enlugar de entre 1 y 10000.Recuerde que T [1 . . . n] es el arreglo a ordenar y U [1 . . . s] es unarreglo construido tal que U [k] contiene el numero de veces que elentero k aparece en T .La fase final del algoritmo reconstruye T en order no decreciente apartir de la informacion que hay en U .

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 25 / 41

Page 76: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Uso de un barometro V

Considere por ejemplo ordenamiento por casillas.

Aquı generalizamos el algoritmo para manejar el caso donde loselementos a ordenar son enteros que se sabe estan entre 1 y s enlugar de entre 1 y 10000.

Recuerde que T [1 . . . n] es el arreglo a ordenar y U [1 . . . s] es unarreglo construido tal que U [k] contiene el numero de veces que elentero k aparece en T .La fase final del algoritmo reconstruye T en order no decreciente apartir de la informacion que hay en U .

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 25 / 41

Page 77: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Uso de un barometro V

Considere por ejemplo ordenamiento por casillas.Aquı generalizamos el algoritmo para manejar el caso donde loselementos a ordenar son enteros que se sabe estan entre 1 y s enlugar de entre 1 y 10000.

Recuerde que T [1 . . . n] es el arreglo a ordenar y U [1 . . . s] es unarreglo construido tal que U [k] contiene el numero de veces que elentero k aparece en T .

La fase final del algoritmo reconstruye T en order no decreciente apartir de la informacion que hay en U .

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 25 / 41

Page 78: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Uso de un barometro V

Considere por ejemplo ordenamiento por casillas.Aquı generalizamos el algoritmo para manejar el caso donde loselementos a ordenar son enteros que se sabe estan entre 1 y s enlugar de entre 1 y 10000.Recuerde que T [1 . . . n] es el arreglo a ordenar y U [1 . . . s] es unarreglo construido tal que U [k] contiene el numero de veces que elentero k aparece en T .

La fase final del algoritmo reconstruye T en order no decreciente apartir de la informacion que hay en U .

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 25 / 41

Page 79: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Uso de un barometro VI

procedure ExtractoDeCasillas()1 i← 02 for k ← 1 to s3 do while U [k] 6= 04 do i← i+ 15 T [i]← k6 U [k]← U [k]− 1

Para analizar el tiempo requerido para este procedimiento, usaremos“U [k]” para denotar el valor almacenado originalmente en U [k] yaque todos estos valores son definidos a 0 durante el proceso.Es tentador elegir a cualquiera de las instrucciones en el ciclo masinterno como barometro. Para cada valor de k, estas instruccionesson ejecutadas U [k] veces.

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 26 / 41

Page 80: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Uso de un barometro VI

procedure ExtractoDeCasillas()1 i← 02 for k ← 1 to s3 do while U [k] 6= 04 do i← i+ 15 T [i]← k6 U [k]← U [k]− 1

Para analizar el tiempo requerido para este procedimiento, usaremos“U [k]” para denotar el valor almacenado originalmente en U [k] yaque todos estos valores son definidos a 0 durante el proceso.

Es tentador elegir a cualquiera de las instrucciones en el ciclo masinterno como barometro. Para cada valor de k, estas instruccionesson ejecutadas U [k] veces.

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 26 / 41

Page 81: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Uso de un barometro VI

procedure ExtractoDeCasillas()1 i← 02 for k ← 1 to s3 do while U [k] 6= 04 do i← i+ 15 T [i]← k6 U [k]← U [k]− 1

Para analizar el tiempo requerido para este procedimiento, usaremos“U [k]” para denotar el valor almacenado originalmente en U [k] yaque todos estos valores son definidos a 0 durante el proceso.Es tentador elegir a cualquiera de las instrucciones en el ciclo masinterno como barometro. Para cada valor de k, estas instruccionesson ejecutadas U [k] veces.

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 26 / 41

Page 82: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Uso de un barometro VII

Por tanto el numero total de veces que son ejecutadas es∑s

k=1 U [k].Pero esta suma es igual a n, el numero de enteros a ordenar, ya quela suma del numero de veces que cada elemento aparece da el numerototal de elementos.

Si en verdad estas instrucciones sirvieran como barometro,concluirıamos que este procedimiento tarda un tiempo en el ordenexacto de n.Un ejemplo simple es suficiente para convencernos que este no esnecesariamente el caso.

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 27 / 41

Page 83: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Uso de un barometro VII

Por tanto el numero total de veces que son ejecutadas es∑s

k=1 U [k].Pero esta suma es igual a n, el numero de enteros a ordenar, ya quela suma del numero de veces que cada elemento aparece da el numerototal de elementos.

Si en verdad estas instrucciones sirvieran como barometro,concluirıamos que este procedimiento tarda un tiempo en el ordenexacto de n.

Un ejemplo simple es suficiente para convencernos que este no esnecesariamente el caso.

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 27 / 41

Page 84: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Uso de un barometro VII

Por tanto el numero total de veces que son ejecutadas es∑s

k=1 U [k].Pero esta suma es igual a n, el numero de enteros a ordenar, ya quela suma del numero de veces que cada elemento aparece da el numerototal de elementos.Si en verdad estas instrucciones sirvieran como barometro,concluirıamos que este procedimiento tarda un tiempo en el ordenexacto de n.

Un ejemplo simple es suficiente para convencernos que este no esnecesariamente el caso.

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 27 / 41

Page 85: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Uso de un barometro VIII

Suponga que U [k] = 1 cuando k es un cuadrado perfecto y U [k] = 0en otro caso. Esto corresponderıa a ordenar un arreglo T quecontiene exactamente una vez cada cuadrado perfecto entre 1 y n2,usando s = n2 casillas.

En este caso, el procedimiento tarda claramente un tiempo en Ω(n2)ya que el ciclo mas externo se ejecuta s veces.Por lo tanto no puede ser que el tiempo que tarda este en Θ(n).Esto demuestra que haber elegido una de las instrucciones en el ciclomas interno como barometro fue incorrecto.El problema surge ya que solo podemos despreciar el tiempo utilizadoen iniciar y controlar los ciclos siempre y cuando estemos seguros dehaber incluido algo que tome en cuenta si el ciclo se ejecuta ceroveces.

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 28 / 41

Page 86: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Uso de un barometro VIII

Suponga que U [k] = 1 cuando k es un cuadrado perfecto y U [k] = 0en otro caso. Esto corresponderıa a ordenar un arreglo T quecontiene exactamente una vez cada cuadrado perfecto entre 1 y n2,usando s = n2 casillas.

En este caso, el procedimiento tarda claramente un tiempo en Ω(n2)ya que el ciclo mas externo se ejecuta s veces.

Por lo tanto no puede ser que el tiempo que tarda este en Θ(n).Esto demuestra que haber elegido una de las instrucciones en el ciclomas interno como barometro fue incorrecto.El problema surge ya que solo podemos despreciar el tiempo utilizadoen iniciar y controlar los ciclos siempre y cuando estemos seguros dehaber incluido algo que tome en cuenta si el ciclo se ejecuta ceroveces.

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 28 / 41

Page 87: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Uso de un barometro VIII

Suponga que U [k] = 1 cuando k es un cuadrado perfecto y U [k] = 0en otro caso. Esto corresponderıa a ordenar un arreglo T quecontiene exactamente una vez cada cuadrado perfecto entre 1 y n2,usando s = n2 casillas.En este caso, el procedimiento tarda claramente un tiempo en Ω(n2)ya que el ciclo mas externo se ejecuta s veces.

Por lo tanto no puede ser que el tiempo que tarda este en Θ(n).

Esto demuestra que haber elegido una de las instrucciones en el ciclomas interno como barometro fue incorrecto.El problema surge ya que solo podemos despreciar el tiempo utilizadoen iniciar y controlar los ciclos siempre y cuando estemos seguros dehaber incluido algo que tome en cuenta si el ciclo se ejecuta ceroveces.

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 28 / 41

Page 88: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Uso de un barometro VIII

Suponga que U [k] = 1 cuando k es un cuadrado perfecto y U [k] = 0en otro caso. Esto corresponderıa a ordenar un arreglo T quecontiene exactamente una vez cada cuadrado perfecto entre 1 y n2,usando s = n2 casillas.En este caso, el procedimiento tarda claramente un tiempo en Ω(n2)ya que el ciclo mas externo se ejecuta s veces.Por lo tanto no puede ser que el tiempo que tarda este en Θ(n).

Esto demuestra que haber elegido una de las instrucciones en el ciclomas interno como barometro fue incorrecto.

El problema surge ya que solo podemos despreciar el tiempo utilizadoen iniciar y controlar los ciclos siempre y cuando estemos seguros dehaber incluido algo que tome en cuenta si el ciclo se ejecuta ceroveces.

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 28 / 41

Page 89: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Uso de un barometro VIII

Suponga que U [k] = 1 cuando k es un cuadrado perfecto y U [k] = 0en otro caso. Esto corresponderıa a ordenar un arreglo T quecontiene exactamente una vez cada cuadrado perfecto entre 1 y n2,usando s = n2 casillas.En este caso, el procedimiento tarda claramente un tiempo en Ω(n2)ya que el ciclo mas externo se ejecuta s veces.Por lo tanto no puede ser que el tiempo que tarda este en Θ(n).Esto demuestra que haber elegido una de las instrucciones en el ciclomas interno como barometro fue incorrecto.

El problema surge ya que solo podemos despreciar el tiempo utilizadoen iniciar y controlar los ciclos siempre y cuando estemos seguros dehaber incluido algo que tome en cuenta si el ciclo se ejecuta ceroveces.

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 28 / 41

Page 90: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Uso de un barometro IX

El analisis correcto y detallado del procedimiento es como sigue.

Sea a el tiempo necesario para la prueba U [k] 6= 0 cada vez que sepretende ejecutar el ciclo mas interno y sea b el tiempo que tarda enuna ejecucion de las instrucciones en el ciclo mas interno, incluyendola operacion de secuenciacion para regresar al inicio del ciclo paravolver a probar su condicion.Ejecutar completamente el ciclo mas interno para un valor dado de ktarda un tiempo tk = (1 + U [k])a+ U [k]b, donde sumamos 1 a U [k]antes de multiplicarlo por a para tomar en cuenta el hecho de que laprueba se realiza cada vez que va a empezar otra iteracion y una maspara determinar que el ciclo se ha completado.

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 29 / 41

Page 91: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Uso de un barometro IX

El analisis correcto y detallado del procedimiento es como sigue.

Sea a el tiempo necesario para la prueba U [k] 6= 0 cada vez que sepretende ejecutar el ciclo mas interno y sea b el tiempo que tarda enuna ejecucion de las instrucciones en el ciclo mas interno, incluyendola operacion de secuenciacion para regresar al inicio del ciclo paravolver a probar su condicion.

Ejecutar completamente el ciclo mas interno para un valor dado de ktarda un tiempo tk = (1 + U [k])a+ U [k]b, donde sumamos 1 a U [k]antes de multiplicarlo por a para tomar en cuenta el hecho de que laprueba se realiza cada vez que va a empezar otra iteracion y una maspara determinar que el ciclo se ha completado.

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 29 / 41

Page 92: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Uso de un barometro IX

El analisis correcto y detallado del procedimiento es como sigue.Sea a el tiempo necesario para la prueba U [k] 6= 0 cada vez que sepretende ejecutar el ciclo mas interno y sea b el tiempo que tarda enuna ejecucion de las instrucciones en el ciclo mas interno, incluyendola operacion de secuenciacion para regresar al inicio del ciclo paravolver a probar su condicion.

Ejecutar completamente el ciclo mas interno para un valor dado de ktarda un tiempo tk = (1 + U [k])a+ U [k]b, donde sumamos 1 a U [k]antes de multiplicarlo por a para tomar en cuenta el hecho de que laprueba se realiza cada vez que va a empezar otra iteracion y una maspara determinar que el ciclo se ha completado.

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 29 / 41

Page 93: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Uso de un barometro X

El asunto crucial es que este tiempo no es cero aun cuando U [k] = 0.

El procedimiento completo tarda un tiempo c+∑s

k=1(d+ tk), dondec y d son constantes nuevas que toman en cuenta el tiempo necesariopara inciar y controlar el ciclo mas externo, respectivamente.Cuando se simplifica, esta expresion nos da c+ (a+ d)s+ (a+ b)n..Concluimos que el procedimiento tarda un tiempo en Θ(n+ s).Ası, el tiempo depende de dos parametros independientes n y s; no sepuede expresar como una funcion de solo uno de ellos.

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 30 / 41

Page 94: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Uso de un barometro X

El asunto crucial es que este tiempo no es cero aun cuando U [k] = 0.

El procedimiento completo tarda un tiempo c+∑s

k=1(d+ tk), dondec y d son constantes nuevas que toman en cuenta el tiempo necesariopara inciar y controlar el ciclo mas externo, respectivamente.

Cuando se simplifica, esta expresion nos da c+ (a+ d)s+ (a+ b)n..Concluimos que el procedimiento tarda un tiempo en Θ(n+ s).Ası, el tiempo depende de dos parametros independientes n y s; no sepuede expresar como una funcion de solo uno de ellos.

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 30 / 41

Page 95: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Uso de un barometro X

El asunto crucial es que este tiempo no es cero aun cuando U [k] = 0.El procedimiento completo tarda un tiempo c+

∑sk=1(d+ tk), donde

c y d son constantes nuevas que toman en cuenta el tiempo necesariopara inciar y controlar el ciclo mas externo, respectivamente.

Cuando se simplifica, esta expresion nos da c+ (a+ d)s+ (a+ b)n..Concluimos que el procedimiento tarda un tiempo en Θ(n+ s).

Ası, el tiempo depende de dos parametros independientes n y s; no sepuede expresar como una funcion de solo uno de ellos.

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 30 / 41

Page 96: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Uso de un barometro X

El asunto crucial es que este tiempo no es cero aun cuando U [k] = 0.El procedimiento completo tarda un tiempo c+

∑sk=1(d+ tk), donde

c y d son constantes nuevas que toman en cuenta el tiempo necesariopara inciar y controlar el ciclo mas externo, respectivamente.Cuando se simplifica, esta expresion nos da c+ (a+ d)s+ (a+ b)n..Concluimos que el procedimiento tarda un tiempo en Θ(n+ s).

Ası, el tiempo depende de dos parametros independientes n y s; no sepuede expresar como una funcion de solo uno de ellos.

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 30 / 41

Page 97: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Uso de un barometro XI

Es facil ver que la fase de iniciacion de ordenamiento por casillastambien tarda un tiempo en Θ(n+ s).

Esta tecnica de ordenamiento tarda un tiempo total en Θ(n+ s) paraordenar n enteros entre 1 y s. Si prefiere, se puede invocar a la regladel maximo para establecer que este tiempo esta en Θ(maxn, s).Ası, ordenamiento por casillas vale la pena si demostramos que s essuficientemente pequeno comparado con n.Por ejemplo, si estamos interesados en el tiempo requerido como unafuncion que dependa solamente del numero de elementos a ordenar,esta tecnica tiene exito en un tiempo lineal asombroso si s ∈ O(n)pero alcanza tiempo cuadratico si s ∈ Θ(n2).

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 31 / 41

Page 98: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Uso de un barometro XI

Es facil ver que la fase de iniciacion de ordenamiento por casillastambien tarda un tiempo en Θ(n+ s).

Esta tecnica de ordenamiento tarda un tiempo total en Θ(n+ s) paraordenar n enteros entre 1 y s. Si prefiere, se puede invocar a la regladel maximo para establecer que este tiempo esta en Θ(maxn, s).

Ası, ordenamiento por casillas vale la pena si demostramos que s essuficientemente pequeno comparado con n.Por ejemplo, si estamos interesados en el tiempo requerido como unafuncion que dependa solamente del numero de elementos a ordenar,esta tecnica tiene exito en un tiempo lineal asombroso si s ∈ O(n)pero alcanza tiempo cuadratico si s ∈ Θ(n2).

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 31 / 41

Page 99: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Uso de un barometro XI

Es facil ver que la fase de iniciacion de ordenamiento por casillastambien tarda un tiempo en Θ(n+ s).Esta tecnica de ordenamiento tarda un tiempo total en Θ(n+ s) paraordenar n enteros entre 1 y s. Si prefiere, se puede invocar a la regladel maximo para establecer que este tiempo esta en Θ(maxn, s).

Ası, ordenamiento por casillas vale la pena si demostramos que s essuficientemente pequeno comparado con n.

Por ejemplo, si estamos interesados en el tiempo requerido como unafuncion que dependa solamente del numero de elementos a ordenar,esta tecnica tiene exito en un tiempo lineal asombroso si s ∈ O(n)pero alcanza tiempo cuadratico si s ∈ Θ(n2).

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 31 / 41

Page 100: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Uso de un barometro XI

Es facil ver que la fase de iniciacion de ordenamiento por casillastambien tarda un tiempo en Θ(n+ s).Esta tecnica de ordenamiento tarda un tiempo total en Θ(n+ s) paraordenar n enteros entre 1 y s. Si prefiere, se puede invocar a la regladel maximo para establecer que este tiempo esta en Θ(maxn, s).Ası, ordenamiento por casillas vale la pena si demostramos que s essuficientemente pequeno comparado con n.

Por ejemplo, si estamos interesados en el tiempo requerido como unafuncion que dependa solamente del numero de elementos a ordenar,esta tecnica tiene exito en un tiempo lineal asombroso si s ∈ O(n)pero alcanza tiempo cuadratico si s ∈ Θ(n2).

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 31 / 41

Page 101: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Uso de un barometro XII

A pesar de lo anterior, el uso de un barometro es apropiado paraanalizar ordenamiento por casillas. El problema es que no se eligio elbarometro adecuado.

En vez de las instrucciones dentro del ciclo interno, se debe elegircomo barometro la prueba U [k] 6= 0 del ciclo mas interno. En verdad,ninguna instruccion en el procedimiento se ejecuta mas veces quedicha prueba, lo cual es la definicion de un barometro.Es facil mostrar que U [k] 6= 0 se ejecuta exactamente n+ s veces,por lo tanto la conclusion correcta sobre el tiempo de ejecucion delprocedimiento se sigue inmediatamente sin necesidad de introducirconstantes sin sentido.En conclusion, el uso de un barometro es una herramienta util parasimplificar el analisis de muchos algoritmos, pero esta tecnica debeusarse con cuidado.

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 32 / 41

Page 102: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Uso de un barometro XII

A pesar de lo anterior, el uso de un barometro es apropiado paraanalizar ordenamiento por casillas. El problema es que no se eligio elbarometro adecuado.

En vez de las instrucciones dentro del ciclo interno, se debe elegircomo barometro la prueba U [k] 6= 0 del ciclo mas interno. En verdad,ninguna instruccion en el procedimiento se ejecuta mas veces quedicha prueba, lo cual es la definicion de un barometro.

Es facil mostrar que U [k] 6= 0 se ejecuta exactamente n+ s veces,por lo tanto la conclusion correcta sobre el tiempo de ejecucion delprocedimiento se sigue inmediatamente sin necesidad de introducirconstantes sin sentido.En conclusion, el uso de un barometro es una herramienta util parasimplificar el analisis de muchos algoritmos, pero esta tecnica debeusarse con cuidado.

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 32 / 41

Page 103: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Uso de un barometro XII

A pesar de lo anterior, el uso de un barometro es apropiado paraanalizar ordenamiento por casillas. El problema es que no se eligio elbarometro adecuado.En vez de las instrucciones dentro del ciclo interno, se debe elegircomo barometro la prueba U [k] 6= 0 del ciclo mas interno. En verdad,ninguna instruccion en el procedimiento se ejecuta mas veces quedicha prueba, lo cual es la definicion de un barometro.

Es facil mostrar que U [k] 6= 0 se ejecuta exactamente n+ s veces,por lo tanto la conclusion correcta sobre el tiempo de ejecucion delprocedimiento se sigue inmediatamente sin necesidad de introducirconstantes sin sentido.

En conclusion, el uso de un barometro es una herramienta util parasimplificar el analisis de muchos algoritmos, pero esta tecnica debeusarse con cuidado.

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 32 / 41

Page 104: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Uso de un barometro XII

A pesar de lo anterior, el uso de un barometro es apropiado paraanalizar ordenamiento por casillas. El problema es que no se eligio elbarometro adecuado.En vez de las instrucciones dentro del ciclo interno, se debe elegircomo barometro la prueba U [k] 6= 0 del ciclo mas interno. En verdad,ninguna instruccion en el procedimiento se ejecuta mas veces quedicha prueba, lo cual es la definicion de un barometro.Es facil mostrar que U [k] 6= 0 se ejecuta exactamente n+ s veces,por lo tanto la conclusion correcta sobre el tiempo de ejecucion delprocedimiento se sigue inmediatamente sin necesidad de introducirconstantes sin sentido.

En conclusion, el uso de un barometro es una herramienta util parasimplificar el analisis de muchos algoritmos, pero esta tecnica debeusarse con cuidado.

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 32 / 41

Page 105: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Uso de un barometro XIII

Como otro ejemplo del uso de la tecnica del barometro y del analisis deciclos anidados, veamos el algoritmo de ordenamiento por seleccion vistoanteriormente.

procedure Select(T [1 . . . n])1 for i← 1 to n− 12 do minj ← i3 minx← T [i]4 for j ← i+ 1 to n5 do if T [j] < minx6 then minj ← j7 minx← T [j]8 T [minj]← T [i]9 T [i]← minx

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 33 / 41

Page 106: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Uso de un barometro XIII

Como otro ejemplo del uso de la tecnica del barometro y del analisis deciclos anidados, veamos el algoritmo de ordenamiento por seleccion vistoanteriormente.

procedure Select(T [1 . . . n])1 for i← 1 to n− 12 do minj ← i3 minx← T [i]4 for j ← i+ 1 to n5 do if T [j] < minx6 then minj ← j7 minx← T [j]8 T [minj]← T [i]9 T [i]← minx

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 33 / 41

Page 107: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Uso de un barometro XIV

No obstante el tiempo que tarda cada iteracion del ciclo mas internono es constante, toma mas tiempo cuando T [j] < minx, este tiempoesta acotado superiormente por alguna constante c (que toma encuenta el control del ciclo mas interno).

Para cada valor de i, las instrucciones en el ciclo mas interno seejecutan n− (i+ 1) + 1 = n− i veces, por lo tanto el tiempo quetarda el ciclo mas interno es t(i) ≤ (n− i)c.El tiempo que tarda la i−esima iteracion del ciclo mas externo estaacotado superiormente por b+ t(i) para una constante apropiada bque toma en cuenta las operaciones elementales antes y despues delciclo mas interno y el control del ciclo mas externo.

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 34 / 41

Page 108: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Uso de un barometro XIV

No obstante el tiempo que tarda cada iteracion del ciclo mas internono es constante, toma mas tiempo cuando T [j] < minx, este tiempoesta acotado superiormente por alguna constante c (que toma encuenta el control del ciclo mas interno).

Para cada valor de i, las instrucciones en el ciclo mas interno seejecutan n− (i+ 1) + 1 = n− i veces, por lo tanto el tiempo quetarda el ciclo mas interno es t(i) ≤ (n− i)c.

El tiempo que tarda la i−esima iteracion del ciclo mas externo estaacotado superiormente por b+ t(i) para una constante apropiada bque toma en cuenta las operaciones elementales antes y despues delciclo mas interno y el control del ciclo mas externo.

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 34 / 41

Page 109: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Uso de un barometro XIV

No obstante el tiempo que tarda cada iteracion del ciclo mas internono es constante, toma mas tiempo cuando T [j] < minx, este tiempoesta acotado superiormente por alguna constante c (que toma encuenta el control del ciclo mas interno).Para cada valor de i, las instrucciones en el ciclo mas interno seejecutan n− (i+ 1) + 1 = n− i veces, por lo tanto el tiempo quetarda el ciclo mas interno es t(i) ≤ (n− i)c.

El tiempo que tarda la i−esima iteracion del ciclo mas externo estaacotado superiormente por b+ t(i) para una constante apropiada bque toma en cuenta las operaciones elementales antes y despues delciclo mas interno y el control del ciclo mas externo.

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 34 / 41

Page 110: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Uso de un barometro XV

Por lo tanto, el tiempo total que tarda el algoritmo esta acotadosuperiormente por:

n−1∑i=1

b+ (n− i)c =n−1∑i=1

(b+ cn)− cn−1∑i=1

i

= (n− 1)(b+ cn)− cn(n− 1)/2

= 12cn

2 +(b− 1

2c)n− b,

el cual esta en O(n2). Un razonamiento similar muestra que este tiempoesta tambien en Ω(n2) en todos los casos, y por tanto ordenamiento porseleccion tarda un tiempo en Θ(n2) para ordenar n elementos.

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 35 / 41

Page 111: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Uso de un barometro XV

Por lo tanto, el tiempo total que tarda el algoritmo esta acotadosuperiormente por:

n−1∑i=1

b+ (n− i)c =n−1∑i=1

(b+ cn)− cn−1∑i=1

i

= (n− 1)(b+ cn)− cn(n− 1)/2

= 12cn

2 +(b− 1

2c)n− b,

el cual esta en O(n2). Un razonamiento similar muestra que este tiempoesta tambien en Ω(n2) en todos los casos, y por tanto ordenamiento porseleccion tarda un tiempo en Θ(n2) para ordenar n elementos.

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 35 / 41

Page 112: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Uso de un barometro XV

Por lo tanto, el tiempo total que tarda el algoritmo esta acotadosuperiormente por:

n−1∑i=1

b+ (n− i)c =n−1∑i=1

(b+ cn)− cn−1∑i=1

i

= (n− 1)(b+ cn)− cn(n− 1)/2

= 12cn

2 +(b− 1

2c)n− b,

el cual esta en O(n2). Un razonamiento similar muestra que este tiempoesta tambien en Ω(n2) en todos los casos, y por tanto ordenamiento porseleccion tarda un tiempo en Θ(n2) para ordenar n elementos.

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 35 / 41

Page 113: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Uso de un barometro XV

Por lo tanto, el tiempo total que tarda el algoritmo esta acotadosuperiormente por:

n−1∑i=1

b+ (n− i)c =n−1∑i=1

(b+ cn)− cn−1∑i=1

i

= (n− 1)(b+ cn)− cn(n− 1)/2

= 12cn

2 +(b− 1

2c)n− b,

el cual esta en O(n2). Un razonamiento similar muestra que este tiempoesta tambien en Ω(n2) en todos los casos, y por tanto ordenamiento porseleccion tarda un tiempo en Θ(n2) para ordenar n elementos.

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 35 / 41

Page 114: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Uso de un barometro XV

Por lo tanto, el tiempo total que tarda el algoritmo esta acotadosuperiormente por:

n−1∑i=1

b+ (n− i)c =n−1∑i=1

(b+ cn)− cn−1∑i=1

i

= (n− 1)(b+ cn)− cn(n− 1)/2

= 12cn

2 +(b− 1

2c)n− b,

el cual esta en O(n2). Un razonamiento similar muestra que este tiempoesta tambien en Ω(n2) en todos los casos, y por tanto ordenamiento porseleccion tarda un tiempo en Θ(n2) para ordenar n elementos.

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 35 / 41

Page 115: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Uso de un barometro XVI

El argumento anterior se puede simplificar, obviando la necesidad deintroducir constantes explıcitas tales como b y c, cuando nos sentimoscomodos con la nocion de una instruccion barometro.

Aquı, es natural tomar la prueba del ciclo mas interno T [j] < minxcomo barometro y contar el numero exacto de veces que se ejecuta.Esto es una buena medida del tiempo total del algoritmo ya queninguno de los ciclos se puede ejecutar cero veces (en cuyo caso elcontrol del ciclo podrıa consumir mas tiempo que el barometro).

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 36 / 41

Page 116: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Uso de un barometro XVI

El argumento anterior se puede simplificar, obviando la necesidad deintroducir constantes explıcitas tales como b y c, cuando nos sentimoscomodos con la nocion de una instruccion barometro.

Aquı, es natural tomar la prueba del ciclo mas interno T [j] < minxcomo barometro y contar el numero exacto de veces que se ejecuta.

Esto es una buena medida del tiempo total del algoritmo ya queninguno de los ciclos se puede ejecutar cero veces (en cuyo caso elcontrol del ciclo podrıa consumir mas tiempo que el barometro).

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 36 / 41

Page 117: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Uso de un barometro XVI

El argumento anterior se puede simplificar, obviando la necesidad deintroducir constantes explıcitas tales como b y c, cuando nos sentimoscomodos con la nocion de una instruccion barometro.Aquı, es natural tomar la prueba del ciclo mas interno T [j] < minxcomo barometro y contar el numero exacto de veces que se ejecuta.

Esto es una buena medida del tiempo total del algoritmo ya queninguno de los ciclos se puede ejecutar cero veces (en cuyo caso elcontrol del ciclo podrıa consumir mas tiempo que el barometro).

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 36 / 41

Page 118: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Uso de un barometro XVII

Se ve facilmente que el numero de veces que la prueba es ejecutada es:

n−1∑i=1

n∑j=i+1

1 =n−1∑i=1

(n− i)

=n−1∑k=1

k

= n(n− 1)/2.

Ası el numero de veces que la instruccion barometro se ejecuta esta enΘ(n2), lo cual da automaticamente el tiempo de ejecucion de todo elalgoritmo.

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 37 / 41

Page 119: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Uso de un barometro XVII

Se ve facilmente que el numero de veces que la prueba es ejecutada es:

n−1∑i=1

n∑j=i+1

1 =n−1∑i=1

(n− i)

=n−1∑k=1

k

= n(n− 1)/2.

Ası el numero de veces que la instruccion barometro se ejecuta esta enΘ(n2), lo cual da automaticamente el tiempo de ejecucion de todo elalgoritmo.

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 37 / 41

Page 120: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Uso de un barometro XVII

Se ve facilmente que el numero de veces que la prueba es ejecutada es:

n−1∑i=1

n∑j=i+1

1 =n−1∑i=1

(n− i)

=n−1∑k=1

k

= n(n− 1)/2.

Ası el numero de veces que la instruccion barometro se ejecuta esta enΘ(n2), lo cual da automaticamente el tiempo de ejecucion de todo elalgoritmo.

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 37 / 41

Page 121: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Uso de un barometro XVII

Se ve facilmente que el numero de veces que la prueba es ejecutada es:

n−1∑i=1

n∑j=i+1

1 =n−1∑i=1

(n− i)

=n−1∑k=1

k

= n(n− 1)/2.

Ası el numero de veces que la instruccion barometro se ejecuta esta enΘ(n2), lo cual da automaticamente el tiempo de ejecucion de todo elalgoritmo.

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 37 / 41

Page 122: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Uso de un barometro XVII

Se ve facilmente que el numero de veces que la prueba es ejecutada es:

n−1∑i=1

n∑j=i+1

1 =n−1∑i=1

(n− i)

=n−1∑k=1

k

= n(n− 1)/2.

Ası el numero de veces que la instruccion barometro se ejecuta esta enΘ(n2), lo cual da automaticamente el tiempo de ejecucion de todo elalgoritmo.

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 37 / 41

Page 123: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Uso de un barometro XVIII

Note que la sumatorian−1∑i=1

(n− i)

se simplifico haciendo el cambio de variable k = (n− i), para obtener:∑k

falta calcular los lımites de esta ultima sumatoria, para ello es suficientesustituir los lımites de la sumatoria original, ası cuando i = 1 el lımitesuperior es k = n− 1 y cuando i = n− 1 el lımite inferior esk = n− (n− 1) = 1, por ello se obtuvo:

n−1∑k=1

k = n(n− 1)/2.

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 38 / 41

Page 124: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Uso de un barometro XVIII

Note que la sumatorian−1∑i=1

(n− i)

se simplifico haciendo el cambio de variable k = (n− i), para obtener:∑k

falta calcular los lımites de esta ultima sumatoria, para ello es suficientesustituir los lımites de la sumatoria original, ası cuando i = 1 el lımitesuperior es k = n− 1 y cuando i = n− 1 el lımite inferior esk = n− (n− 1) = 1, por ello se obtuvo:

n−1∑k=1

k = n(n− 1)/2.

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 38 / 41

Page 125: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Uso de un barometro XVIII

Note que la sumatorian−1∑i=1

(n− i)

se simplifico haciendo el cambio de variable k = (n− i), para obtener:∑k

falta calcular los lımites de esta ultima sumatoria, para ello es suficientesustituir los lımites de la sumatoria original, ası cuando i = 1 el lımitesuperior es k = n− 1 y cuando i = n− 1 el lımite inferior esk = n− (n− 1) = 1, por ello se obtuvo:

n−1∑k=1

k = n(n− 1)/2.

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 38 / 41

Page 126: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Uso de un barometro XIX

Lo cual evita hacer el siguiente desarrollo:

n−1∑i=1

(n− i) =n−1∑i=1

n−n−1∑i=1

i

= nn−1∑i=1

1−n−1∑i=1

i

= n(n− 1)− n(n− 1)/2= n(n− 1)/2

.

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 39 / 41

Page 127: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Uso de un barometro XIX

Lo cual evita hacer el siguiente desarrollo:

n−1∑i=1

(n− i) =n−1∑i=1

n−n−1∑i=1

i

= nn−1∑i=1

1−n−1∑i=1

i

= n(n− 1)− n(n− 1)/2= n(n− 1)/2

.

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 39 / 41

Page 128: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Uso de un barometro XIX

Lo cual evita hacer el siguiente desarrollo:

n−1∑i=1

(n− i) =n−1∑i=1

n−n−1∑i=1

i

= nn−1∑i=1

1−n−1∑i=1

i

= n(n− 1)− n(n− 1)/2= n(n− 1)/2

.

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 39 / 41

Page 129: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Uso de un barometro XIX

Lo cual evita hacer el siguiente desarrollo:

n−1∑i=1

(n− i) =n−1∑i=1

n−n−1∑i=1

i

= nn−1∑i=1

1−n−1∑i=1

i

= n(n− 1)− n(n− 1)/2

= n(n− 1)/2

.

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 39 / 41

Page 130: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Uso de un barometro XIX

Lo cual evita hacer el siguiente desarrollo:

n−1∑i=1

(n− i) =n−1∑i=1

n−n−1∑i=1

i

= nn−1∑i=1

1−n−1∑i=1

i

= n(n− 1)− n(n− 1)/2= n(n− 1)/2.

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 39 / 41

Page 131: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Ejercicios I

1 Obtenga una ecuacion de recurrencia para el siguiente algoritmo.procedure Hanoi(m, i, j)1 if m > 02 then Hanoi(m− 1, i, 6− i− j)3 write i “→” j4 Hanoi(m− 1, 6− i− j, j)

2 Obtenga una ecuacion de recurrencia para el siguiente algoritmo.procedure DC(n)1 if n ≤ 12 then return n3 for i← 1 to 84 do DC(n/2)5 for i← 1 to n3

6 do dummy ← 0

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 40 / 41

Page 132: Análisis de Algoritmos Ialeteya.cs.buap.mx/~jlavalle/ada/7 Analysis of Algorithms I.pdf · El an´alisis de algoritmos recursivos usualmente es directo, al menos hasta cierto punto

Ejercicios II

3 Diga el tiempo exacto que toma el siguiente algoritmo, sin utilizar latecnica del barometro y utilizando la tecnica del barometro.

procedure Insert(T [1 . . . n])1 for i← 2 to n2 do x← T [i]3 j ← i− 14 while j > 0 and x < T [j]5 do T [j + 1]← T [j]6 j ← j − 17 T [j + 1]← x

Jose de Jesus Lavalle Martınez (FCC-BUAP) Analisis de Algoritmos I Otono 2020 41 / 41