Sunteți pe pagina 1din 14

CAPITULO 3 ALGORITMOS Y TEORA DE NMEROS

3.1 Algoritmos
Un algoritmo es un conjunto finito de instrucciones para realizar clculos que resuelvan un problema. En ejemplo es describir el algoritmo para obtener el valor mximo de una secuencia (sucesin o conjunto finito) de enteros. La solucin es: 1. Fijar como mximo temporal el primer entero de la secuencia 2. Comparar el siguiente entero con el mximo temporal, si es mayor que el mximo temporal, fijar el mximo temporal a este entero. 3. Repetir el paso previo con todos los enteros de la secuencia 4. Pasar cuando ya no haya enteros sin examina en la secuencia. El mximo temporal es en este momento el mximo entero de la secuencia. El pseudocdigo es: Mximo de una secuencia de enteros Procedure max(a1,a2,..,an: enteros) max:= a1 for i=2 ten if max < ai then max := ai (max es el nmero mayor) Algunas caractersticas de los algoritmos son Entrada: Debe haber valor inicial Salida: Por cada cierto conjunto de entradas se producen valores de salida. Los valores de salida son las soluciones del problema. Precisin: Los pasos del algoritmo deben ser definidos en forma precisa. Respuestas correctas: Un algoritmo debe producir valores de salida correctos para cada conjunto de valores de entradas Salidas finitas: Un algoritmo debe producir valores de salida cuando despus de un nmero de pasos finitos para cada conjunto de valores de entrada. Y finito de pasos.

Generalidad: El procedimiento debe comportarse de la forma deseada para todos los problemas.

Algoritmos de bsqueda binaria Problemas como el ejemplo anterior se llaman problemas de bsqueda. El primer algoritmo es llamado bsqueda lnea o secuencial dados lo elementos: a1,a2,..,an , el algoritmo empieza con x y a1, esto es en 1, cuando xa, se compara con a2. Si x=a. la solucin est en a2, esto es en 2 y as sucesivamente. Si en la lista no est x la solucin, la 0 y es 0. Su pseudocdigo es: procedure bsqueda lineal (x:entero; a1,a2,,an; enteros distintos) i=1 while( in y x!=ai) i=i+1 if i n then location:=1 else location :=0 (location es el ndice del trmino que es igual a x o es 0 si x no se encuentra) El algoritmo de bsqueda binaria se aplica cuando la vista est de forma incremental (en nmero o en orden lexicogrfico). Consiste en separa en dos lista, buscar el trmino medio y volver a separar, y as sucesivamente. Por ejemplo: Buscar 19 en la lista

1 2 3 5 6 7 9 10 11 13 15 17 18 19 21 23 24 25 1 2 3 5 6 7 9 10 11 13 15 17 18 19 21 23 24 25

Se busca en la lista como es 11 < 19, como no esta se toma la segunda lista y se divide nuevamente en dos 13 15 17 18 19 21 23 25 23 25

Como 18<19 es la lista 2, y esta se divide: 19 21 Esta en el lugar 14 y el pseudocdigo es:

procedure bsqueda binaria(x: entero, a1,a2,,an enteros que se incrementan) i=1 (i es el punto final izquierdo sel intervalo de bsqueda) j=n (j es el punto final derecho del intervalo de bsqueda) while(i<j) begin m:=[(i+j)/2] if x>am then i= m + 1 else j:= m end if x:= ai then location := i else location j0 (location es el ndice del termino igual a x, o 0 si x no se encuentra)

ALGORITMO DE ORDENAMIENTO
La ordenacin consiste en colocar los elementos de una lista en orden numrico o lexicogrfico. As para la lista: 8,2,7,4,5,9; se coloca como: 1,2,3,4,8,9; y la lista e,t,m,a,t; como a,e,f,m,t. Se revisarn dos mtodos: o o Ordenamiento de Burbuja Ordenamiento de Insercin

Ordenamiento de Burbuja Es el ms simple pero no el ms eficiente. Realiza iterativamente la comparacin de todos los elementos adyacentes, desde el primer al penltimo de la lista, hasta que no haya cambios. Por ejemplo

Primer ciclo 3222 2333 4441 1114 5555

