Probablemente el resultado más importante en |
teoría de la computación de los últimos 10 años |
Shafi Goldwasser, MIT |
Este mes seguimos con noticias de agosto. Unos días antes del deceso de Dijkstra y Nygaard, el 6 de agosto, tres investigadores indios del Instituto Tecnológico Indio en Kanpur, Manindra Agrawal, Neeraj Kayal y Nitin Saxena, publicaron en la Web (www.cse.iitk.ac.in/news/primality.html) un algoritmo de tiempo polinomial para determinar si un número era o no primo. Lo más sorprendente de la solución es que usa ideas relativamente simples de algebra y un resultado de teoría de números que ya tenía 15 años, presentando todo en sólo 9 páginas. El resultado ya ha sido verificado por conocidos investigadores del área y se piensa que es correcto.
Un Poco de Historia
Encontrar primos es un problema que ya tiene más de 2000 años, desde Eratóstenes y Euclides, y los primeros algoritmos necesitaban un tiempo exponencial. En los últimos 30 años muchos intentaron encontrar una solución obteniendo cuatro tipos de algoritmos distintos:
La Criptografía (aún) está a Salvo
Una pregunta natural es que impacto tiene este resultado en la práctica, en particular en la criptografía. Por ahora, ningún impacto. Muchos algoritmos de encriptación ya usan algoritmos aleatorios para encontrar primos y su seguridad se basa en otro problema: que factorizar un número es difícil.
El problema de descomponer un número en sus factores primos todavía no se resuelve en forma eficiente y ni siquiera se sabe si puede tener una complejidad de tiempo polinomial. Si este problema fuera resuelto en forma eficiente, sin duda que sería posible violar la seguridad de algoritmos de encriptación famosos como RSA. Sin embargo, este nuevo algoritmo para determinar primalidad si puede dar nuevas ideas de como atacar el problema de la factorización.
Si tiene preguntas o sugerencias, envíe e-mail a rbaeza@dcc.uchile.cl