. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Motivación Conceptos Preeliminares Caracterizando prime El algoritmo (AKS) | Qué es un número primo? Definición Se dice que p ∈ N, es primo si p > 1 y su único divisor mayor a 1 es p. ¿Es P primo? 4/20
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Motivación Conceptos Preeliminares Caracterizando prime El algoritmo (AKS) | Qué es un número primo? Definición Se dice que p ∈ N, es primo si p > 1 y su único divisor mayor a 1 es p. Los números primos son muy interesantes: ¿Es P primo? 4/20
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Motivación Conceptos Preeliminares Caracterizando prime El algoritmo (AKS) | Qué es un número primo? Definición Se dice que p ∈ N, es primo si p > 1 y su único divisor mayor a 1 es p. Los números primos son muy interesantes: ▶ Son infinitos ¿Es P primo? 4/20
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Motivación Conceptos Preeliminares Caracterizando prime El algoritmo (AKS) | Qué es un número primo? Definición Se dice que p ∈ N, es primo si p > 1 y su único divisor mayor a 1 es p. Los números primos son muy interesantes: ▶ Son infinitos ▶ Todos los naturales se pueden factorizar en primos ¿Es P primo? 4/20
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Motivación Conceptos Preeliminares Caracterizando prime El algoritmo (AKS) | Qué es un número primo? Definición Se dice que p ∈ N, es primo si p > 1 y su único divisor mayor a 1 es p. Los números primos son muy interesantes: ▶ Son infinitos ▶ Todos los naturales se pueden factorizar en primos ▶ Mantienen nuestro dinero e información seguros ¿Es P primo? 4/20
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Motivación Conceptos Preeliminares Caracterizando prime El algoritmo (AKS) | Qué es un número primo? Pregunta Dado un número n, cómo puedo saber si es primo o no? ¿Es P primo? 5/20
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Motivación Conceptos Preeliminares Caracterizando prime El algoritmo (AKS) | Qué es un número primo? Pregunta Dado un número n, cómo puedo saber si es primo o no? Una posibilidad es: ▶ Tomar 0 ≤ i ≤ √ n ▶ Chequear si n ≡ 0 mod i ▶ Repetir para todos los i ¿Es P primo? 5/20
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Motivación Conceptos Preeliminares Caracterizando prime El algoritmo (AKS) | Qué es un número primo? Pregunta Dado un número n, cómo puedo saber si es primo o no? Una posibilidad es: ▶ Tomar 0 ≤ i ≤ √ n ▶ Chequear si n ≡ 0 mod i ▶ Repetir para todos los i Pregunta Qué tan rápido es este algoritmo? ¿Es P primo? 5/20
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Motivación Conceptos Preeliminares Caracterizando prime El algoritmo (AKS) | Qué es un número primo? Pregunta Dado un número n, cómo puedo saber si es primo o no? Una posibilidad es: ▶ Tomar 0 ≤ i ≤ √ n ▶ Chequear si n ≡ 0 mod i ▶ Repetir para todos los i Pregunta Qué tan rápido es este algoritmo? Pregunta Qué es ser rápido? ¿Es P primo? 5/20
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Motivación Conceptos Preeliminares Caracterizando prime El algoritmo (AKS) | Qué es un computador? Definición Una máquina de Turing (TM) es un dispositivo que manipula símbolos en una cinta de acuerdo a una tabla de reglas. ¿Es P primo? 7/20
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Motivación Conceptos Preeliminares Caracterizando prime El algoritmo (AKS) | Qué es ser rápido? Definición Una función f es O(g) si lim sup x→∞ f(x) g(x) < ∞ Definición Un problema tiene complejidad polinomial si existe una TM que lo re- suelve en O(kn) pasos para todas las entradas con k su tamaño. Example Borrar un número de longitud k se toma O(k) pasos ¿Es P primo? 9/20
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Motivación Conceptos Preeliminares Caracterizando prime El algoritmo (AKS) | Operaciones en tiempo polinomial [4] Sean ▶ a, b ∈ N de a lo sumo k bits ▶ P, Q ∈ Z[x] de grado m con coeficientes de a lo sumo k bits ¿Es P primo? 10/20
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Motivación Conceptos Preeliminares Caracterizando prime El algoritmo (AKS) | Operaciones en tiempo polinomial [4] Sean ▶ a, b ∈ N de a lo sumo k bits ▶ P, Q ∈ Z[x] de grado m con coeficientes de a lo sumo k bits Entonces ¿Es P primo? 10/20
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Motivación Conceptos Preeliminares Caracterizando prime El algoritmo (AKS) | Operaciones en tiempo polinomial [4] Sean ▶ a, b ∈ N de a lo sumo k bits ▶ P, Q ∈ Z[x] de grado m con coeficientes de a lo sumo k bits Entonces ▶ Computar a + b −→ O(k) ▶ Computar P + Q −→ O(mk) ¿Es P primo? 10/20
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Motivación Conceptos Preeliminares Caracterizando prime El algoritmo (AKS) | Operaciones en tiempo polinomial [4] Sean ▶ a, b ∈ N de a lo sumo k bits ▶ P, Q ∈ Z[x] de grado m con coeficientes de a lo sumo k bits Entonces ▶ Computar a + b −→ O(k) ▶ Computar P + Q −→ O(mk) ▶ Computar a · b −→ O(k2) ▶ Computar P · Q −→ O(m2k2) ¿Es P primo? 10/20
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Motivación Conceptos Preeliminares Caracterizando prime El algoritmo (AKS) | Operaciones en tiempo polinomial [4] Sean ▶ a, b ∈ N de a lo sumo k bits ▶ P, Q ∈ Z[x] de grado m con coeficientes de a lo sumo k bits Entonces ▶ Computar a + b −→ O(k) ▶ Computar P + Q −→ O(mk) ▶ Computar a · b −→ O(k2) ▶ Computar P · Q −→ O(m2k2) ▶ Computar a/b −→ O(k2) ▶ Computar P/Q −→ O(m2k2) ¿Es P primo? 10/20
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Motivación Conceptos Preeliminares Caracterizando prime El algoritmo (AKS) | Operaciones en tiempo polinomial [4] Sean ▶ a, b ∈ N de a lo sumo k bits ▶ P, Q ∈ Z[x] de grado m con coeficientes de a lo sumo k bits Entonces ▶ Computar a + b −→ O(k) ▶ Computar P + Q −→ O(mk) ▶ Computar a · b −→ O(k2) ▶ Computar P · Q −→ O(m2k2) ▶ Computar a/b −→ O(k2) ▶ Computar P/Q −→ O(m2k2) ¿Es P primo? 10/20
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Motivación Conceptos Preeliminares Caracterizando prime El algoritmo (AKS) | Operaciones en tiempo polinomial [4] Sean ▶ a, b ∈ N de a lo sumo k bits ▶ P, Q ∈ Z[x] de grado m con coeficientes de a lo sumo k bits Entonces ¿Es P primo? 11/20
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Motivación Conceptos Preeliminares Caracterizando prime El algoritmo (AKS) | Operaciones en tiempo polinomial [4] Sean ▶ a, b ∈ N de a lo sumo k bits ▶ P, Q ∈ Z[x] de grado m con coeficientes de a lo sumo k bits Entonces ▶ Computar (a, b) −→ O(k2) ¿Es P primo? 11/20
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Motivación Conceptos Preeliminares Caracterizando prime El algoritmo (AKS) | Operaciones en tiempo polinomial [4] Sean ▶ a, b ∈ N de a lo sumo k bits ▶ P, Q ∈ Z[x] de grado m con coeficientes de a lo sumo k bits Entonces ▶ Computar (a, b) −→ O(k2) ▶ Computar a ⋆ b mod n −→ O(k2 log2 n) ▶ Computar P ⋆ Q mod R −→ O(k2 deg2 R) ¿Es P primo? 11/20
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Motivación Conceptos Preeliminares Caracterizando prime El algoritmo (AKS) | Operaciones en tiempo polinomial [4] Sean ▶ a, b ∈ N de a lo sumo k bits ▶ P, Q ∈ Z[x] de grado m con coeficientes de a lo sumo k bits Entonces ▶ Computar (a, b) −→ O(k2) ▶ Computar a ⋆ b mod n −→ O(k2 log2 n) ▶ Computar P ⋆ Q mod R −→ O(k2 deg2 R) ▶ Computar ab mod n −→ O(k2 log3 n) ▶ Computar Pb mod R −→ O(k3 deg2 R) ¿Es P primo? 11/20
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Motivación Conceptos Preeliminares Caracterizando prime El algoritmo (AKS) | Operaciones en tiempo polinomial [4] Sean ▶ a, b ∈ N de a lo sumo k bits ▶ P, Q ∈ Z[x] de grado m con coeficientes de a lo sumo k bits Entonces ▶ Computar (a, b) −→ O(k2) ▶ Computar a ⋆ b mod n −→ O(k2 log2 n) ▶ Computar P ⋆ Q mod R −→ O(k2 deg2 R) ▶ Computar ab mod n −→ O(k2 log3 n) ▶ Computar Pb mod R −→ O(k3 deg2 R) ▶ Verificar si a es una potencia perfecta −→ O(k3) ¿Es P primo? 11/20
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Motivación Conceptos Preeliminares Caracterizando prime El algoritmo (AKS) | Nuestro algoritmo Para un número n el algoritmo anterior corre en O(21 2 log n log2 n) ▶ Tomar 1 ≤ i ≤ √ n −→ O( √ n) = O(21 2 log n) ▶ Chequear si n ≡ 0 mod i −→ O(log2 n) ▶ Repetir para todos los i ¿Es P primo? 12/20
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Motivación Conceptos Preeliminares Caracterizando prime El algoritmo (AKS) | Nuestro algoritmo Para un número n el algoritmo anterior corre en O(21 2 log n log2 n) ▶ Tomar 1 ≤ i ≤ √ n −→ O( √ n) = O(21 2 log n) ▶ Chequear si n ≡ 0 mod i −→ O(log2 n) ▶ Repetir para todos los i No es polinomial en log n... es exponencial! ¿Es P primo? 12/20
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Motivación Conceptos Preeliminares Caracterizando prime El algoritmo (AKS) | Nuestro algoritmo Para un número n el algoritmo anterior corre en O(21 2 log n log2 n) ▶ Tomar 1 ≤ i ≤ √ n −→ O( √ n) = O(21 2 log n) ▶ Chequear si n ≡ 0 mod i −→ O(log2 n) ▶ Repetir para todos los i No es polinomial en log n... es exponencial! Pregunta Hay un algoritmo polinomial en el tamaño de un número que decida si es primo? ¿Es P primo? 12/20
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Motivación Conceptos Preeliminares Caracterizando prime El algoritmo (AKS) | Caracterizando prime Teorema (Caracterización de prime) Sea n ∈ N, n ≥ 2 y sea a ∈ Z tal que (a, n) = 1. Luego (x + a)n ≡ xn + a mod n ⇐⇒ n ∈ prime ¿Es P primo? 14/20
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Motivación Conceptos Preeliminares Caracterizando prime El algoritmo (AKS) | Caracterizando prime Teorema (Caracterización de prime) Sea n ∈ N, n ≥ 2 y sea a ∈ Z tal que (a, n) = 1. Luego (x + a)n ≡ xn + a mod n ⇐⇒ n ∈ prime Algoritmo: ▶ Computar (x + 1)n − (xn + 1) ▶ Verificar si n divide cada uno de los coeficientes ▶ Si los divide n ∈ prime ▶ Si no n / ∈ prime ¿Es P primo? 14/20
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Motivación Conceptos Preeliminares Caracterizando prime El algoritmo (AKS) | Caracterizando prime Teorema (Caracterización de prime) Sea n ∈ N, n ≥ 2 y sea a ∈ Z tal que (a, n) = 1. Luego (x + a)n ≡ xn + a mod n ⇐⇒ n ∈ prime Algoritmo: ▶ Computar (x + 1)n − (xn + 1) ▶ Verificar si n divide cada uno de los coeficientes ▶ Si los divide n ∈ prime ▶ Si no n / ∈ prime Pero calcular (x + a)n requiere O(n) multiplicaciones ¿Es P primo? 14/20
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Motivación Conceptos Preeliminares Caracterizando prime El algoritmo (AKS) | Caracterizando prime Teorema (Caracterización de prime) Sea n ∈ N, n ≥ 2 y sea a ∈ Z tal que (a, n) = 1. Luego (x + a)n ≡ xn + a mod n ⇐⇒ n ∈ prime Algoritmo: ▶ Computar (x + 1)n − (xn + 1) ▶ Verificar si n divide cada uno de los coeficientes ▶ Si los divide n ∈ prime ▶ Si no n / ∈ prime Pero calcular (x + a)n requiere O(n) multiplicaciones FAIL D: ¿Es P primo? 14/20
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Motivación Conceptos Preeliminares Caracterizando prime El algoritmo (AKS) | Caracterizando prime Teorema (Posible solución) Sea n ∈ N, n ≥ 2 y sean a, r ∈ Z tales que (a, n) = 1. Luego n ∈ prime ⇒ (x + a)n ≡ xn + a mod xr − 1, n (*) ¿Es P primo? 15/20
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Motivación Conceptos Preeliminares Caracterizando prime El algoritmo (AKS) | Caracterizando prime Teorema (Posible solución) Sea n ∈ N, n ≥ 2 y sean a, r ∈ Z tales que (a, n) = 1. Luego n ∈ prime ⇒ (x + a)n ≡ xn + a mod xr − 1, n (*) ▶ Calcular (x + a)n mod xr − 1 se realiza en O(r2 log3 n) pasos ¿Es P primo? 15/20
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Motivación Conceptos Preeliminares Caracterizando prime El algoritmo (AKS) | Caracterizando prime Teorema (Posible solución) Sea n ∈ N, n ≥ 2 y sean a, r ∈ Z tales que (a, n) = 1. Luego n ∈ prime ⇒ (x + a)n ≡ xn + a mod xr − 1, n (*) ▶ Calcular (x + a)n mod xr − 1 se realiza en O(r2 log3 n) pasos ▶ Si r fuese lo suficientemente pequeño todo funcionaría ¿Es P primo? 15/20
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Motivación Conceptos Preeliminares Caracterizando prime El algoritmo (AKS) | Caracterizando prime Teorema (Posible solución) Sea n ∈ N, n ≥ 2 y sean a, r ∈ Z tales que (a, n) = 1. Luego n ∈ prime ⇒ (x + a)n ≡ xn + a mod xr − 1, n (*) ▶ Calcular (x + a)n mod xr − 1 se realiza en O(r2 log3 n) pasos ▶ Si r fuese lo suficientemente pequeño todo funcionaría :D ¿Es P primo? 15/20
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Motivación Conceptos Preeliminares Caracterizando prime El algoritmo (AKS) | Caracterizando prime Teorema (Posible solución) Sea n ∈ N, n ≥ 2 y sean a, r ∈ Z tales que (a, n) = 1. Luego n ∈ prime ⇒ (x + a)n ≡ xn + a mod xr − 1, n (*) ▶ Calcular (x + a)n mod xr − 1 se realiza en O(r2 log3 n) pasos ▶ Si r fuese lo suficientemente pequeño todo funcionaría :D ▶ Existen n / ∈ prime que satisfacen * para algunos a! ¿Es P primo? 15/20
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Motivación Conceptos Preeliminares Caracterizando prime El algoritmo (AKS) | Caracterizando prime Teorema (Posible solución) Sea n ∈ N, n ≥ 2 y sean a, r ∈ Z tales que (a, n) = 1. Luego n ∈ prime ⇒ (x + a)n ≡ xn + a mod xr − 1, n (*) ▶ Calcular (x + a)n mod xr − 1 se realiza en O(r2 log3 n) pasos ▶ Si r fuese lo suficientemente pequeño todo funcionaría :D ▶ Existen n / ∈ prime que satisfacen * para algunos a! FAIL D: ¿Es P primo? 15/20
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Motivación Conceptos Preeliminares Caracterizando prime El algoritmo (AKS) | Algoritmo de Agrawal-Kayal-Saxena Algoritmo AKS: Sea n ≥ 2 1. Verificar que n no sea una potencia perfecta 2. Escoger r mínimo tal que ordr (n) > 4 log2 n 3. Tomar ℓ = ⌊2 √ r log n⌋ 4. Verificar que para todo 2 ≤ a ≤ ℓ, (a, n) = 1 5. Verificar que para todo 2 ≤ a ≤ ℓ (x + a)n ≡ xn + a mod xr − 1, n ¿Es P primo? 17/20
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Motivación Conceptos Preeliminares Caracterizando prime El algoritmo (AKS) | Algoritmo de Agrawal-Kayal-Saxena Algoritmo AKS: Sea n ≥ 2 1. Verificar que n no sea una potencia perfecta 2. Escoger r mínimo tal que ordr (n) > 4 log2 n 3. Tomar ℓ = ⌊2 √ r log n⌋ 4. Verificar que para todo 2 ≤ a ≤ ℓ, (a, n) = 1 5. Verificar que para todo 2 ≤ a ≤ ℓ (x + a)n ≡ xn + a mod xr − 1, n Si n sobrevivió todos estos pasos, es primo. ¿Es P primo? 17/20
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Motivación Conceptos Preeliminares Caracterizando prime El algoritmo (AKS) | Complejidad de AKS Paso 1: Verificar que n no sea una potencia perfecta. Se puede realizar en O(log3 n) Paso 2: Escoger r mínimo tal que ordr (n) > 4 log2 n ¿Es P primo? 18/20
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Motivación Conceptos Preeliminares Caracterizando prime El algoritmo (AKS) | Complejidad de AKS Paso 1: Verificar que n no sea una potencia perfecta. Se puede realizar en O(log3 n) Paso 2: Escoger r mínimo tal que ordr (n) > 4 log2 n r = O(log5 n) ¿Es P primo? 18/20
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Motivación Conceptos Preeliminares Caracterizando prime El algoritmo (AKS) | Complejidad de AKS Paso 1: Verificar que n no sea una potencia perfecta. Se puede realizar en O(log3 n) Paso 2: Escoger r mínimo tal que ordr (n) > 4 log2 n r = O(log5 n) Paso 3: Tomar ℓ = ⌊2 √ r log n⌋. ¿Es P primo? 18/20
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Motivación Conceptos Preeliminares Caracterizando prime El algoritmo (AKS) | Complejidad de AKS Paso 1: Verificar que n no sea una potencia perfecta. Se puede realizar en O(log3 n) Paso 2: Escoger r mínimo tal que ordr (n) > 4 log2 n r = O(log5 n) Paso 3: Tomar ℓ = ⌊2 √ r log n⌋. Se puede realizar en tiempo polinomial. ¿Es P primo? 18/20
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Motivación Conceptos Preeliminares Caracterizando prime El algoritmo (AKS) | Complejidad de AKS Paso 1: Verificar que n no sea una potencia perfecta. Se puede realizar en O(log3 n) Paso 2: Escoger r mínimo tal que ordr (n) > 4 log2 n r = O(log5 n) Paso 3: Tomar ℓ = ⌊2 √ r log n⌋. Se puede realizar en tiempo polinomial. Paso 4: Verificar que para todo 2 ≤ a ≤ ℓ, (a, n) = 1. ¿Es P primo? 18/20
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Motivación Conceptos Preeliminares Caracterizando prime El algoritmo (AKS) | Complejidad de AKS Paso 1: Verificar que n no sea una potencia perfecta. Se puede realizar en O(log3 n) Paso 2: Escoger r mínimo tal que ordr (n) > 4 log2 n r = O(log5 n) Paso 3: Tomar ℓ = ⌊2 √ r log n⌋. Se puede realizar en tiempo polinomial. Paso 4: Verificar que para todo 2 ≤ a ≤ ℓ, (a, n) = 1. Se puede hacer en O(ℓ log2 n) ¿Es P primo? 18/20
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Motivación Conceptos Preeliminares Caracterizando prime El algoritmo (AKS) | Complejidad de AKS Paso 5: Verificar que para todo 2 ≤ a ≤ ℓ (x + a)n ≡ xn + a mod xr − 1, n Se puede realizar en O(ℓr2 log3 n) En total: O(log33/2 n) ¿Es P primo? 19/20
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Motivación Conceptos Preeliminares Caracterizando prime El algoritmo (AKS) | Complejidad de AKS Paso 5: Verificar que para todo 2 ≤ a ≤ ℓ (x + a)n ≡ xn + a mod xr − 1, n Se puede realizar en O(ℓr2 log3 n) En total: O(log33/2 n) Podemos decidir si n ∈ prime en tiempo polinomial! ¿Es P primo? 19/20