Segundo ciclo 2222 3311 1133 4444 5555

Tercer ciclo 2111 1222 3333 4444 5555

Cuarto ciclo 1111 2222 3333 4444 5555

Algoritmo tipo Burbuja pseudocdigo Procedure bublesort (a1,.,an nuevos reales con n2) for i:=1 to n-1 for j:=1 to n-1 if aj>aj+1 then intercambiar aj y aj+1 {a1,..,an estn en orden creciente} 3.2 Crecimiento de funciones Def. Sean F y G funciones reales de variable entera o real, se dice que F(x) es O(g(x)) si existen constantes reales o enteras c y k tales que: |f(x)| c|g(x)|

Cuando x > k (se lee f(x) es el big O de g(x)). C y K se llaman testigos del big O. Si existen estos dos testigos, entonces existen un nmero no finito de estos. Para verificar que f(x)= x2+2x+1 es O(x2 ) donde x es real, se observa que cuando x>1. X2 + 2x + 1>0 3x2 + x2 X2 + 2x + 1 4x2 > X2 + 2x + 1 Y tambin F(x) es O(x3), es O(x2 + x + 6) Ejemplo: Verificar que 8X2 es O(x3) C=10 k=1 1 2 3 4 X3 8 32 72 128 10x3 10 80 270 640 C=4, k= o bien c=3, k=2

Teorema: Dado el polinomio f(x)= anxn + an-1xn-1 + .+ a1x + a0 entonces f(x) es O(xn), para la suma de naturales 1+2+3++n es O(n2) 1+2+3+..+n = n2

Y para el factorial n!=(1)(2)(3)(n) < n n n n= nn Entonces n! es O(nn) y log (n!) log (nn)= n log (n) Entonces log (n!) es O(n log (n)), ahora tambin log(n) < n Por lo tanto log(n) es O(n) y logb(n) es O(n). ya que logb(n)=
( ) ( )

<

( )

, tambin n <n2 , n es O(2n)

