XVII Escuela Venezolana de Matem´aticas. Algoritmos Deterministas de Primalidad Pedro Berrizbeitia UniversidadSimo´nBol´ıvar, DepartamentodeMatema´ticas Puras y Aplicadas, Apdo 89000, Caracas 1080-A, Venezuela. E-mail address: [email protected] 1. PREFACIO iii 1. Prefacio En el pr´ologo de su famoso libro Disquisitiones Arithmeticae (1801), Carl Friedrich Gauss escribe: “El problema de distinguir los nu´meros primos de los nu´meros com- puestosesconocidocomounodelosproblemasm´asimportantesyu´tiles de la aritm´etica... La dignidad de la ciencia misma parece requerir que todo posible medio sea explorado para la soluci´on de un problema tan elegante y celebrado.” Fue apenas en agosto del an˜o 2002 que, Manindra Agrawal, Neeraj Kayal y Nitin Saxena, del Departamento de Computaci´on del Instituto de Investigaciones de Kanpur, en India, lograron encontrar una soluci´on deesteproblemaquelacomunidadcient´ıficainternacionalconsideraque califica como una soluci´on son˜ada por Gauss. La soluci´on se conoce hoy comoelalgoritmoAKS,ysebasaenunaextensi´ondelllamado“Pequen˜o Teorema de Fermat”y en el uso de resultados en lo que Gauss llamaba “alta aritm´etica”, o aritm´etica en Anillos Ciclot´omicos. Pr´acticamente toda la matem´atica que se necesita para entender el algoritmo AKS era conocida (y en parte fue desarrollada) por el propio Gauss. Si bien el algoritmo AKS constituye una hazan˜a matem´atica ex- traordinaria, en la pr´actica presenta serias limitaciones, y son varios los cient´ıficosquehanintentadomodificarloyconvertirloenunresultadode mayor utilidad pr´actica. Adem´as de estudiar el algoritmo AKS, expli- caremosenestetrabajolasmejorasquedeestealgoritmohastaahorase han obtenido, incluyendo una mejora que obtuve en noviembre de 2002, y que marc´o el inicio de lo que hoy se llama la versi´on pr´actica de AKS. La historia moderna de la Teor´ıa de Primalidad empez´o en 1876, cuando E´douard Lucas present´o un algoritmo que permite determinar, de una manera asombrosamente eficiente, la primalidad de un nu´mero de Mersenne, esto es, un nu´mero de la forma 2p−1, con p primo. Desde entonces, han sido muchos los progresos en el ´area de la Primalidad, y es nuestra intenci´on la de presentar una buena parte de estos resultados, incluyendo el de Lucas y el algoritmo AKS. Nuestro estudio se diferencia, de los dem´as estudios que conocemos sobre el tema de Primalidad, en las t´ecnicas que usamos para obtener y presentar buena parte de estos resultados. Hacemos uso sistem´atico de Leyes de Reciprocidad, y las bondades de esta t´ecnica se evidencian tambi´en en el logro de varios resultados originales de inter´es en el tema, iv la mayor´ıa de los cuales constituyen algoritmos que determinan la pri- malidad de nu´meros en diversas familias, y que tambi´en est´an presentes en esta monograf´ıa. Quiero expresar mi agradecimiento a varias personas e instituciones que hicieron posible la realizaci´on de esta monograf´ıa: a mis colegas los profesores Tom Berry y Boris Iskra, que adem´as de ser coautores en publicaciones cuyos resultados figuran en esta monograf´ıa, me han ayu- dado leyendo versiones preliminares, sen˜alando errores y ayud´andome a mejorar la exposici´on en varios aspectos. A la profesora Aurora Olivieri yaJos´eGregorioFernandes,quienesAyudantedeInvestigaci´ondenue- stro Grupo de Investigaci´on, Gid-24, ante el Decanato de Investigaci´on y Desarrollo de la Universidad Sim´on Bol´ıvar (DID). Ellos tambi´en ayu- daron con la lectura y correcci´on de versiones preliminares y con varias discusiones sobre partes del contenido. A V´ıctor Ram´ırez, quien realiza una tesis doctoral bajo mi supervisi´on en el tema. V´ıctor ha realizado aportes descritos en esta monograf´ıa, y hemos tenido fruct´ıferas dis- cusiones sobre varios de los temas que estudiamos en ella. A Carlos Di PriscoyalComit´eorganizadordelaEscuelaVenezolanadeMatem´atica, porinvitarmeaelaborarlamonograf´ıa, paraparticipardictandouncur- so basado en ella, en el marco de la IV Escuela Matem´atica de Am´erica Latina y El Caribe y XVII Escuela Venezolana de Matem´atica, a re- alizarse en M´erida, del 5 al 11 de Septiembre de 2004. A La Asociaci´on Matem´atica Venezolana, por financiar el proyecto y mi participaci´on en esa Escuela. Al DID, por el apoyo financiero que ha dado a nuestro Grupo de Investigaci´on, colaborando de esta manera con la realizaci´on de este proyecto, que forma parte de los proyectos que realiza nuestro grupo. Finalmente, quiero manifestar un profundo agradecimiento a la pro- fesora Mar´ıa Gonz´alez Lima (Mayita), quien me ha acompan˜ado y ayu- dado de muchas maneras durante todo el per´ıodo de elaboraci´on de la monograf´ıa, y a quien le dedico este trabajo. ´ Indice General 1. Prefacio iii Cap´ıtulo 1. Introducci´on 1 Cap´ıtulo 2. Algoritmos Lucasianos 5 1. Nu´meros de Mersenne y de Fermat 5 2. La Ley de Reciprocidad Cuadr´atica (LRC) 12 3. Los Teoremas de P´epin y de Proth 16 4. Cuerpos Finitos 18 5. Demostraci´on del Teorema de Lucas-Lehmer 21 6. Teorema Lucasiano. Aplicaciones 22 7. Implementaci´on del Algoritmo Lucasiano 23 Cap´ıtulo 3. Primalidad en el Siglo XX 27 1. Algoritmos n−1 y n+1. Extensiones. 28 2. Sumas de Gauss y de Jacobi 32 3. Demostraci´on de LRC 36 4. Reciprocidad Cu´bica 36 5. Teorema Lucasiano Cu´bico 38 6. Reciprocidad Bicuadr´atica y Aplicaciones 42 7. Buscando Primos Gigantescos 43 8. El algoritmo de Ciclotom´ıa APRCL 47 Cap´ıtulo 4. AKS 53 1. El Teorema AKS 53 2. Mejoras del Algoritmo AKS 56 Bibliograf´ıa 61 v CAP´ıTULO 1 Introducci´on Sea S un conjunto de enteros positivos. Un Algoritmo Determinista de Primalidad para enteros en S, que denotaremos por (ADP,S) es un algoritmo cuya entrada (input) es un nu´mero n ∈ S y cuya salida (output) es “n es primo” o “n es compuesto”. UnAlgoritmoProbabil´ısticodePrimalidadparaenterosenS (APP,S), es un algoritmo cuya entrada es un nu´mero n ∈ S y cuya salida es “n es primo” o “n es probablemente primo”. Estos algoritmos son muy r´apidos y sirven para producir los llamados “primos industriales”, pero no logran determinar a ciencia cierta que esos nu´meros son en efecto primos. Existe un tercer tipo de algoritmos llamados Algoritmos Aleatorios Deterministas de Primalidad para enteros en S, (AADP,S), que pro- ducen la misma salida que los (ADP,S), pero tales que existe una posi- bilidad, aunque muy remota, de que el algoritmo produzca como salida “no se pudo concluir”. El ´area de la matem´atica y de la computaci´on que hoy se ocupa de estos temas (entre muchos otros) es llamada Teor´ıa Computacional de Nu´meros. Para cada n ∈ S denotemos por C(n) al nu´mero de operaciones bit que realiza el algoritmo para producir una salida. Decimos que el algoritmotieneComplejidadPolinomialsiexisteunpolinomioP(x),con coeficientes reales, tal que para todo n ∈ S se satisface C(n) ≤ P(logn). Au´n cuando la historia de los ADP es muy antigua, el primer con- junto infinito M para el cual se produjo un (ADP,M) de Complejidad PolinomialeselconjuntoM delosllamadosnu´merosdeMersenne. Este conjunto es M = {2p−1| p es primo}. El algoritmo fue presentado por E´douard Lucas en 1876. Hoy recibe el nombre de Algoritmo de Lucas-Lehmer pues fue Lehmer quien, unos 1 2 1. INTRODUCCIO´N an˜os m´as tarde, observ´o que el algoritmo era en efecto un (ADP,M). Los primos m´as grandes conocidos en la actualidad pertenecen a esta familia. Se conocen 41 primos de Mersenne. El m´as grande fue descu- biertoeld´ıa15deMayode2004conelproyectoGIMPS(GreatInterna- tion Mersenne Prime Search), proyecto en el que colaboran centenares de miles de m´aquinas en todo el mundo. Es el nu´mero 224.036.583 −1. Tiene cerca de un mill´on de d´ıgitos decimales m´as que su predecesor, el nu´mero 220996011 −1, que fue descubierto el 17 de noviembre de 2003. El algoritmo de Lucas-Lehmer, como veremos m´as adelante, cuando im- plementado con los m´etodos m´as modernos de multiplicaci´on modu- lar (multiplicaci´on (mod n)) tiene complejidad ligeramente superior a O(logn)2. La mayor´ıa de los paquetes comerciales m´as populares entre los matem´aticoscomoMapleyMathematica,entreotros,incluyenun(APP,N). Estos tienen el mismo orden de complejidad que el algoritmo de Lucas- Lehmer. Producir (ADP,S) de complejidad polinomial para subconjuntos S delconjuntoN delosnu´merosnaturalescadavezm´asgrandeseintentar mejorar la eficiencia de estos algoritmos ocup´o el trabajo de muchos investigadores a lo largo del siglo XX. En agosto de 2002, Manindra Agrawal, Neeraj Kayal y Nitin Saxe- na, del Departamento de Computaci´on del Instituto de Investigaciones de Kanpur, en India, sorprendieron a la comunidad cient´ıfica interna- cional con la publicaci´on del art´ıculo titulado “Primes is in P”, en la que los autores presentaron un (ADP,N) de complejidad polinomial, que hoy es conocido con el nombre de algoritmo AKS. La simplicidad de la matem´atica envuelta en la descripci´on del algoritmo AKS an˜adi´o facinaci´on al impresionante resultado. A pesar de la importancia te´orica de AKS, desde el punto de vista pr´actico, elalgoritmoAKSesmuylento. Veremosqueelalgoritmotiene complejidad mayor que O(logn)6, y en consecuencia no logra competir (cuando se aplica a los nu´meros que las computadoras modernas mane- jan en tiempo razonable) con otros algoritmos existentes actualmente, talescomoelalgoritmociclot´omicodeAdleman-Pomerance-Rumely,que luegofuemejoradoeimplementadoporCohenyLenstra,yqueseconoce como el algoritmo APRCL, o el algoritmo ECCP, basado en la teor´ıa de curvas el´ıpticas. Desde la publicaci´on de AKS, varios autores en diversas partes del mundo han trabajado en mejoras del algoritmo, algunos estudiando con 1. INTRODUCCIO´N 3 mayordetalleslasestructurasmatem´aticasasociadasalalgoritmo, otros presentando variantes del algoritmo que son m´as r´apidas. Al primer tipo de mejoras corresponden los trabajos de Lenstra- Pomerance, y el de Voloch [V]. Al segundo tipo corresponde una mejora que publiqu´e en noviembre de 2002 [B2], la cual fue a su vez mejorada por Qi Cheng [C], luego por Bernstein [Bn] e independientemente por P. Mihailescu con R. Avanzi [MA]. El objetivo de esta monograf´ıa es el estudio de una parte de la histo- riadeestetema,incluyendolosalgoritmosdeLucas-Lehmer,extensiones de este algoritmo, el algoritmo ciclot´omico, el AKS, y de algunas de las mejoras de este algoritmo. El curso tendr´a seis clases te´oricas y cuatro clases pr´acticas. En las dos primeras clases te´oricas estudiaremos el cap´ıtulo 1 de la monograf´ıa: algoritmo de Lucas-Lehmer, que aplica a los nu´meros de Mersenne, y el de P´epin, que aplica a los nu´meros de Fermat. Tambi´en extendere- mos los m´etodos para obtener ADP’s, de la misma complejidad, para familias m´as generales, en concreto, para la familias de nu´meros de la forma A2s ±1, donde s y A son enteros positivos y A < 2s. Las dos primerasclasespr´acticasseusar´anpararepasaryestudiarlosresultados b´asicos de la Teor´ıa de congruencias, incluyendo la Ley de Reciprocidad Cuadr´atica, requisitos necesarios para la comprensi´on de la correctitud de los algoritmos. El contenido de esta parte del curso se extraer´a prin- cipalmentede[B1], unart´ıculoqueescrib´ıparalasecci´ondel“Diablode Los Nu´meros”, de la Gaceta de Real Sociedad Espan˜ola de Matem´atica, durante mi estad´ıa en la Universidad Aut´onoma de Madrid, en primav- era de 2001. En las dos clases te´oricas siguientes, estudiaremos ciertos aspectos de la implementaci´on de estos algoritmos. Veremos tambi´en como el uso de Leyes de Reciprocidad de orden mayor permite producir algoritmos eficientes para familias m´as generales, destacando las diferentes famil- ias consideradas por varios estudiantes y profesores de la Universidad Sim´on Bol´ıvar en los u´ltimos ocho an˜os, y culminaremos con el estudio del famoso algoritmo de ciclotom´ıa APRCL, que es un (ADP,N) de complejidad llamada subexponencial, que fue desarrollado a principios de los 80 y al cual nos referimos antes. Las u´ltimas dos clases te´oricas estar´an dedicadas al estudio del al- goritmo AKS, y de su variante principal, el algoritmo de Berrizbeitia- Bernstein. En las dos u´ltimas clases pr´acticas veremos los requisitos de 4 1. INTRODUCCIO´N la Teor´ıa de Cuerpos Finitos necesarios para la comprensi´on de estos al- goritmos. Tambi´en all´ı estudiaremos las ideas principales de la llamada Transformada R´apida de Fourier, que entre otras cosas permite mul- tiplicar nu´meros de una manera mucho m´as r´apida que los algoritmos usuales de multiplicaci´on.