SlideShare una empresa de Scribd logo
1 de 15
Análisis de
 Algoritmos




                   Pablo Vargas Boccanedes

 Análisis de Algoritmos. Término I 2009. Ing. Carlos Jordán Autor: Pablo Vargas B.
TAREA 1




  Guayaquil, Julio de 2009




Análisis de Algoritmos. Término I 2009. Ing. Carlos Jordán Autor: Pablo Vargas B.
Introducción



     En esta sección analizaremos algoritmos de ordenamiento y
búsqueda, para lo cual calcularemos sus tiempos de ejecución en
función del tamaño de las instancias.



      Entre los objetivos tenemos como más importante la
interpretación de los resultados y la comprensión de una mejor
manera los mismos.



      Otro de los objetivos importantes es presentar los métodos que
nos ayudarán a elegir entre algoritmos de diferente implementación
en función de nuestro medio, mediante el análisis de los tiempos de
ejecución y utilización de memoria que son principalmente los
limitantes en los ordenadores y equipos donde correrán dichos
algoritmos.




         Análisis de Algoritmos. Término I 2009. Ing. Carlos Jordán Autor: Pablo Vargas B.
Teoría

      Para la resolución de los problemas propuestos utilizaremos los
métodos Algebraico, que consiste básicamente en desarrollar varios
términos de la ecuación de tiempo hasta encontrar un patrón de
repetición y ejecutar una solución, Iterativo que consiste como el
algebraico en desarrollar términos pero de una forma gráfica
ayudándonos con un árbol binario.


     Para expresar las soluciones nos ayudaremos de las Notaciones
Asintóticas, como son O, Ω y θ, con sus definiciones que detallaré a
continuación:


               f(n) є O(g(n))                  c,n0 n≥ n0 f(n)≤cg(n)

               f(n) є Ω(g(n))                  c,n0 n≥ n0 f(n)≥cg(n)

        f(n) є θ(g(n))               c1,c2,n0 n≥ n0 c1g(n) ≤f(n)≤c2g(n)



TEOREMA:

          f(n) є Ω(g(n)) ^ f(n) є Ω(g(n))                          f(n) є θ(g(n))



         Análisis de Algoritmos. Término I 2009. Ing. Carlos Jordán Autor: Pablo Vargas B.
EJERCICIOS
1.- Escriba el pseudocódigo para el algoritmo que ordena una secuencia por selección.
Discuta por qué es correcto este algoritmo. Exprese en notación Ω los tiempos de ejecución
para el peor y para el mejor de los casos de este algoritmo.