Teorema: si f1(x) es O(g1(x)) y f2(x) es O(g2(x)), entonces (f1 + f2)(x) es O( max (|g1(x) , g2(x)|)) Colorario: Sea f1(x) y f2(x) O(g(x)), entonces (f1 + f2)(x) es O(g(x) Teorema: Si f(x) es O(g1(x)) y O(g2(x)) entonces (f1 + f2)(x) es O(g1(x)) O(g2(x)) As para f(n)=3n log(n!) +(n2 + 3) log n En el primer sumando: log(n!) es O(n log n); 3 n es O(n); 3n log(n!) es O(n2 log n). En el segundo sumando: n2 + 3 es O(n2); (n2 + 3)log n es O(n2 log n), finalmente la expresin es O(n2 log n). Sean f y g funciones de variable natural. Se dice que f(x) es (g(x)), si existen valores naturales c y k tales que: |f(X) | c|g(x)| ; cuando x>k Se lee f(x) es big omega de g(x). As f(x)= 5x2 +7x +4 (x3), cuando c=4 y k=1. Esto es equivalente a decir que x3 O de f(x)= 5x^2 +7x +4. Sean f y g funciones reales de variables natural o real, entonces se dice que f(x) es g(x), se lee f es big-theta de g(x), si f(x) es O (g(x)) y f(x) es (g(x)). Note que si f(x) es (g(x)), entonces g(x) es f(x). Por ejemplo, cualquier polinomio f(x)= anxn++a1x+a0 de coeficientes reales, entonces f(x) es (xn), por ejemplo, si f(x)= 5x^2 +7x +4 es O (x3).

3.3 Complejidad de algoritmos La eficiencia de un algoritmo que resuelva correctamente un problema se mide por el tiempo que utiliza una computadora para resolver el problema respectivo para ciertas entradas. Estos dos aspectos constituyen la complejidad computacional del algoritmo. El primero es complejidad de tiempo y el segundo complejidad de espacio. La complejidad en el tiempo puede expresarse con el nmero de operaciones utilizada por el algoritmo. Operaciones como comparacin de enteros, submltiplos, sus adiciones, sus divisiones y otras operaciones bsicas. Una computadora actual realiza una operacin en 0.5 x 10-9 [seg] (26 bits/s) y una muy compleja 1 x 10-12 [seg] (1 teraB/s). Para el algoritmo de bsqueda lineal, en cada paso se realizan dos comparaciones: una para saber si se est en el fin de la lista y otra para comprar el elemento de una lista con un cierto valor. Finalmente se hace una comparacin 2n + 1, si no est en la lista se realiza una ms se hace 2n +2, entonces tiene (n) complejidad en el tiempo. En el caso del algoritmo de bsqueda binaria se requieren (2 log (n+2)) comparaciones en una lista de 2k elementos, as que su complejidad en el tiempo es (log n). En ocasiones se utiliza el criterio de caso promedio en lugar del peor de los casos. Para una bsqueda binaria lineal ( y el valor esta en la lista) se tienen n+2 comparaciones y su complejidad es (n). en el caso de bsqueda por burnuja utiliza (n-1) n/2 comparaciones y por tanto es de complejidad (n2). Alguna terminologa es la siguientes: Complejidad (1) (log n) (n) (n log n) (nb) (bn) (n!) Terminologa Complejidad constante Complejidad logartmica Complejidad lineal Complejidad n log n Complejidad polinomial Complejidad exponencial Complejidad factorial

Un problema que se soluciona para el peor caso con complejidad polinomial se llama tratable (tractable), sin embargo si el polinomio es muy alto (grado 100) o si los coeficientes son muy grandes, el tiempo de soluciones ser muy grande. En caso contrario un problema es intratable. Estos problemas se pueden resolver pero utilizan cantidades muy grandes de tiempo. Un problema que no se puede resolver se llama insolubles (insoludable). Problemas con complejidad polinomial se llaman de clase NP y problemas tratables de clase P. Hay otra clase de problemas llamados (non deterministic polynimial) completos NP, que pueden

resolverse por complejidad polinomial en el peor caso. Se mostrara el anlisis promedio para bsqueda lineal, considerando que para el primer elemento se requieren 3 comparaciones y las siguientes 2 comparaciones, es decir, en el trmino r-simo se llevan. 2i +1 comparaciones, entonces el nmero de comparaciones promedio es para cada termino xi la probabilidad es uniforme, es decir P(xi)= , xi = 3,5,., 2n +1.

3.4 Enteros y Divisin Todos los enteros a yb con a0 se dice que la a divide a b, si existe un entero tal que b=ac, se dice que a es un factor de b y que b es mltiplo de a. se usa la notacin a|b. As 3|12 por que (3)(4)=12, 3X7 y -4/-32 Teorema: Sean a,b,c entero entonces: a) Si a|b y a|c, entonces a|(b+c) b) Si a|b, entonces a|bc para todo entero c c) Si a|b y b|c, entonces a|c Corolario: si los enteros a,b,cson tales que a|b y a|c, entonces a|(mb+nc) donde m y n son enteros. Teorema (algoritmo de la divisin): Sea a un entero y d un entero positivo, entonces existen enteros nicos q y r, donde 0rd, tal que A=d q + r d es llamado divisor, a es llamado dividendo, q es llamado cociente y r es llamado residuo, en notacin q=a div d, r= a div d Xn + 1 = { anXn +C) mod m m = modulo a= multiplicar con 2 a < m, 0 c m, 0x<m escogemos 4 enteros. c= incremento xn= semilla

Se genera una secuencia de nmeros pseudoaleatorios {Xn}, siendo 0 Xn < m, para todo n , al usar sucesivamente la congruencia Xn + 1 = (a Xn + c) mod m

