Documentos de Académico
Documentos de Profesional
Documentos de Cultura
mat-151
Computacin y Algoritmos
07.02.2012
Cada operacin fundamental usa c milisegundos, cunto tiempo toma contar hasta 1,000,000? Cual es el valor de N?Cul es el rden de complejidad en funcin de N?
int i,k,count=0; for(i=0; i<N; i++) for(k=0; k<N; k++) count ++;
Notacin asinttica
Comportamiento asinttico: comportamiento cuando tamao del problema. , donde n es el
Computacin y Algoritmos
07.02.2012
15
Idea bsica: tomar en cuenta solo los trminos principales, ignorando aquellos que crecen ms lento.
Computacin y Algoritmos
07.02.2012
16
Idea bsica: tomar en cuenta solo los trminos principales, ignorando aquellos que crecen ms lento.
Computacin y Algoritmos
07.02.2012
16
i.e.,
Transitivo: Reexivo:
Computacin y Algoritmos
07.02.2012
17
! Ejemplos: ! ! !
Computacin y Algoritmos
07.02.2012
18
Notacin O grande
Computacin y Algoritmos
07.02.2012
19
Notacin O grande
Computacin y Algoritmos
07.02.2012
19
Notacin O grande
Computacin y Algoritmos
07.02.2012
19
Notacin O grande
Computacin y Algoritmos
07.02.2012
19
Notacin O grande
90.0
67.5
45.0
22.5
0. 1 0. 2 0. 3 0. 4 0. 5 0. 6 0. 7 0. 8 0. 9 1
1. 2 1. 3 1. 4 1. 5 1. 6 1. 7 1. 8 1. 9 2
2. 2 2. 3 2. 4 2. 5 2. 6 2. 7 2. 8 2. 9 3
Computacin y Algoritmos
07.02.2012
20
Notacin O grande
67.5
45.0
22.5
0. 1 0. 2 0. 3 0. 4 0. 5 0. 6 0. 7 0. 8 0. 9 1
1. 2 1. 3 1. 4 1. 5 1. 6 1. 7 1. 8 1. 9 2
2. 2 2. 3 2. 4 2. 5 2. 6 2. 7 2. 8 2. 9 3
Computacin y Algoritmos
07.02.2012
20
Notacin O grande
67.5
45.0
22.5
0. 1 0. 2 0. 3 0. 4 0. 5 0. 6 0. 7 0. 8 0. 9 1
1. 2 1. 3 1. 4 1. 5 1. 6 1. 7 1. 8 1. 9 2
2. 2 2. 3 2. 4 2. 5 2. 6 2. 7 2. 8 2. 9 3
Computacin y Algoritmos
07.02.2012
20
Notacin O grande
67.5
45.0
22.5
0. 1 0. 2 0. 3 0. 4 0. 5 0. 6 0. 7 0. 8 0. 9 1
1. 2 1. 3 1. 4 1. 5 1. 6 1. 7 1. 8 1. 9 2
2. 2 2. 3 2. 4 2. 5 2. 6 2. 7 2. 8 2. 9 3
Computacin y Algoritmos
07.02.2012
20
Notacin O grande
La notacin O grande permite denir un lmite superior al crecimiento de una funcin. Establece un orden entre funciones:
Computacin y Algoritmos
07.02.2012
21
Computacin y Algoritmos
07.02.2012
Notacin O grande
Considerar funciones que sean lo ms pequeas posibles:
Computacin y Algoritmos
07.02.2012
Notacin O grande
Considerar funciones que sean lo ms pequeas posibles:
Computacin y Algoritmos
07.02.2012
Notacin O grande
Considerar funciones que sean lo ms pequeas posibles:
Si T(n) es un polinomio de grado g, entonces T(n) = O(ng): se pueden olvidar los trminos de grado inferior y las constantes.
Computacin y Algoritmos
07.02.2012
Notacin O grande
Considerar funciones que sean lo ms pequeas posibles:
Si T(n) es un polinomio de grado g, entonces T(n) = O(ng): se pueden olvidar los trminos de grado inferior y las constantes. Usar la clase de funciones ms chica: 2n es O(n), aunque sea tambin O(n2)
Computacin y Algoritmos
07.02.2012
Notacin O grande
Considerar funciones que sean lo ms pequeas posibles:
Si T(n) es un polinomio de grado g, entonces T(n) = O(ng): se pueden olvidar los trminos de grado inferior y las constantes. Usar la clase de funciones ms chica: 2n es O(n), aunque sea tambin O(n2) Usar la expresin ms simple
Computacin y Algoritmos
07.02.2012
Notacin !
Computacin y Algoritmos
07.02.2012
Notacin !
Presenta la cota asinttica inferior de una funcin.
Computacin y Algoritmos
07.02.2012
Notacin !
Presenta la cota asinttica inferior de una funcin.
Computacin y Algoritmos
07.02.2012
Notacin !
Presenta la cota asinttica inferior de una funcin.
Se usa generalmente para acotar el tiempo de ejecucin en el mejor caso. Cuando decimos que el tiempo de ejecucin de un algoritmo es !(g(n)), decimos que sin importar la entrada de tamao n, el tiempo de clculo para esa entrada es al menos una constante multiplicativa de g(n), para una n sucientemente grande.
Alonso Ramirez Manzanares Computacin y Algoritmos 07.02.2012
7
Notacin !
Presenta la cota asinttica inferior de una funcin.
Se usa generalmente para acotar el tiempo de ejecucin en el mejor caso. Cuando decimos que el tiempo de ejecucin de un algoritmo es !(g(n)), decimos que sin importar la entrada de tamao n, el tiempo de clculo para esa entrada es al menos una constante multiplicativa de g(n), para una n sucientemente grande.
Alonso Ramirez Manzanares Computacin y Algoritmos 07.02.2012
7
Notacin
Computacin y Algoritmos
07.02.2012
Notacin
Computacin y Algoritmos
07.02.2012
Notacin
Computacin y Algoritmos
07.02.2012
Notacin
Computacin y Algoritmos
07.02.2012
Notacin
Computacin y Algoritmos
07.02.2012
Notacin
Computacin y Algoritmos
07.02.2012
Notacin
Computacin y Algoritmos
07.02.2012
Notacin
Computacin y Algoritmos
07.02.2012
Notacin
Computacin y Algoritmos
07.02.2012
Notacin
Computacin y Algoritmos
07.02.2012
10
Computacin y Algoritmos
07.02.2012
11
Prueba:
Computacin y Algoritmos
07.02.2012
11
Computacin y Algoritmos
07.02.2012
12
Prueba
Computacin y Algoritmos
07.02.2012
12
Computacin y Algoritmos
07.02.2012
13
Prueba
Computacin y Algoritmos
07.02.2012
13
Computacin y Algoritmos
07.02.2012
14
Computacin y Algoritmos
07.02.2012
15
Computacin y Algoritmos
07.02.2012
15
Computacin y Algoritmos
07.02.2012
15
Computacin y Algoritmos
07.02.2012
15
Computacin y Algoritmos
07.02.2012
15
Computacin y Algoritmos
07.02.2012
15
Computacin y Algoritmos
07.02.2012
15
Bsqueda secuencial
int search ( int a[], int v, int l, int r ) { for ( int i=l; i<=r; i++ ) if( v == a[i]) return i; return -1; }
Computacin y Algoritmos
07.02.2012
16
Bsqueda secuencial
int search ( int a[], int v, int l, int r ) { for ( int i=l; i<=r; i++ ) if( v == a[i]) return i; return -1; } El tiempo de ejecucin depende si el objeto buscado est en el arreglo o no.
Computacin y Algoritmos
07.02.2012
16
Bsqueda secuencial
int search ( int a[], int v, int l, int r ) { for ( int i=l; i<=r; i++ ) if( v == a[i]) return i; return -1; } El tiempo de ejecucin depende si el objeto buscado est en el arreglo o no. Podemos decir que no est despues de recorrer todo el arreglo, o encontrarlo en la primera, segunda, tercera o cualquiera de las posiciones.
Computacin y Algoritmos
07.02.2012
16
Bsqueda secuencial
int search ( int a[], int v, int l, int r ) { for ( int i=l; i<=r; i++ ) if( v == a[i]) return i; return -1; } El tiempo de ejecucin depende si el objeto buscado est en el arreglo o no. Podemos decir que no est despues de recorrer todo el arreglo, o encontrarlo en la primera, segunda, tercera o cualquiera de las posiciones. Para hacer una prediccin se necesita una entrada adecuada a la aplicacin.
Alonso Ramirez Manzanares Computacin y Algoritmos 07.02.2012
16
Bsqueda secuencial
Computacin y Algoritmos
07.02.2012
17
Bsqueda secuencial
Tomamos el caso de nmero encontrado o no encontrado y los analizamos separadamente.
Computacin y Algoritmos
07.02.2012
17
Bsqueda secuencial
Tomamos el caso de nmero encontrado o no encontrado y los analizamos separadamente. Propiedad 1: La bsqueda secuencial examina N nmeros para cada nmero no encontrado y en promedio N/2 posiciones para cada bsqueda exitosa.
Computacin y Algoritmos
07.02.2012
17
Bsqueda secuencial
Tomamos el caso de nmero encontrado o no encontrado y los analizamos separadamente. Propiedad 1: La bsqueda secuencial examina N nmeros para cada nmero no encontrado y en promedio N/2 posiciones para cada bsqueda exitosa. Si cada nmero en el arreglo tiene la misma probabilidad de ser el nmero buscado, entonces: (1+2+ ... + N)/N = (N+1)/2 es el costo promedio de la bsqueda.
Computacin y Algoritmos
07.02.2012
17
Bsqueda secuencial
Tomamos el caso de nmero encontrado o no encontrado y los analizamos separadamente. Propiedad 1: La bsqueda secuencial examina N nmeros para cada nmero no encontrado y en promedio N/2 posiciones para cada bsqueda exitosa. Si cada nmero en el arreglo tiene la misma probabilidad de ser el nmero buscado, entonces: (1+2+ ... + N)/N = (N+1)/2 es el costo promedio de la bsqueda.
comparacin entre dos nmeros es constante: si doblamos el nmero de transacciones, doblamos el tiempo de clculo.
Computacin y Algoritmos
07.02.2012
17
Bsqueda secuencial
Computacin y Algoritmos
07.02.2012
18
Bsqueda secuencial
Cmo acelerar la bsqueda?
Computacin y Algoritmos
07.02.2012
18
Bsqueda secuencial
Cmo acelerar la bsqueda? ORDENANDO LA LISTA!
Computacin y Algoritmos
07.02.2012
18
Bsqueda secuencial
Cmo acelerar la bsqueda? ORDENANDO LA LISTA! Veremos algoritmos de ordenamiento de O(MlogM), adecuado dado el tamao de M.
Computacin y Algoritmos
07.02.2012
18
Bsqueda secuencial
Cmo acelerar la bsqueda? ORDENANDO LA LISTA! Veremos algoritmos de ordenamiento de O(MlogM), adecuado dado el tamao de M.
Computacin y Algoritmos
07.02.2012
18
Bsqueda secuencial
Cmo acelerar la bsqueda? ORDENANDO LA LISTA! Veremos algoritmos de ordenamiento de O(MlogM), adecuado dado el tamao de M.
Computacin y Algoritmos
07.02.2012
18
Bsqueda secuencial
Cmo acelerar la bsqueda? ORDENANDO LA LISTA! Veremos algoritmos de ordenamiento de O(MlogM), adecuado dado el tamao de M.
Esto reduce el costo a cerca de N/2 para una bsqueda no exitosa, lo Propiedad 2: La bsqueda secuencial en un arreglo ordenado examina N
nmeros en el peor caso y cerca de N/2 nmeros para cada bsqueda en promedio.
Computacin y Algoritmos
07.02.2012
18
Bsqueda secuencial
Computacin y Algoritmos
07.02.2012
19
Bsqueda secuencial
El tiempo de ejecucin de la bsqueda secuencial es proporcional a MN para M transacciones, en promedio y en el peor caso.
Computacin y Algoritmos
07.02.2012
19
Bsqueda secuencial
El tiempo de ejecucin de la bsqueda secuencial es proporcional a MN para M transacciones, en promedio y en el peor caso. Esto nos dice que este algoritmo no es utilizable para tablas muy grandes:
Computacin y Algoritmos
07.02.2012
19
Bsqueda secuencial
El tiempo de ejecucin de la bsqueda secuencial es proporcional a MN para M transacciones, en promedio y en el peor caso. Esto nos dice que este algoritmo no es utilizable para tablas muy grandes: Si toma c microsegundos examinar un nmero y M=109 y N=106 , el tiempo de ejecucin para todas las transacciones ser de al menos (c/2) 109 segundos, o alrededor de 16c aos.
Computacin y Algoritmos
07.02.2012
19
Bsqueda binaria
int search ( int a[], int v, int l, int r ) { while (r >= l){ int m = (l+r)/2; if (v == a[m]) return m; if (v < a[m]) r=m-1; else l=m+1; } return -1; }
Computacin y Algoritmos
07.02.2012
20
Bsqueda binaria
Computacin y Algoritmos
07.02.2012
21
Bsqueda binaria
Si los nmeros estn ordenados, se puede eliminar la mitad de ellos comparando el que buscamos con el de la posicin media de la tabla.
Computacin y Algoritmos
07.02.2012
21
Bsqueda binaria
Si los nmeros estn ordenados, se puede eliminar la mitad de ellos comparando el que buscamos con el de la posicin media de la tabla. Si es igual, la bsqueda es exitosa.
Computacin y Algoritmos
07.02.2012
21
Bsqueda binaria
Si los nmeros estn ordenados, se puede eliminar la mitad de ellos comparando el que buscamos con el de la posicin media de la tabla. Si es igual, la bsqueda es exitosa.
Computacin y Algoritmos
07.02.2012
21
Bsqueda binaria
Si los nmeros estn ordenados, se puede eliminar la mitad de ellos comparando el que buscamos con el de la posicin media de la tabla. Si es igual, la bsqueda es exitosa.
Si es menor, aplicamos el mismo mtodo a la mitad izquierda de la tabla. Si es mayor, aplicamos el mismo mtodo a la mitad derecha de la tabla.
Computacin y Algoritmos
07.02.2012
21
Bsqueda binaria
Si los nmeros estn ordenados, se puede eliminar la mitad de ellos comparando el que buscamos con el de la posicin media de la tabla. Si es igual, la bsqueda es exitosa.
Si es menor, aplicamos el mismo mtodo a la mitad izquierda de la tabla. Si es mayor, aplicamos el mismo mtodo a la mitad derecha de la tabla.
Computacin y Algoritmos
07.02.2012
21
Bsqueda binaria
Si los nmeros estn ordenados, se puede eliminar la mitad de ellos comparando el que buscamos con el de la posicin media de la tabla. Si es igual, la bsqueda es exitosa.
Si es menor, aplicamos el mismo mtodo a la mitad izquierda de la tabla. Si es mayor, aplicamos el mismo mtodo a la mitad derecha de la tabla.
Computacin y Algoritmos
07.02.2012
21
Bsqueda binaria
Si los nmeros estn ordenados, se puede eliminar la mitad de ellos comparando el que buscamos con el de la posicin media de la tabla. Si es igual, la bsqueda es exitosa.
Si es menor, aplicamos el mismo mtodo a la mitad izquierda de la tabla. Si es mayor, aplicamos el mismo mtodo a la mitad derecha de la tabla.
Propiedad 1: La bsqueda binaria nunca examina ms de (lgN)+1 nmeros. Lo que signica: Permite resolver problemas muy grandes, de hasta 1 milln de nmeros con mximo 20 comparaciones por transaccin, que puede ser menos de lo que tarda una computadora en imprimir o leer el nmero.
Alonso Ramirez Manzanares Computacin y Algoritmos 07.02.2012
21
Problemas de bsqueda"
Un anlisis del comportamiento asinttico de estos algoritmos nos permite elegir el mejor entre ellos para nuestra aplicacin. El anlisis del peor caso nos proporciona garantas sobre el funcionamiento del programa. El anlisis del caso promedio nos da predicciones sobre el funcionamiento promedio, con los datos apropiados, del programa.
Computacin y Algoritmos
07.02.2012
22