Solución:

     para i=1 hasta n-1
           minimo = i;
           para j=i+1 hasta n
                 si lista[j] < lista[minimo] entonces
                        minimo=j
                 fin si
           fin para
           intercambiar (lista[i], lista[minimo]
     fin para

Entonces, tenemos que se repite n-1 veces el lazo interno que consiste en n repeticiones,
rápidamente tenemos la idea de lo que será la solución considerando la operación básica
más significativa que es la de comparación.

     t(n) = n + t(n-1)
     t(n) = (n-1) + (n-2) + (n-3)+ .. + 3 + 2 + 1
     t(n) = (        )

De aquí suponemos que t(n) є Ө (         ) entonces debemos demostrarlo,

      (       )єӨ(      )        c1,c2,n0 n≥ n0 c1      ≤ (             ) ≤c2

      (       ) ≤ c1                                                (           ) ≥ c2
          -    ≤ c1                                    -                         ≥ c2
     -     ≤(                                      -    ≥(
     - ≤(                                          - ≥(
       =1   =1 d!                                    =     =1 d!
Como encontramos los valores de las constantes damos como demostrado el resultado
propuesto.

Para este ejercicio y dado que solo consideramos la operación de comparación como
principal, el tiempo en el mejor, peor y promedio de los casos es el mismo.


            Análisis de Algoritmos. Término I 2009. Ing. Carlos Jordán Autor: Pablo Vargas B.
2.- Considere el algoritmo de búsqueda secuencial (o lineal) cuando la secuencia no
necesariamente esta ordenada. En promedio, ¿Cuántos elementos de la secuencia necesitan
ser comparados?, suponga que el elemento buscado podría ser cualquiera con la misma
probabilidad. ¿Cuántas comparaciones son necesarias en el peor de los casos? Exprese los
tiempos de ejecución promedio y en el peor de los casos de este algoritmo empleando la
notación-teta.

Solución:

     El tiempo promedio estará dado por el producto de la suma de los casos con su
probabilidad.

     t(n)=Pkt(k)                                             D!
     t(n)=Pk                                                  c,n0 n≥ n0 n ≤ cn
     t(n)=                                                   n ≤ cn
     t(n)= [        ]                                        c=1 n=1 d!
     t(n)=                                                     c,n0 n≥ n0 n        cn
     t(n) ≤ n                                                c= n=1 d!

     t(n) є Ө (n)                                            t esperado є O (n)

      En el peor de los casos, esto es cuando el elemento buscado se encuentra en la última
posición o no se encuentra, tendríamos que hacer cuantas comparaciones como elementos
tengamos, esto es n comparaciones.

     t(n) = n comparaciones

     t(n) є Ө(n)                                             D!
                                                              c,n0 n≥ n0 n ≤ cn
                                                             n ≤ cn
                                                             c=1 n=1 d!
                                                              c,n0 n≥ n0 n cn
                                                             c= n=1 d!




             Análisis de Algoritmos. Término I 2009. Ing. Carlos Jordán Autor: Pablo Vargas B.
3.- Con respecto al problema de buscar al elemento x en una secuencia A de longitud n,
note que si la secuencia esta ordenada y comparamos x con el elemento en la mitad de la
secuencia, la búsqueda de x en la secuencia se reduce a la búsqueda de x en una secuencia
ordenada de tamaño aproximadamente igual a la mitad del tamaño de A. El algoritmo de
búsqueda binaria repite este procedimiento, dividiendo cada vez la porción restante de la
secuencia por 2. Discuta lo correcto de esta solución. Escriba el pseudocódigo de este
procedimiento de búsqueda, ya sea en la forma recursiva o iterativa. Argumente a favor de
la hipótesis de que el tiempo de ejecución de este algoritmo en el peor de los casos es
teta(lg n). (lg n es el logaritmo base 2 de n)


Solución:

       //Implementación recursiva
       static int binSearch(double v[], int izq,int der,double buscado){
                int centro = (izq+der)/2;
                if(izq>der) return -1;
                else if (buscado==v[centro]) return v[centro];
                else if (buscado<v[centro]) return binSearch(v, izq, centro-1,buscado);
                else return binSearch(v,centro+1,der,buscado);
                }


        Si dividimos la secuencia ordenada por la mitad, comparar con el elemento del
medio y saber su relación de desigualdad, el problema se traducirá a resolver un problema
del mismo tipo pero de la mitad del tamaño original y así hasta tener un solo elemento que
será o no la respuesta.


       La partición será en       pero para grandes valores de n, hacemos la aproximación de
               por lo tanto tenemos que:



        En el peor de los casos, cuando el elemento buscado se encuentra en un extremo, es
decir es el menor o el mayor de la secuencia, tendremos:




            Análisis de Algoritmos. Término I 2009. Ing. Carlos Jordán Autor: Pablo Vargas B.
suma de niveles n
                                               0                          n

                                                    suma de niveles n/2
                                               1                         n/2

                                                    suma de niveles n/4
                                               2                         n/4

                                              suma de niveles n/2^(k-1)
                                              ...                         ...

                                                     suma de niveles 1
                                               k                          1




El tiempo en el peor de los casos, será dado por la suma de los elementos del último nivel
es decir, en este caso, k*1=k

       t(n)=k           en el último nivel, n/2^k=1 de aquí, k=lg(n)
       t(n)=lg(n)

       t(n) є Ө (lgn)                                         D!
                                                                c,n0 n≥ n0 lgn ≤ clgn
                                                              lgn ≤ clgn
                                                              c=1 n=1 d!
                                                                c,n0 n≥ n0 lgn clgn
                                                              c= n=1 d!

El mejor de los casos de en este algoritmo sería cuando el elemento buscado se encuentra
en el lugar por donde se ejecuta la partición, y el tiempo sería constante Ө(1)




             Análisis de Algoritmos. Término I 2009. Ing. Carlos Jordán Autor: Pablo Vargas B.
4.- Diga si la hipótesis 2n+1 = O(2n) es verdadera. Diga si 22n = O(2n) lo es.


Solución:

       2n+1 = O(2n) es verdadera

Demostración!

         c,n0 n≥ n0 2n+1 ≤ c2n

       2*2n≤c2n

       2≤c

       c=2 n=1 d!

Para cualquier valor de n, con una constante de c > 2, será válida la expresión.

       22n = O(2n) falso

Demostración!

         c,n0 n≥ n0 22n ≤ c2n

       22n ≤ c2n

       2n ≤ c

Dado que tenemos una función exponencial que no puede tomar valores de cero ni menor
que dicho valor, para grandes valores de n será siempre mayor que un valor constante, por
lo tanto la hipótesis es no válida.




             Análisis de Algoritmos. Término I 2009. Ing. Carlos Jordán Autor: Pablo Vargas B.
5.- Demuestre que el tiempo de ejecución del un algoritmo es Θ(g(n)) si y solo si el tiempo
de ejecución del peor de los casos es O(g(n)) y del mejor de los casos es Ω(g(n)).

Solución: t(n) Ө(g(n))

       Para demostrar partiremos de los datos que nos da el problema, luego plantearemos
nuestro destino, y por métodos algebraicos intentaremos llegar a una expresión equivalente.

Traduciendo el enunciado:

       t(n) Ө(g(n))         tp(n)    O(g(n)) ^ tm(n) є Ω(g(n))

                            tp(n)≤cg(n) ^ tm(n)≥cg(n)

Sabemos que el tiempo en el mejor de los casos es una función menor a la del tiempo
promedio, y que la función de tiempo en el peor de los casos es mayor a la del tiempo
promedio, así, traduciendo lo que escribimos:

       tm(n) ≤ t(n) ≤ tp(n)

Luego, escribiendo esto en notación asintótica, tenemos que:

       t(n)   O(tp(n)) ^ t(n)        Ω(tm(n))

Combinando: t(n) ≤ tp(n) ≤ cg(n) ^ t(n) ≥tm(n) ≥cg(n)

               t(n)≤cg(n) ^ t(n) ≥cg(n)

               t(n) O(g(n))^t(n) Ω(g(n))

Por el teorema que se describe en la teoría,

f(n) є Ω(g(n)) ^ f(n) є Ω(g(n))         f(n) є θ(g(n))

Entonces llegamos a t(n) Ө (g(n)) que fue la suposición inicial y queda demostrado.




              Análisis de Algoritmos. Término I 2009. Ing. Carlos Jordán Autor: Pablo Vargas B.
6.- Sea A[1 ... n] una secuencia de n números distintos. Se define como inversión de A al
par (i, j) tal que siendo i<j, A[i] > A[j].

       Liste las cinco inversiones de la secuencia 2, 3, 8, 6, 1
       Que secuencia de elementos tomados del conjunto {1, 2, …, n} tiene el mayor
       número de inversiones. ¿Cuántas tiene?
       ¿Cuál es la relación entre el tiempo de ejecución del algoritmo que ordena por
       inserción y el número de inversiones en la secuencia de entrada? Justifique su
       respuesta.



Solución:

                 2, 3, 8, 6, 1: (2,1), (3,1), (8,1), (6,1),(8,6)


El conjunto con mayor número de inversiones será aquel que esté ordenado de manera
descendente, y serán las siguientes inversiones:



       (n-1)+(n-2)+(n-3)+(n-4)+… +2+1 // (n-1) términos

       (n-1)n-(1+2+3+… +(n-1))
       (n-1)n – (1+2+3+… + n) +1
              +1 –
                 +1 -


            -    +1     inversiones.



Ambos algoritmos tienen el mismo tiempo de ejecución O ( , que en este caso está dado
por número de comparaciones, el algoritmo de ordenamiento por inserción, Insertion Sort,
hace las mismas comparaciones entre todos los elementos del conjunto recorriéndolo de
izquierda a derecha.




                Análisis de Algoritmos. Término I 2009. Ing. Carlos Jordán Autor: Pablo Vargas B.
7.- Demuestre que lg(n!) = Ө(n lgn) y que n! = o(nn)


Solución:


       lg(n!) = Ө(n lgn)

       lg(n!) є θ(nlgn)         c1,c2,n0 n≥ n0 c1nlgn ≤lgn≤c2nlgn


lg(n!) ≤ cnlgn                                              lg(n!) ≥ cnlgn
lg(n!) ≤ lg                                                 lg(n!) ≥ lg
n! ≤               c=1                                      n! ≥
n(n-1)(n-2)(……)(2)(1) ≤ n*n*n*n*…*n                         n(n-1)(n-2)(..)(2)(1) ≥ n*n*n*n*…*n
(n términos)       (n términos)                               (n términos)           (n/2 términos)
                                                                                                  ≥
Término a término,        es mayor.                         (                                         )≥1
                                     (                                   )≥(                     +… +       )

                                             Término a término el lado izquierdo es mayor




       n! = o(nn)

       n!   o(nn) Ro={n!,        |                   = 0}


                                                         = 0,

       Dado que el elemento denominador es mayor que el numerador, para valores muy
grandes de n, el límite tenderá a cero. Con lo que demostramos que n! o(nn)




             Análisis de Algoritmos. Término I 2009. Ing. Carlos Jordán Autor: Pablo Vargas B.
8.- Para cada una de las siguientes expresiones, diga si es verdadera o falsa y demuestre su
respuesta:
        n8 = Ω(n9)
        O(f(n)) * O(g(n)) = O(f(n) * g(n))
        f(n) = O(g(n)) implica que 2f(n) = O(2g(n))
        C(n, c) = O(nc), donde C(n, c) es el numero de combinaciones sin repetición c de n.
        C(n, c) = Ω(nc)




       n8    Ω(n9) verdadero

        c,n0 n≥ n0 n8       c n9
        -1
       n ≥c
       c= n0=1



       O(f(n)) * O(g(n)) = O(f(n) * g(n)) verdadero

       cf(n) es una función menor que f(n) por lo tanto cf(n) O(f(n)) ; c<1
       sg(n) es una función menor que g(n) por lo tanto sg(n) O(g(n)); s<1

       cf(n)*sg(n)= O(f(n) * g(n))
       (c*s)(f(n)*g(n)) = O(f(n) * g(n))

Basándonos en el teorema que dice que “La multiplicación de 2 números menores que 1
devuelve otro valor menor que 1”, podemos asegurar que k es menor que 1, que s y que c.

       k(f(n)*g(n)) < f(n)*g(n)         k(f(n)*g(n))      O(f(n) * g(n))

Reescribiendo como planteamos al principio:

       O(f(n)) * O(g(n)) = O(f(n) * g(n))




             Análisis de Algoritmos. Término I 2009. Ing. Carlos Jordán Autor: Pablo Vargas B.
f(n) = O(g(n)) implica que 2f(n) = O(2g(n)) verdadero

      En la primera parte tenemos que:          c,n0 n≥ n0 f(n)≤ cg(n) esto implica que
      f(n)≤g(n)

      En la segunda, que:       c,n0 n≥ n0 2f(n) ≤ c2g(n)

      Trabajaremos con la segunda parte y trataremos de llegar a la primera.

      2f(n) ≤ c2g(n)
      2f(n)-g(n) ≤ c
      f(n)-g(n) ≤ lg(c )
      Si c=1,
      f(n) ≤ g(n)

       C(n, c) = O(nc), donde C(n, c) es el numero de combinaciones sin repetición c de n.

                                   O(nc)                            verdadero


        c,n0 n≥ n0                            ≤ s nc


                                              ≤ s término menor que uno ≤ s                 s=1

En el numerador tenemos c elementos, como hay una substracción, el numerador es
<< n, al agregarle al denominador un nc , éste se hace bastante mayor para grandes
valores de n, al suceder esto, el término se hace menor o igual que 1 y este es nuestro
valor para s y damos como demostrado el ejercicio.


       C(n, c) = Ω(nc)     falso
                                   c,n0 n≥ n0                             ≥ s nc


                                                                    ≥s


No existen valores de s para validar la inecuación, por lo que declaramos el enunciado
como falso. No existen los valores porque n se hará cero con valores menores que c, y
con n=c, la expresión tiende a cero valor que s no puede tomar.


            Análisis de Algoritmos. Término I 2009. Ing. Carlos Jordán Autor: Pablo Vargas B.
CONCLUSIÓN


Hemos revisado conceptos de Notaciones Asintóticas y su utilidad,
además resolvimos problemas por los métodos antes mencionados
como el Algebraico e Iterativo, ya podemos analizar cualquier
algoritmo recursivo o iterativo que pueda ser resuelto por dichos
métodos


Los ejercicios 7 y 8 son los de mayor dificultad en esta tarea, el
ejercicio 8 incluye gran parte de lo revisado hasta este momento en
el curso.




         Análisis de Algoritmos. Término I 2009. Ing. Carlos Jordán Autor: Pablo Vargas B.

Más contenido relacionado

La actualidad más candente

Dualidad poincaré (Efraín Vega)
Dualidad poincaré (Efraín Vega)Dualidad poincaré (Efraín Vega)
Dualidad poincaré (Efraín Vega)Efrain Vega
 
Analisis de señales discretas en t
Analisis de señales discretas en tAnalisis de señales discretas en t
Analisis de señales discretas en tkinetic15
 
Coleccion.2020 borrador
Coleccion.2020 borradorColeccion.2020 borrador
Coleccion.2020 borradorIndependiente
 
Ecuacion diferencial lineal
Ecuacion diferencial linealEcuacion diferencial lineal
Ecuacion diferencial linealLuis Diaz
 
5 Aplicaciones De La Derivada
5  Aplicaciones De La Derivada5  Aplicaciones De La Derivada
5 Aplicaciones De La DerivadaERICK CONDE
 
Resumen Complejidad Computacional y de Algoritmos
Resumen Complejidad Computacional y de AlgoritmosResumen Complejidad Computacional y de Algoritmos
Resumen Complejidad Computacional y de Algoritmosmarshalleitor
 
Matemática discreta
Matemática discretaMatemática discreta
Matemática discretaJose Ruiz
 
(Sin soluiciones) s3 afnd y afd
(Sin soluiciones) s3   afnd y afd(Sin soluiciones) s3   afnd y afd
(Sin soluiciones) s3 afnd y afddwonga
 
Aplicaciones de las_ecuaciones_diferenciales_2012
Aplicaciones de las_ecuaciones_diferenciales_2012Aplicaciones de las_ecuaciones_diferenciales_2012
Aplicaciones de las_ecuaciones_diferenciales_2012Christopher Ch
 
Trabajo integrador final calculo diferencial ups
Trabajo integrador final calculo diferencial upsTrabajo integrador final calculo diferencial ups
Trabajo integrador final calculo diferencial upsSCOUTS ECUADOR
 

La actualidad más candente (20)

Dualidad poincaré (Efraín Vega)
Dualidad poincaré (Efraín Vega)Dualidad poincaré (Efraín Vega)
Dualidad poincaré (Efraín Vega)
 
Analisis de señales discretas en t
Analisis de señales discretas en tAnalisis de señales discretas en t
Analisis de señales discretas en t
 
Implicit
ImplicitImplicit
Implicit
 
Coleccion.2020 borrador
Coleccion.2020 borradorColeccion.2020 borrador
Coleccion.2020 borrador
 
Enfoques
EnfoquesEnfoques
Enfoques
 
Complejidad Computacional
Complejidad ComputacionalComplejidad Computacional
Complejidad Computacional
 
metodos numericos
metodos numericosmetodos numericos
metodos numericos
 
Ecuacion diferencial lineal
Ecuacion diferencial linealEcuacion diferencial lineal
Ecuacion diferencial lineal
 
Cadenas de markov
Cadenas de markovCadenas de markov
Cadenas de markov
 
33 col2 301405
33 col2 30140533 col2 301405
33 col2 301405
 
5 Aplicaciones De La Derivada
5  Aplicaciones De La Derivada5  Aplicaciones De La Derivada
5 Aplicaciones De La Derivada
 
Resumen Complejidad Computacional y de Algoritmos
Resumen Complejidad Computacional y de AlgoritmosResumen Complejidad Computacional y de Algoritmos
Resumen Complejidad Computacional y de Algoritmos
 
Ep1 s
Ep1 sEp1 s
Ep1 s
 
Matemática discreta
Matemática discretaMatemática discreta
Matemática discreta
 
Razonesafines
RazonesafinesRazonesafines
Razonesafines
 
(Sin soluiciones) s3 afnd y afd
(Sin soluiciones) s3   afnd y afd(Sin soluiciones) s3   afnd y afd
(Sin soluiciones) s3 afnd y afd
 
Hamilton Lagrange
Hamilton LagrangeHamilton Lagrange
Hamilton Lagrange
 
Ordenamiento
OrdenamientoOrdenamiento
Ordenamiento
 
Aplicaciones de las_ecuaciones_diferenciales_2012
Aplicaciones de las_ecuaciones_diferenciales_2012Aplicaciones de las_ecuaciones_diferenciales_2012
Aplicaciones de las_ecuaciones_diferenciales_2012
 
Trabajo integrador final calculo diferencial ups
Trabajo integrador final calculo diferencial upsTrabajo integrador final calculo diferencial ups
Trabajo integrador final calculo diferencial ups
 

Destacado

Analisis de Redes Electricas I (9)
Analisis de Redes Electricas I (9)Analisis de Redes Electricas I (9)
Analisis de Redes Electricas I (9)Velmuz Buzz
 
Analisis de Redes Electricas I (2)
Analisis de Redes Electricas I (2)Analisis de Redes Electricas I (2)
Analisis de Redes Electricas I (2)Velmuz Buzz
 
Calculo de transformadores
Calculo de transformadoresCalculo de transformadores
Calculo de transformadorespapacitorico
 
Transformador Asignacion 5
Transformador Asignacion 5Transformador Asignacion 5
Transformador Asignacion 5carola3011
 
Analisis de Redes Electricas I (6)
Analisis de Redes Electricas I (6)Analisis de Redes Electricas I (6)
Analisis de Redes Electricas I (6)Velmuz Buzz
 
Analisis Redes Electricas I
Analisis Redes Electricas IAnalisis Redes Electricas I
Analisis Redes Electricas IVelmuz Buzz
 
Analisis de Redes Electricas I (4)
Analisis de Redes Electricas I (4)Analisis de Redes Electricas I (4)
Analisis de Redes Electricas I (4)Velmuz Buzz
 
Proyecto física electromágnetica
Proyecto física electromágneticaProyecto física electromágnetica
Proyecto física electromágneticaleomalo
 

Destacado (10)

Analisis de Redes Electricas I (9)
Analisis de Redes Electricas I (9)Analisis de Redes Electricas I (9)
Analisis de Redes Electricas I (9)
 
Analisis de Redes Electricas I (2)
Analisis de Redes Electricas I (2)Analisis de Redes Electricas I (2)
Analisis de Redes Electricas I (2)
 
Calculo de transformadores
Calculo de transformadoresCalculo de transformadores
Calculo de transformadores
 
Transformador Asignacion 5
Transformador Asignacion 5Transformador Asignacion 5
Transformador Asignacion 5
 
Transformers
TransformersTransformers
Transformers
 
Analisis de Redes Electricas I (6)
Analisis de Redes Electricas I (6)Analisis de Redes Electricas I (6)
Analisis de Redes Electricas I (6)
 
Analisis Redes Electricas I
Analisis Redes Electricas IAnalisis Redes Electricas I
Analisis Redes Electricas I
 
Analisis de Redes Electricas I (4)
Analisis de Redes Electricas I (4)Analisis de Redes Electricas I (4)
Analisis de Redes Electricas I (4)
 
Proyecto física electromágnetica
Proyecto física electromágneticaProyecto física electromágnetica
Proyecto física electromágnetica
 
Manual de transformadores
Manual de transformadoresManual de transformadores
Manual de transformadores
 

Similar a Analisis de Algoritmos tarea 1

Similar a Analisis de Algoritmos tarea 1 (20)

Mpinning Gy Alg9(Conteo)
Mpinning Gy Alg9(Conteo)Mpinning Gy Alg9(Conteo)
Mpinning Gy Alg9(Conteo)
 
Complejidad de Algoritmos
Complejidad de AlgoritmosComplejidad de Algoritmos
Complejidad de Algoritmos
 
Informe
InformeInforme
Informe
 
Divide y Venceras
Divide y VencerasDivide y Venceras
Divide y Venceras
 
2 eficiencia
2 eficiencia2 eficiencia
2 eficiencia
 
Practica Programacion Ii 2003 2004
Practica Programacion Ii 2003 2004Practica Programacion Ii 2003 2004
Practica Programacion Ii 2003 2004
 
333 tecnicas de conteo)
333 tecnicas de conteo)333 tecnicas de conteo)
333 tecnicas de conteo)
 
Series1resueltas
Series1resueltasSeries1resueltas
Series1resueltas
 
U 1 conjuntos y probabilidad (2)
U 1 conjuntos y probabilidad (2)U 1 conjuntos y probabilidad (2)
U 1 conjuntos y probabilidad (2)
 
Teoría De La Complejidad Algoritmica
Teoría De La Complejidad AlgoritmicaTeoría De La Complejidad Algoritmica
Teoría De La Complejidad Algoritmica
 
Combinatoria
CombinatoriaCombinatoria
Combinatoria
 
Recurrencias
RecurrenciasRecurrencias
Recurrencias
 
Fundamentos Divide Y Venceras
Fundamentos Divide Y VencerasFundamentos Divide Y Venceras
Fundamentos Divide Y Venceras
 
Sucesiones
SucesionesSucesiones
Sucesiones
 
Taller 1 mec_est
Taller 1 mec_estTaller 1 mec_est
Taller 1 mec_est
 
parcial
parcialparcial
parcial
 
Probabilidad
ProbabilidadProbabilidad
Probabilidad
 
INF_JARCH
INF_JARCHINF_JARCH
INF_JARCH
 
Sucesiones, inducción y sumatorias
Sucesiones, inducción y sumatoriasSucesiones, inducción y sumatorias
Sucesiones, inducción y sumatorias
 
Mt 4 díptico probabilidad y estadística
Mt 4 díptico probabilidad y estadísticaMt 4 díptico probabilidad y estadística
Mt 4 díptico probabilidad y estadística
 

Más de Velmuz Buzz

Ecuaciones Diferenciales de 1er Orden
Ecuaciones Diferenciales de 1er OrdenEcuaciones Diferenciales de 1er Orden
Ecuaciones Diferenciales de 1er OrdenVelmuz Buzz
 
Lenguajes de Programacion
Lenguajes de ProgramacionLenguajes de Programacion
Lenguajes de ProgramacionVelmuz Buzz
 
Capa de Aplicacion
Capa de AplicacionCapa de Aplicacion
Capa de AplicacionVelmuz Buzz
 
Capa de Transporte
Capa de TransporteCapa de Transporte
Capa de TransporteVelmuz Buzz
 
Estructura Organizacional
Estructura OrganizacionalEstructura Organizacional
Estructura OrganizacionalVelmuz Buzz
 
Inteligencia artificial sistema experto
Inteligencia artificial sistema expertoInteligencia artificial sistema experto
Inteligencia artificial sistema expertoVelmuz Buzz
 
Electronica transistores
Electronica transistoresElectronica transistores
Electronica transistoresVelmuz Buzz
 
Electronica rectificadores
Electronica rectificadoresElectronica rectificadores
Electronica rectificadoresVelmuz Buzz
 
Electronica polarizacion
Electronica polarizacionElectronica polarizacion
Electronica polarizacionVelmuz Buzz
 
Electronica polarizacion tipo h
Electronica polarizacion tipo hElectronica polarizacion tipo h
Electronica polarizacion tipo hVelmuz Buzz
 
Electronica introduccion y repaso
Electronica introduccion y repasoElectronica introduccion y repaso
Electronica introduccion y repasoVelmuz Buzz
 
Electronica funcion de transferencia
Electronica funcion de transferenciaElectronica funcion de transferencia
Electronica funcion de transferenciaVelmuz Buzz
 
Electronica ejercicios
Electronica ejerciciosElectronica ejercicios
Electronica ejerciciosVelmuz Buzz
 
Electronica aplicaciones de diodos
Electronica aplicaciones de diodosElectronica aplicaciones de diodos
Electronica aplicaciones de diodosVelmuz Buzz
 
Electronica polarizacion del fet
Electronica  polarizacion del fetElectronica  polarizacion del fet
Electronica polarizacion del fetVelmuz Buzz
 
Electronica modelaje de transitores bipolares
Electronica  modelaje de transitores bipolaresElectronica  modelaje de transitores bipolares
Electronica modelaje de transitores bipolaresVelmuz Buzz
 
Electronica analisis a pequeña señal fet
Electronica  analisis a pequeña señal fetElectronica  analisis a pequeña señal fet
Electronica analisis a pequeña señal fetVelmuz Buzz
 

Más de Velmuz Buzz (20)

Ecuaciones Diferenciales de 1er Orden
Ecuaciones Diferenciales de 1er OrdenEcuaciones Diferenciales de 1er Orden
Ecuaciones Diferenciales de 1er Orden
 
Ruby
Ruby Ruby
Ruby
 
Lenguajes de Programacion
Lenguajes de ProgramacionLenguajes de Programacion
Lenguajes de Programacion
 
Capa de Aplicacion
Capa de AplicacionCapa de Aplicacion
Capa de Aplicacion
 
Capa de Transporte
Capa de TransporteCapa de Transporte
Capa de Transporte
 
Capa Red
Capa RedCapa Red
Capa Red
 
Capa Enlace
Capa Enlace Capa Enlace
Capa Enlace
 
Estructura Organizacional
Estructura OrganizacionalEstructura Organizacional
Estructura Organizacional
 
Inteligencia artificial sistema experto
Inteligencia artificial sistema expertoInteligencia artificial sistema experto
Inteligencia artificial sistema experto
 
Electronica transistores
Electronica transistoresElectronica transistores
Electronica transistores
 
Electronica rectificadores
Electronica rectificadoresElectronica rectificadores
Electronica rectificadores
 
Electronica polarizacion
Electronica polarizacionElectronica polarizacion
Electronica polarizacion
 
Electronica polarizacion tipo h
Electronica polarizacion tipo hElectronica polarizacion tipo h
Electronica polarizacion tipo h
 
Electronica introduccion y repaso
Electronica introduccion y repasoElectronica introduccion y repaso
Electronica introduccion y repaso
 
Electronica funcion de transferencia
Electronica funcion de transferenciaElectronica funcion de transferencia
Electronica funcion de transferencia
 
Electronica ejercicios
Electronica ejerciciosElectronica ejercicios
Electronica ejercicios
 
Electronica aplicaciones de diodos
Electronica aplicaciones de diodosElectronica aplicaciones de diodos
Electronica aplicaciones de diodos
 
Electronica polarizacion del fet
Electronica  polarizacion del fetElectronica  polarizacion del fet
Electronica polarizacion del fet
 
Electronica modelaje de transitores bipolares
Electronica  modelaje de transitores bipolaresElectronica  modelaje de transitores bipolares
Electronica modelaje de transitores bipolares
 
Electronica analisis a pequeña señal fet
Electronica  analisis a pequeña señal fetElectronica  analisis a pequeña señal fet
Electronica analisis a pequeña señal fet
 

Analisis de Algoritmos tarea 1

  • 1. Análisis de Algoritmos Pablo Vargas Boccanedes Análisis de Algoritmos. Término I 2009. Ing. Carlos Jordán Autor: Pablo Vargas B.
  • 2. TAREA 1 Guayaquil, Julio de 2009 Análisis de Algoritmos. Término I 2009. Ing. Carlos Jordán Autor: Pablo Vargas B.
  • 3. Introducción En esta sección analizaremos algoritmos de ordenamiento y búsqueda, para lo cual calcularemos sus tiempos de ejecución en función del tamaño de las instancias. Entre los objetivos tenemos como más importante la interpretación de los resultados y la comprensión de una mejor manera los mismos. Otro de los objetivos importantes es presentar los métodos que nos ayudarán a elegir entre algoritmos de diferente implementación en función de nuestro medio, mediante el análisis de los tiempos de ejecución y utilización de memoria que son principalmente los limitantes en los ordenadores y equipos donde correrán dichos algoritmos. Análisis de Algoritmos. Término I 2009. Ing. Carlos Jordán Autor: Pablo Vargas B.
  • 4. Teoría Para la resolución de los problemas propuestos utilizaremos los métodos Algebraico, que consiste básicamente en desarrollar varios términos de la ecuación de tiempo hasta encontrar un patrón de repetición y ejecutar una solución, Iterativo que consiste como el algebraico en desarrollar términos pero de una forma gráfica ayudándonos con un árbol binario. Para expresar las soluciones nos ayudaremos de las Notaciones Asintóticas, como son O, Ω y θ, con sus definiciones que detallaré a continuación: f(n) є O(g(n)) c,n0 n≥ n0 f(n)≤cg(n) f(n) є Ω(g(n)) c,n0 n≥ n0 f(n)≥cg(n) f(n) є θ(g(n)) c1,c2,n0 n≥ n0 c1g(n) ≤f(n)≤c2g(n) TEOREMA: f(n) є Ω(g(n)) ^ f(n) є Ω(g(n)) f(n) є θ(g(n)) Análisis de Algoritmos. Término I 2009. Ing. Carlos Jordán Autor: Pablo Vargas B.
  • 5. EJERCICIOS 1.- Escriba el pseudocódigo para el algoritmo que ordena una secuencia por selección. Discuta por qué es correcto este algoritmo. Exprese en notación Ω los tiempos de ejecución para el peor y para el mejor de los casos de este algoritmo. Solución: para i=1 hasta n-1 minimo = i; para j=i+1 hasta n si lista[j] < lista[minimo] entonces minimo=j fin si fin para intercambiar (lista[i], lista[minimo] fin para Entonces, tenemos que se repite n-1 veces el lazo interno que consiste en n repeticiones, rápidamente tenemos la idea de lo que será la solución considerando la operación básica más significativa que es la de comparación. t(n) = n + t(n-1) t(n) = (n-1) + (n-2) + (n-3)+ .. + 3 + 2 + 1 t(n) = ( ) De aquí suponemos que t(n) є Ө ( ) entonces debemos demostrarlo, ( )єӨ( ) c1,c2,n0 n≥ n0 c1 ≤ ( ) ≤c2 ( ) ≤ c1 ( ) ≥ c2 - ≤ c1 - ≥ c2 - ≤( - ≥( - ≤( - ≥( =1 =1 d! = =1 d! Como encontramos los valores de las constantes damos como demostrado el resultado propuesto. Para este ejercicio y dado que solo consideramos la operación de comparación como principal, el tiempo en el mejor, peor y promedio de los casos es el mismo. Análisis de Algoritmos. Término I 2009. Ing. Carlos Jordán Autor: Pablo Vargas B.
  • 6. 2.- Considere el algoritmo de búsqueda secuencial (o lineal) cuando la secuencia no necesariamente esta ordenada. En promedio, ¿Cuántos elementos de la secuencia necesitan ser comparados?, suponga que el elemento buscado podría ser cualquiera con la misma probabilidad. ¿Cuántas comparaciones son necesarias en el peor de los casos? Exprese los tiempos de ejecución promedio y en el peor de los casos de este algoritmo empleando la notación-teta. Solución: El tiempo promedio estará dado por el producto de la suma de los casos con su probabilidad. t(n)=Pkt(k) D! t(n)=Pk c,n0 n≥ n0 n ≤ cn t(n)= n ≤ cn t(n)= [ ] c=1 n=1 d! t(n)= c,n0 n≥ n0 n cn t(n) ≤ n c= n=1 d! t(n) є Ө (n) t esperado є O (n) En el peor de los casos, esto es cuando el elemento buscado se encuentra en la última posición o no se encuentra, tendríamos que hacer cuantas comparaciones como elementos tengamos, esto es n comparaciones. t(n) = n comparaciones t(n) є Ө(n) D! c,n0 n≥ n0 n ≤ cn n ≤ cn c=1 n=1 d! c,n0 n≥ n0 n cn c= n=1 d! Análisis de Algoritmos. Término I 2009. Ing. Carlos Jordán Autor: Pablo Vargas B.
  • 7. 3.- Con respecto al problema de buscar al elemento x en una secuencia A de longitud n, note que si la secuencia esta ordenada y comparamos x con el elemento en la mitad de la secuencia, la búsqueda de x en la secuencia se reduce a la búsqueda de x en una secuencia ordenada de tamaño aproximadamente igual a la mitad del tamaño de A. El algoritmo de búsqueda binaria repite este procedimiento, dividiendo cada vez la porción restante de la secuencia por 2. Discuta lo correcto de esta solución. Escriba el pseudocódigo de este procedimiento de búsqueda, ya sea en la forma recursiva o iterativa. Argumente a favor de la hipótesis de que el tiempo de ejecución de este algoritmo en el peor de los casos es teta(lg n). (lg n es el logaritmo base 2 de n) Solución: //Implementación recursiva static int binSearch(double v[], int izq,int der,double buscado){ int centro = (izq+der)/2; if(izq>der) return -1; else if (buscado==v[centro]) return v[centro]; else if (buscado<v[centro]) return binSearch(v, izq, centro-1,buscado); else return binSearch(v,centro+1,der,buscado); } Si dividimos la secuencia ordenada por la mitad, comparar con el elemento del medio y saber su relación de desigualdad, el problema se traducirá a resolver un problema del mismo tipo pero de la mitad del tamaño original y así hasta tener un solo elemento que será o no la respuesta. La partición será en pero para grandes valores de n, hacemos la aproximación de por lo tanto tenemos que: En el peor de los casos, cuando el elemento buscado se encuentra en un extremo, es decir es el menor o el mayor de la secuencia, tendremos: Análisis de Algoritmos. Término I 2009. Ing. Carlos Jordán Autor: Pablo Vargas B.
  • 8. suma de niveles n 0 n suma de niveles n/2 1 n/2 suma de niveles n/4 2 n/4 suma de niveles n/2^(k-1) ... ... suma de niveles 1 k 1 El tiempo en el peor de los casos, será dado por la suma de los elementos del último nivel es decir, en este caso, k*1=k t(n)=k en el último nivel, n/2^k=1 de aquí, k=lg(n) t(n)=lg(n) t(n) є Ө (lgn) D! c,n0 n≥ n0 lgn ≤ clgn lgn ≤ clgn c=1 n=1 d! c,n0 n≥ n0 lgn clgn c= n=1 d! El mejor de los casos de en este algoritmo sería cuando el elemento buscado se encuentra en el lugar por donde se ejecuta la partición, y el tiempo sería constante Ө(1) Análisis de Algoritmos. Término I 2009. Ing. Carlos Jordán Autor: Pablo Vargas B.
  • 9. 4.- Diga si la hipótesis 2n+1 = O(2n) es verdadera. Diga si 22n = O(2n) lo es. Solución: 2n+1 = O(2n) es verdadera Demostración! c,n0 n≥ n0 2n+1 ≤ c2n 2*2n≤c2n 2≤c c=2 n=1 d! Para cualquier valor de n, con una constante de c > 2, será válida la expresión. 22n = O(2n) falso Demostración! c,n0 n≥ n0 22n ≤ c2n 22n ≤ c2n 2n ≤ c Dado que tenemos una función exponencial que no puede tomar valores de cero ni menor que dicho valor, para grandes valores de n será siempre mayor que un valor constante, por lo tanto la hipótesis es no válida. Análisis de Algoritmos. Término I 2009. Ing. Carlos Jordán Autor: Pablo Vargas B.
  • 10. 5.- Demuestre que el tiempo de ejecución del un algoritmo es Θ(g(n)) si y solo si el tiempo de ejecución del peor de los casos es O(g(n)) y del mejor de los casos es Ω(g(n)). Solución: t(n) Ө(g(n)) Para demostrar partiremos de los datos que nos da el problema, luego plantearemos nuestro destino, y por métodos algebraicos intentaremos llegar a una expresión equivalente. Traduciendo el enunciado: t(n) Ө(g(n)) tp(n) O(g(n)) ^ tm(n) є Ω(g(n)) tp(n)≤cg(n) ^ tm(n)≥cg(n) Sabemos que el tiempo en el mejor de los casos es una función menor a la del tiempo promedio, y que la función de tiempo en el peor de los casos es mayor a la del tiempo promedio, así, traduciendo lo que escribimos: tm(n) ≤ t(n) ≤ tp(n) Luego, escribiendo esto en notación asintótica, tenemos que: t(n) O(tp(n)) ^ t(n) Ω(tm(n)) Combinando: t(n) ≤ tp(n) ≤ cg(n) ^ t(n) ≥tm(n) ≥cg(n) t(n)≤cg(n) ^ t(n) ≥cg(n) t(n) O(g(n))^t(n) Ω(g(n)) Por el teorema que se describe en la teoría, f(n) є Ω(g(n)) ^ f(n) є Ω(g(n)) f(n) є θ(g(n)) Entonces llegamos a t(n) Ө (g(n)) que fue la suposición inicial y queda demostrado. Análisis de Algoritmos. Término I 2009. Ing. Carlos Jordán Autor: Pablo Vargas B.
  • 11. 6.- Sea A[1 ... n] una secuencia de n números distintos. Se define como inversión de A al par (i, j) tal que siendo i<j, A[i] > A[j]. Liste las cinco inversiones de la secuencia 2, 3, 8, 6, 1 Que secuencia de elementos tomados del conjunto {1, 2, …, n} tiene el mayor número de inversiones. ¿Cuántas tiene? ¿Cuál es la relación entre el tiempo de ejecución del algoritmo que ordena por inserción y el número de inversiones en la secuencia de entrada? Justifique su respuesta. Solución: 2, 3, 8, 6, 1: (2,1), (3,1), (8,1), (6,1),(8,6) El conjunto con mayor número de inversiones será aquel que esté ordenado de manera descendente, y serán las siguientes inversiones: (n-1)+(n-2)+(n-3)+(n-4)+… +2+1 // (n-1) términos (n-1)n-(1+2+3+… +(n-1)) (n-1)n – (1+2+3+… + n) +1 +1 – +1 - - +1 inversiones. Ambos algoritmos tienen el mismo tiempo de ejecución O ( , que en este caso está dado por número de comparaciones, el algoritmo de ordenamiento por inserción, Insertion Sort, hace las mismas comparaciones entre todos los elementos del conjunto recorriéndolo de izquierda a derecha. Análisis de Algoritmos. Término I 2009. Ing. Carlos Jordán Autor: Pablo Vargas B.
  • 12. 7.- Demuestre que lg(n!) = Ө(n lgn) y que n! = o(nn) Solución: lg(n!) = Ө(n lgn) lg(n!) є θ(nlgn) c1,c2,n0 n≥ n0 c1nlgn ≤lgn≤c2nlgn lg(n!) ≤ cnlgn lg(n!) ≥ cnlgn lg(n!) ≤ lg lg(n!) ≥ lg n! ≤ c=1 n! ≥ n(n-1)(n-2)(……)(2)(1) ≤ n*n*n*n*…*n n(n-1)(n-2)(..)(2)(1) ≥ n*n*n*n*…*n (n términos) (n términos) (n términos) (n/2 términos) ≥ Término a término, es mayor. ( )≥1 ( )≥( +… + ) Término a término el lado izquierdo es mayor n! = o(nn) n! o(nn) Ro={n!, | = 0} = 0, Dado que el elemento denominador es mayor que el numerador, para valores muy grandes de n, el límite tenderá a cero. Con lo que demostramos que n! o(nn) Análisis de Algoritmos. Término I 2009. Ing. Carlos Jordán Autor: Pablo Vargas B.
  • 13. 8.- Para cada una de las siguientes expresiones, diga si es verdadera o falsa y demuestre su respuesta: n8 = Ω(n9) O(f(n)) * O(g(n)) = O(f(n) * g(n)) f(n) = O(g(n)) implica que 2f(n) = O(2g(n)) C(n, c) = O(nc), donde C(n, c) es el numero de combinaciones sin repetición c de n. C(n, c) = Ω(nc) n8 Ω(n9) verdadero c,n0 n≥ n0 n8 c n9 -1 n ≥c c= n0=1 O(f(n)) * O(g(n)) = O(f(n) * g(n)) verdadero cf(n) es una función menor que f(n) por lo tanto cf(n) O(f(n)) ; c<1 sg(n) es una función menor que g(n) por lo tanto sg(n) O(g(n)); s<1 cf(n)*sg(n)= O(f(n) * g(n)) (c*s)(f(n)*g(n)) = O(f(n) * g(n)) Basándonos en el teorema que dice que “La multiplicación de 2 números menores que 1 devuelve otro valor menor que 1”, podemos asegurar que k es menor que 1, que s y que c. k(f(n)*g(n)) < f(n)*g(n) k(f(n)*g(n)) O(f(n) * g(n)) Reescribiendo como planteamos al principio: O(f(n)) * O(g(n)) = O(f(n) * g(n)) Análisis de Algoritmos. Término I 2009. Ing. Carlos Jordán Autor: Pablo Vargas B.
  • 14. f(n) = O(g(n)) implica que 2f(n) = O(2g(n)) verdadero En la primera parte tenemos que: c,n0 n≥ n0 f(n)≤ cg(n) esto implica que f(n)≤g(n) En la segunda, que: c,n0 n≥ n0 2f(n) ≤ c2g(n) Trabajaremos con la segunda parte y trataremos de llegar a la primera. 2f(n) ≤ c2g(n) 2f(n)-g(n) ≤ c f(n)-g(n) ≤ lg(c ) Si c=1, f(n) ≤ g(n) C(n, c) = O(nc), donde C(n, c) es el numero de combinaciones sin repetición c de n. O(nc) verdadero c,n0 n≥ n0 ≤ s nc ≤ s término menor que uno ≤ s s=1 En el numerador tenemos c elementos, como hay una substracción, el numerador es << n, al agregarle al denominador un nc , éste se hace bastante mayor para grandes valores de n, al suceder esto, el término se hace menor o igual que 1 y este es nuestro valor para s y damos como demostrado el ejercicio. C(n, c) = Ω(nc) falso c,n0 n≥ n0 ≥ s nc ≥s No existen valores de s para validar la inecuación, por lo que declaramos el enunciado como falso. No existen los valores porque n se hará cero con valores menores que c, y con n=c, la expresión tiende a cero valor que s no puede tomar. Análisis de Algoritmos. Término I 2009. Ing. Carlos Jordán Autor: Pablo Vargas B.
  • 15. CONCLUSIÓN Hemos revisado conceptos de Notaciones Asintóticas y su utilidad, además resolvimos problemas por los métodos antes mencionados como el Algebraico e Iterativo, ya podemos analizar cualquier algoritmo recursivo o iterativo que pueda ser resuelto por dichos métodos Los ejercicios 7 y 8 son los de mayor dificultad en esta tarea, el ejercicio 8 incluye gran parte de lo revisado hasta este momento en el curso. Análisis de Algoritmos. Término I 2009. Ing. Carlos Jordán Autor: Pablo Vargas B.