Muchos experimentos computacionales requieren generar nmeros pseudoaleatorios entre o y 1 para generar dichos nmeros se dividen los nmeros generados con un generador lineal congruencial entre el modulo, es decir usamos los nmeros Xn/m. Por ejemplo, la secuencia de nmeros pseudoaleatorios generados al escoger m=9, a =7, c=4 y X0 son los siguientes: X1 = (7 x0 +4) mod 9 = (7.3 + 4) mod 9 = 25 mod 9 = 7 X2 = (7 x1 +4) mod 9 = (7.7 + 4) mod 9 = 53 mod 9 = 8 X3 = (7 x2 +4) mod 9 = (7.8 + 4) mod 9 = 60 mod 9 = 6 X4 = (7 x3 +4) mod 9 = (7.6 + 4) mod 9 = 46 mod 9 = 1 X5 = (7 x4 +4) mod 9 = (7.1 + 4) mod 9 = 11 mod 9 = 2 X6 = (7 x5 +4) mod 9 = (7.2 + 4) mod 9 = 18 mod 9 = 0 X7 = (7 x6 +4) mod 9 = (7.0 + 4) mod 9 = c4 mod 9 = 4 X8 = (7 x7 +4) mod 9 = (7.4 + 4) mod 9 = 32 mod 9 = 5 X9 = (7 x8 +4) mod 9 = (7.5 + 4) mod 9 = 39 mod 9 = 3 La secuencia generada es: 3, 7, 8, 6, 1, 2, 0, 4, 5, 3, 7, 8, 6, 1, 2, 0, 4, 5, .. ; que contiene 9 numero diferentes antes de repetirse. La mayora de las computadoras usan generadores lineales congruentes para generar nmeros pseudoaleatorios, frecuentemente los generadores lineales congruentes tienen un incremento C=0, se le llama multiplicativos puros. Por ejemplo, el generador multiplicativo puro con mdulo 23-1 y multiplicador 75=16,807, es muy usada, se generan 231 valores antes de repetirse. Una de las aplicaciones ms importantes es la criptologa, que es el estudio de mensajes secretos. Una de las tcnicas ms antiguas es la de Julio Cesar. l enviaba mensajes secretos desplazando cada letra en tres posiciones. Por ejemplo, la letra B se enviaba como E. este es un ejemplo de encriptado. El mtodo de Julio Cesar se puede representar como una funcin f que asigna cada natural P; P 25, el entero f(p) del conjunto { 0, 1, 3, ., 25} con la regla f(p) = (p+3) mod 26 Por ejemplo, para el mensaje MEET YOU IN THE PARK, primero se reemplaza por nmeros 12, 4, 4, 19 24, 14, 20 8, 13 19, 7, 4, 15, 0, 17, 10

Se encripta 15, 7, 7, 22, 1, 17, 23 11, 16 22, 10, 7 18, 3, 20, 13

El mensaje encriptado es PHHW BRXLQ WKH SDVN Para recobrar el mensaje se usa la funcin f-1, en este caso es: f-1(p) = (p 3) mod 26 a este proceso se le llama desencriptado. 3.5 Primos y mximo comn divisor Definicin: Un natural P mayor a 1 es llamado primo si y solo si sus factores son P y 1. Un natural no primo y mayor que uno es llamado compuesto. Los primos enteros menores a 100 son 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 47, 53,59, 61, 67, 71, 73, 79, 83, 89 y 97. La criba de Erastfenes nos sirve para obtener los primos menores a n. Teorema (fundamental de la aritmtica): todo natural mayor a 1 puede escribirse de forma nica como el producto de nmeros: As 641 = 641 2024 = (2) (2) . (2)= 210 42 = (6) (7) = (2) (3) (7) 124 = (2) (62) = (2) (2) (31) Teorema: si n es un compuesto, entonces n tiene un primo divisor menor o igual a . Ejemplo: Demostrar que 101 es primo Solucin: Los nicos primos menores a entonces es primo. son 2, 3, 5 y 7, como n no es divisible a ninguno,

Teorema: El nmero de primos es infinito. Se pueden generar primos con la ecuacin 2p 1, donde p es un primo, llamados primos de Merseme. No todos los nmeros generados son primos. As: 22 1 = 3 25 1 = 31 primo de Merseme primo de Merseme

211 1 = 2047

No primo

Teorema (de nmeros primos): El cociente de nmeros primos que excedan a x y x/ln(x) se aproximan a 1 a medida que x crece. El matemtico Haclamard (1896) demostr el teorema. Se ha buscado una funcin que genere primos, una es f(n) n2 n + 41 para n < 40 . As, f(1) = 41 f(4) = 53, etc.

