Вы находитесь на странице: 1из 6

PEDRO TALLN CASTRO SERGIO SUREZ LIARES

BITCORA 8B

Un algoritmo es una sucesin finita de instrucciones precisas, para realizar una tarea. Tal que, cada instruccin es clara y no ambigua, ejecutable en un tiempo finito. La sucesin de la secuencia de pasos est claramente definida. Y por ltimo, el proceso termina en un nmero finito de pasos. PROPIEDADES DE UN ALGORITMO Input: Datos de entrada. (Son elementos de un conjunto especificado) Output: Datos de salida. (Son los valores de salida) Definicin: Pasos definidos con precisin. Correccin: Salidas correctas para cada conjunto de valores de entrada. Duracin finita: Proceso finito para cualquier conjunto de valores de entrada. Efectividad: Exactitud en los pasos del algoritmo, y que se efecte en un intervalo finito de tiempo. Generalidad: El procedimiento, el algoritmo debe ser aplicable a todos los problemas.

Ejemplo: Algoritmo en Maple para el clculo del mximo:

Algoritmos de bsqueda

Lineal o secuencial:

Bsqueda elemento por elemento para encontrar el valor. {1,2,3,5,6,7,8,10,12,13,15,16,18,19,20,22} Buscar el nmero 19Divide la sucesin de nmeros cogiendo el valor ms alto y atendiendo a 19>X siendo X el valor ms alto.

Binaria:

Ejemplo de algoritmo de bsqueda binaria: Buscar el nmero 19 en esta sucesin de nmeros:

19=19 {1,2,3,5,6,7,8,10 12,13,15,16 18,19 20,22} 19>10 19>16

David Chaves Fraga Aleixo Cambeiro Barreiro Complejidad de algoritmos La complejidad de un algoritmo puede medirse respecto a dos parmetros: el tiempo y el espacio. -Complejidad en tiempo (tiempo que tarda en ser ejecutado): 1.- Complejidad del mximo de una sucesin de nmeros enteros: Se van comparando los trminos de dos en dos y se asigna de cada vez el mximo provisional al mayor, hasta que no quede ninguno por comparar. Esto significa que se haran operaciones en total. n entradas Complejidad O(n)

2.- Complejidad de la bsqueda lineal: Se compara x con los elementos de la lista y se comprueba si es el ltimo elemento de la lista. sera, por lo tanto, el nmero total de operaciones. n entradas Complejidad O(n)

3.- Complejidad de la bsqueda binaria: Suponemos que en la lista de n elementos, (lo que quiere decir que ). Por cada particin se daran dos pasos, que son el de dividir en dos la lista y el de comparar, lo que quiere decir que ser el nmero total de operaciones realizadas. n entradas Complejidad O( ) , pero

Desde el punto de vista computacional, las funciones tienen que ser trabajaremos con . Definicin: Sean f, g: | | que: |

. Se dice que f es O(g(x)) si existen dos constantes c y k tales | siempre que . Por ejemplo: es O( | | | )

| siempre que

David Chaves Fraga Aleixo Cambeiro Barreiro Lo explicaremos con un ejemplo: Si tomamos f(x)= resultado obtenido es: | grfica: | | , necesitamos encontrar un c y un k tal que x>k. El | para

; que se puede comprobar en la siguiente

120 100 80 60 40 20 0 -2 -1 0 1 2 3 4 5 6 y = x2 + 2x + 1 y = 4x2

y = x2

Polinomios de grado n:

es O(

) Esta funcin tiene complejidad de grado n.

Tabla de complejidad de los algoritmos: O(1) O( O(n) O( O( O( ) ) ) ) Complejidad constante Complejidad logartmica Complejidad lineal polinmica de grado uno Complejidad Complejidad polinmica de grado b (siempre que Complejidad exponencial Complejidad factorial )

O( )

BITCORA. MATEMTICA DISCRETA Ricardo Garca. ngel Garca

11/10/11

BITCORA 9
MATEMTICA DISCRETA