Goldbach en 1742, introdujo la conjetura que todo nmero impar n, n > 5, puede expresarse como la suma de tres primos. Esta conjetura es equivale a que todo entero para n, n > 2 es la suma de dos primos (llamada conjetura de Goldbach). As: 4 = 2 + 2; 8 = 5 + 3; etc.

Se ha verificado hasta el entero 2 x 1017 (2006), pero no hay demostracin an. Otra conjetura que hay un nmero infinito de la forma n2 + 1, donde n es un natural. As 5 = 22 + 1 37 = 62 + 1, etc.

Se llaman primos gemelos cuando varia en dos unidades. As 3 y 5, 11 y 13, 4967 y 4969. La conjetura en que hay un nmero infinito de primos gemelos. Definicin: Sean a y b enteros no ambos ceros. El mayor entero d tal que d/a y d/b es llamado mximo comn divisor de a y b se denota med (a,b) o bien gcd (a,b). As, el mximo comn divisor de 24 y 36 es 12, se escribe med (24,36)=12 o gcd (24,36)=12. Definicin: los enteros a y b se llaman primos relativos si su med es 1, como gcd (17,22) = 1, 17 y 22 son primos relativos. Definicin: Los enteros a1,a2, a3,,an son enteros relativos en pares si gcd(ai,aj)=1, V i>1 y jn. as 10, 17,21 son enteros relativos en pares? Veamos: gcd (10,17)=1 gcd (10,21)=1 gcd (17,21)=1 Una forma de obtener gcd es factorizando el nmero en primos, sea A= (pa1) (pa2) (pan) y b = (p1b1) (p2b2) ..(pnbn). por lo tanto son relativos en pares

10

Definicin: el mnimo comn mltiplo de los enteros a y b es el menor entero positivo que es divisible entre a y b. se denota mem (a,b) o lam (a.b). una forma de obtenerlo es usando un mtodo semejante gcd, entonces: lcm (a,b)=(p1max(a1,b1)) (p2max(a2,b2)) (pnmax(an,bn)) 3.6 Aplicaciones y resultados tiles. En criptografa es importante obtener bn mod m donde b,n,m sin enteros grandes. Es imprctico obtener primero bn. as que usaremos un algoritmo que usa la expansin binaria de n, esto es n=(ak+1,a1, a0)2 , se obtienen los valores de b, b2, .., b2k y despus se multiplican los trminos b2 donde aj=1. Por ejemplo, para calcular que 11=(1011)2 despus 311= 38 32 31 31 = 3 34=81 38=(81)2= 6561

Por lo que 311= (6561) (9) (3) = 177,147. Un mtodo ms eficiente de calcular gcd se llama algoritmo de Euclides. Antes se presenta el lema: Sea a = bq + r donde a,b,q y r son enteros, entonces gcd (a,b) = gcd (b,r) ahora el algoritmo. Supongamos que a y b son enteros con a > b. sean r0=a y r1=b se aplica sucesivamente el algoritmo de la divisin: r0=r1q1 + r2 r1=r2q2 + r3 . . rn-2=rnqn-1 + rn rn-1=rnqn 0r2<r1 0r3<r2 . . 0rnrn-1

En alguna divisin se llegar a que el residuo es cero, entonces del lema anterior: gcd (a,b) = gcd (r0, r1)= gcd (r2, r2) = ..= gcd (rn-2, rn-1)= gcd (rn-1, rn)= gcd (rn, 0)= rn por lo que el gcd (a,b)= rn Ejemplo: Obtener el gcd de 414 y 662 usando el algoritmo de Euclides Solucin: 662= 414 (1) + 248 414= 248 (1) + 166 248= 166 (1) + 82

11

166= 82 (2) + 2 82= 41 (2) Teorema: Sean a y b enteros positivos, entonces existen enteros s y t tales que gcd (a,b) = sa + tb Por ejemplo, expresar gcd (252,198)= 18 como una combinacin lineal de 252 y 198 18 = s(252) + t(198) Primero se escribe el algoritmo de Euclides 252= 198 (1) + 54 198= 54 (3) + 36 54= 36 (1) + 18 36= 18 (2) Usando la penltima expresin: 18=64 36(1), la segunda 36=198 54(3) As que 18= 4(252-998(1))-198(1)=252(4)-198(5), que es el resultado deseado. Lema: Sea a,b y c enteros positivos tales que gcd (a,b)=1 y a/bc entonces a/c. Lema: Sea p un primos y p/a, a2,..,an donde cada ai es un entero, entonces p / ai para alguna i. Teorema: Sea m un entero positivo y sean a y b y c enteros. Si ac bc (mod m) y gcd (c,m)=1, entonces a b (mod m). Una conjetura de la forma ax b (mod m), donde a,b son enteros, m es un entero positivo y x una variable, se llama congruencia lineal. Para obtener los valores de x que satisfacen una congruencia lineal se usa el concepto de como el inverso de a mdulo m, es tal que, a (mod m) Teorema: Si a y m son primos relativos y m>1 entonces el inverso de a modulo m existe. An ms, el inverso es nico mdulo m. estos es, existe un nico entero positivo menor que m que es el inverso k que a modulo m, y congruente a modulo m. Teorema chino del residuo. Se basa en una pregunta del siglo I, no se conoce un nmero pero cuando se divide entre 3 el residuo es 2; cuando se divide entre 5 el residuo es 3 y cuando se divide entre 7, el residuo es 2. Cul es ese nmero? Traducido a aritmtica modular, el nmero es la solucin del sistema de congruencia

12

X 2 mod 3 X 3 mod 5 X 2 mod 7 Para resolverlo, se har uso del siguiente teorema: Sean mq,m2,..,mn primos relativos pares y sean a1, a2,..,an enteros arbitrarios. Entonces el sistema: X a1 mod m1 X a2 mod m2 . . X an mod mn Tiene una solucin nica mdulo m=m1 (m2)..(mn) El teorema sugiere que hay una solucin x con 0 x <m y otras soluciones son congruentes (mod m) a. Para resolver el problema planteado; m=3(5)(7)=105. 1 = m/3=35, 2 = m/5=21, 3 = m/7=15. Requerimos el inverso de 1 modulo 3, de 2 modulo 5, 3 mdulo 7, usando la definicin inversa. divisible divisible divisible x=2 x=1 x=1

La solucin se puede escribir como x=a11y1 + a22y2 + .+ annyn = 2(35)(2) +(2)(21)(1) + 2(15)(1) =233 Se tiene 233 y(mod 105) y =23 es la solucin como se puede comprobar.

Y tambin son solucin 23 + k(105); k natural as para k=1 y y=128 y se puede comprobar.

13

Clculos con nmeros grandes. Supongamos que m1, m2,.., mn son primos relativos en pares, 2, y m su producto por el teorema anterior un entero a1 0a < m, puede representarse en forma nica por la n-ada y consiste de los residuos al dividir entre mi. (a1 mod m, a2 mod m2,., an mod mn) As por ejemplo representar a 7 y 10 con la forma anterior si m1=3 y m2=4 7=(1,3); Pseudoprimos. Ya se mostr que un entero n es primos cuando no es divisible por P donde P = . Pero hacer esto es largo, segn los antiguos chinos un nmero n es primo su y solo si 2n-1 1 (mod n) La cual sera un mtodo eficiente, se ha observado que la congruencia es vlida cuando n es primo. Por ejemplo, si n=5 25-1 24 16 1 (mod 5) Sin embargo la ecuacin no siempre proporciona un primo, cuando n es no primo y a es un entero no divisible entre p, entonces ap-1 1 (mod p) An ms para cualquier entero a se tiene ap a (mod p) A los nmeros compuestos n tal es que 2n 1(mod n) se les llama pseudoprimo en la base 2. As el nmero3 41 es pseudoprimo por que 2340 1 (mod 341) En forma general sea b un natural, si n es un entero compuesto y bn-1 1(mod n), entonces a n se llama pseudoprimo en la base b. As para 1010 hay 455,052,512. Primos menores y solo 14,884 pseudoprimos base 2 menores. Un entero compuesto n que satisface la congruencia bn-1 1 (mod n) para todos los enteros positivos b con gcd (b,n) = 1 se les llama nmeros de Carmichael. 10=(1,,2); ahora 9=(0,1)

14

S-ar putea să vă placă și