n la clase de hoy nos vamos a centrar en la complejidad de algoritmos, mirando especialmente en una de sus dos partes ms importantes (tiempo y espacio), la complejidad temporal. Explicando algunos de los diferentes tipos de complejidad que nos podemos encontrar. As como tambin hablaremos sobre el crecimiento de funciones. COMPLEJIDAD DE ALGORITMOS Para estudiar la complejidad en tiempo de los algoritmos debemos ponernos siempre en el peor de los casos posibles, pese a que existan tambin otro tipo de estudios de la complejidad como el promedio. Ejemplos: Vamos a estudiar la complejidad de los tres algoritmos vistos en la clase anterior, es decir, mximo de una sucesin de enteros, bsqueda lineal y bsqueda binaria. 1. Mximo de una sucesin de enteros max(a1,,an) max:=a1 Para i = 2 hasta n Si max <ai, entonces max:= ai. En este caso se hacen 2(n-1)+1 operaciones, o lo que es igual 2n 1. Por lo tanto la complejidad de este algoritmo ser lineal. n entradas ------------------------------------> 2n-1 ------------------------------------------> O(n) 2. Bsqueda lineal busca linear (x; a1,, an) i:= 1 mientras i n y x ai i=i+1 Si i n, entonces pos:= i en otro caso pos:=0 En este segundo caso se hacen 2n+2 comparaciones en el peor de los casos, en el mejor solo se haran 3. La complejidad de este algoritmo vuelve a ser lineal. n entradas ------------------------------------> 2n+2 ------------------------------------------> O(n)

BITCORA. MATEMTICA DISCRETA Ricardo Garca. ngel Garca

11/10/11

3. Bsqueda binaria busca binaria (x; a1,,an) a1 . . . . . . . . . . | . . . . . . . . . . an 2k-1 2k-1

K pasos en total

Por cada clculo del punto intermedio se hacen dos operaciones: comparar y dividir. Al finalizar la ejecucin se habrn hecho 2K+ 2 operaciones. La complejidad de este ultimo algoritmo es una potencia de dos n = 2K => log2n = K, es decir la complejidad ser logartmica. n entradas ------------------------------> 2K + 2 => (2log2n + 2) ------------------------------------> O(log n)

CRECIMIENTO DE FUNCIONES Sean f y g dos funciones del conjunto de los enteros o de los reales en el conjunto de los nmeros reales. Decimos que f(x) es O(g(x)) si existen dos constantes C y k tales que |f(x)| C |g(x)| siempre que x > k (Esto se puede leer como f(x) es O mayscula de g(x) o f(x) es una O mayscula de g(x)).

Ejemplo: Comprobar que f(x) = x2 + 2x + 1 es O(x2) |x2 + 2x + 1| C |x2| |x2+2x+1| 4 x2 x>1 x2 es O(x2+2x+1) La parte de la grfica de f(x)=x2 + 2x + 1 que satisface f(x) < 4x2 se muestra ms gruesa.

x>k

Orden de complejidad para polinomios de grado n Para un polinomio f(x)=an xn + an-1 xn-1 + ... + a1 x + a0 f es O(xn). La complejidad de un polinomio viene determinada por el exponente de mayor grado. O(xn) para un polinomio de orden n.

BITCORA. MATEMTICA DISCRETA Ricardo Garca. ngel Garca

11/10/11

Grfica del crecimiento de las funciones utilizadas comnmente en las estimaciones con la notacin O.

Tabla de complejidad de algoritmos O(1) O(log(n)) O(n) O(n*log(n)) O(nb) (b>1) O(bn) O(n!) -> -> -> -> -> -> -> Complejidad constante Complejidad logartmica Complejidad polinmica de grado 1 o lineal Complejidad sublineal Complejidad polinmica de grado b Complejidad exponencial Complejidad factorial

Hasta complejidad polinmica un algoritmo es eficiente temporalmente. Los algoritmos con complejidad exponencial o factorial son demasiado costosos temporalmente como se refleja en la siguiente grfica. NOTA: Los tipos de complejidad superiores a la lnea son los que podemos calcular actualmente con los ordenadores existentes.

Вам также может понравиться