Un algoritmo galáctico es un algoritmo con un rendimiento teórico ( asintótico ) excepcional , pero que no se utiliza debido a limitaciones prácticas. Las razones típicas son que las mejoras de rendimiento solo se manifiestan en problemas tan grandes que nunca se presentan, o que la complejidad del algoritmo supera una mejora relativamente pequeña en el rendimiento real. Los algoritmos galácticos fueron denominados así por Richard Lipton y Ken Regan [ 1 ] porque nunca se utilizarán en ningún conjunto de datos en la Tierra.
Posibles casos de uso
Aunque nunca se utilicen en la práctica, los algoritmos galácticos aún pueden contribuir a la informática :
- Un algoritmo, aunque poco práctico, puede mostrar nuevas técnicas que eventualmente se utilicen para crear algoritmos prácticos. Véase, por ejemplo, la capacidad del canal de comunicación , más abajo.
- La capacidad de cálculo disponible puede alcanzar el punto de inflexión, de modo que un algoritmo que antes era poco práctico se vuelve viable. Véase, por ejemplo, los códigos de verificación de paridad de baja densidad , más abajo.
- Un algoritmo poco práctico aún puede demostrar que se pueden alcanzar los límites conjeturados , o que los límites propuestos son erróneos, y por lo tanto avanzar la teoría de algoritmos (véase, por ejemplo, el algoritmo de Reingold para la conectividad en grafos no dirigidos ). Como afirma Lipton: [ 1 ]
De manera similar, un algoritmo hipotético para el problema de satisfacibilidad booleana con un límite de tiempo grande pero polinomial, como por ejemplo:, aunque inutilizable en la práctica, resolvería el problema P versus NP , considerado el problema abierto más importante en ciencias de la computación y uno de los Problemas del Premio del Milenio . [ 2 ] [ 3 ]Esto por sí solo podría ser importante y, a menudo, constituye una excelente razón para encontrar tales algoritmos. Por ejemplo, si mañana se descubriera un algoritmo de factorización con un límite de tiempo enorme, pero demostrablemente polinomial, eso cambiaría nuestra concepción sobre la factorización. El algoritmo podría no llegar a utilizarse, pero sin duda influiría en la investigación futura sobre la factorización.
Ejemplos
Multiplicación de números enteros
Un ejemplo de algoritmo galáctico es la forma más rápida conocida de multiplicar dos números , [ 4 ] que se basa en una transformada de Fourier de 1729 dimensiones . [ 5 ] Necesitaoperaciones de bits, pero como las constantes ocultas por la notación O grande son grandes, nunca se utiliza en la práctica. Sin embargo, también muestra por qué los algoritmos galácticos aún pueden ser útiles. Los autores afirman: "Tenemos la esperanza de que con refinamientos adicionales, el algoritmo pueda volverse práctico para números con apenas miles de millones o billones de dígitos". [ 5 ]
Pruebas de primalidad
La prueba de primalidad AKS es galáctica. Es el algoritmo conocido con la base teórica más sólida que puede tomar un número arbitrario y determinar si es primo . En particular, se demuestra que es de tiempo polinomial , determinista e incondicionalmente correcto . Todos los demás algoritmos conocidos no cumplen al menos uno de estos criterios, pero las deficiencias son menores y los cálculos son mucho más rápidos, por lo que se utilizan en su lugar. En la práctica, ECPP es mucho más rápido que AKS, pero nunca se ha demostrado que sea de tiempo polinomial. La prueba de Miller-Rabin también es mucho más rápida que AKS, pero solo produce un resultado probabilístico. Sin embargo, la probabilidad de error se puede reducir a valores arbitrariamente pequeños (por ejemplo,), suficientemente bueno para fines prácticos. También existe una versión determinista de la prueba de Miller-Rabin, que se ejecuta en tiempo polinomial sobre todas las entradas, pero su corrección depende de la hipótesis generalizada de Riemann (que es ampliamente aceptada, pero no probada). La existencia de estas alternativas (mucho) más rápidas hace que AKS no se utilice en la práctica.
multiplicación de matrices
La primera mejora sobre la multiplicación de matrices por fuerza bruta (que tomaoperaciones) fue el algoritmo de Strassen : un algoritmo recursivo que tomaoperaciones. Este algoritmo no es galáctico y se utiliza en la práctica. Otras extensiones de este, que utilizan teoría de grupos sofisticada , son el algoritmo de Coppersmith-Winograd y sus sucesores ligeramente mejores, que tomanoperaciones. Estas son galácticas: "Sin embargo, destacamos que tales mejoras son solo de interés teórico, ya que las enormes constantes involucradas en la complejidad de la multiplicación rápida de matrices generalmente hacen que estos algoritmos sean poco prácticos." [ 6 ]
Capacidad del canal de comunicación
Claude Shannon demostró un código simple pero asintóticamente óptimo que puede alcanzar la capacidad teórica de un canal de comunicación . Requiere asignar una palabra clave aleatoria a cada posibleMensaje de -bits, luego decodificación mediante la búsqueda de la palabra clave más cercana. SiSi se elige un tamaño suficientemente grande, esto supera cualquier código existente y puede acercarse arbitrariamente a la capacidad del canal. Desafortunadamente, cualquierLo suficientemente grande como para superar los códigos existentes también es completamente impracticable. [ 7 ] Estos códigos, aunque nunca se utilizaron, inspiraron décadas de investigación en algoritmos más prácticos que hoy pueden alcanzar tasas arbitrariamente cercanas a la capacidad del canal. [ 8 ]
Subgráficos
El problema de decidir si un gráficocontienecomo menor es NP-completo en general, pero dondees fijo, se puede resolver en tiempo polinomial. El tiempo de ejecución para probar sies menor de edaden este caso es, [ 9 ] dondees el número de vértices eny la notación de la gran O oculta una constante que depende superexponencialmente deLa constante es mayor queen la notación de flecha hacia arriba de Knuth , dondees el número de vértices en. [ 10 ] Incluso el caso deno se puede calcular razonablemente ya que la constante es mayor que 2 pentado por 4, o 2 tetrado por 65536, es decir,.
fallos criptográficos
En la jerga criptográfica , una "ruptura" es cualquier ataque más rápido en expectativa que la fuerza bruta , es decir, realizar un descifrado de prueba para cada clave posible. Para muchos sistemas criptográficos, se conocen rupturas, pero siguen siendo prácticamente inviables con la tecnología actual. Un ejemplo es el mejor ataque conocido contra AES de 128 bits , que requiere solooperaciones. [ 11 ] A pesar de ser poco prácticos, los análisis teóricos pueden brindar información sobre patrones de vulnerabilidad y, a veces, conducir al descubrimiento de vulnerabilidades explotables.
El problema del viajante
Durante varias décadas, la mejor aproximación conocida al problema del viajante en un espacio métrico fue el muy simple algoritmo de Christofides , que producía una ruta como máximo un 50% más larga que la óptima. (Muchos otros algoritmos solían hacerlo mucho mejor, pero no se podía demostrar que lo hicieran). En 2020, se descubrió un algoritmo más nuevo y mucho más complejo que puede superarlo porpor ciento. [ 12 ] Aunque nadie cambiará jamás a este algoritmo por su mínima mejora en el peor de los casos, todavía se considera importante porque "esta minúscula mejora rompe un estancamiento tanto teórico como psicológico". [ 13 ]
Búsqueda de Hutter
Un único algoritmo, la "búsqueda de Hutter", puede resolver cualquier problema bien definido en un tiempo asintóticamente óptimo, salvo algunas excepciones . Funciona buscando entre todos los algoritmos posibles (por tiempo de ejecución), mientras que simultáneamente busca entre todas las pruebas posibles (por longitud de prueba), buscando una prueba de corrección para cada algoritmo. Dado que la prueba de corrección es de tamaño finito, "solo" añade una constante y no afecta al tiempo de ejecución asintótico. Sin embargo, esta constante es tan grande que el algoritmo es completamente impráctico. [ 14 ] [ 15 ] Por ejemplo, si la prueba de corrección más corta de un algoritmo dado es de 1000 bits de longitud, la búsqueda examinará primero al menos otras 2 999 pruebas potenciales.
La búsqueda de Hutter está relacionada con la inducción de Solomonoff , que es una formalización de la inferencia bayesiana . Todas las teorías computables (implementadas por programas) que describen perfectamente las observaciones previas se utilizan para calcular la probabilidad de la siguiente observación, otorgando mayor peso a las teorías computables más cortas. Nuevamente, la búsqueda sobre todas las explicaciones posibles hace que este procedimiento sea de gran alcance.
Mejoramiento
Se ha demostrado que el recocido simulado , cuando se utiliza con un esquema de enfriamiento logarítmico, encuentra el óptimo global de cualquier problema de optimización. [ 16 ] Sin embargo, dicho esquema de enfriamiento resulta en tiempos de ejecución totalmente imprácticos y nunca se utiliza. [ 17 ] No obstante, el conocimiento de la existencia de este algoritmo ideal ha dado lugar a variantes prácticas capaces de encontrar soluciones muy buenas (aunque no demostrablemente óptimas) a problemas de optimización complejos. [ 18 ] [ 19 ]
árboles de expansión mínima
El algoritmo MST de tiempo lineal esperado es capaz de descubrir el árbol de expansión mínima de un grafo en, dóndees el número de aristas yes el número de nodos del grafo. [ 20 ] Sin embargo, el factor constante que se oculta con la notación Big O es lo suficientemente grande como para hacer que el algoritmo sea impracticable. Existe una implementación disponible públicamente [ 21 ] y, dadas las constantes de implementación estimadas experimentalmente, solo sería más rápido que el algoritmo de Borůvka para grafos en los que. [ 22 ]
Tablas hash
Los investigadores han encontrado un algoritmo que logra el mejor rendimiento asintótico posible [ 23 ] en términos de compensación tiempo-espacio en tablas hash . [ 24 ] Pero sigue siendo puramente teórico: "A pesar de la eficiencia sin precedentes de la nueva tabla hash, es poco probable que alguien intente construirla pronto. Es demasiado complicado de construir" [ 25 ] y "en la práctica, las constantes realmente importan. En el mundo real, un factor de 10 es determinante". [ 25 ]
Conectividad en grafos no dirigidos
La conectividad en grafos no dirigidos (también conocida como USTCON, por Undirected Source-Target CONnectivity) es el problema de decidir si existe un camino entre dos nodos en un grafo no dirigido, o en otras palabras, si están en el mismo componente conectado . Cuando el uso deSi el espacio lo permite, las soluciones de tiempo polinomial, como el algoritmo de Dijkstra, se conocen y se utilizan desde hace décadas. Pero durante muchos años se desconocía si esto podía hacerse de forma determinista enespacio (clase L ), aunque se sabía que era posible con algoritmos aleatorios (clase RL ).
Un artículo revolucionario de 2008 de Omer Reingold demostró que USTCON está de hecho en L , [ 26 ] proporcionando un algoritmo con un requisito de espacio asintóticamente mejor. Sin embargo, la constante muy grande del algoritmo está oculta por elsignifica que en cualquier problema realista consume significativamente más memoria y tiempo de cálculo que el bien conocidoalgoritmos. A pesar de no utilizarse en la práctica, el artículo sigue siendo un hito en la teoría y ha sido citado más de 1000 veces hasta 2026.
Códigos de verificación de paridad de baja densidad
Los códigos de verificación de paridad de baja densidad , también conocidos como códigos LDPC o códigos Gallager, son un ejemplo de un algoritmo que era galáctico cuando se desarrolló por primera vez, pero que se volvió práctico a medida que mejoró la computación. Fueron concebidos originalmente por Robert G. Gallager en su tesis doctoral [ 27 ] en el Instituto Tecnológico de Massachusetts en 1960. [ 28 ] [ 29 ] Aunque su rendimiento era mucho mejor que el de otros códigos de la época, alcanzando el límite de Gilbert-Varshamov para códigos lineales , los códigos fueron ignorados en gran medida porque su algoritmo de decodificación iterativa era prohibitivamente costoso computacionalmente para el hardware disponible. [ 30 ]
El interés por los códigos LDPC resurgió tras la invención de los códigos turbo (1993), estrechamente relacionados, cuyo algoritmo de decodificación iterativo similar superaba a otros códigos utilizados en aquel entonces. Los códigos LDPC fueron redescubiertos posteriormente en 1996 [ 31 ] y se popularizaron como una alternativa libre de patentes [ 32 ] . Si bien las patentes de los códigos turbo ya han expirado, los códigos LDPC también presentan algunas ventajas técnicas y se utilizan en numerosas aplicaciones en la actualidad.
Triangulación de polígonos
La triangulación de polígonos consiste en la división de un polígono en triángulos que no se superponen. Bernard Chazelle demostró en 1991 que cualquier polígono simple puede triangularse en tiempo lineal. [ 33 ] Sin embargo, el algoritmo propuesto es extremadamente complejo, y existen algoritmos mucho más simples [ 34 ] con un tiempo casi lineal.El rendimiento está disponible, por lo que se utilizan en su lugar. [ 35 ] "Su [el trabajo de Chazelle] representa un importante avance teórico. Sin embargo, su algoritmo O(n) ha resultado muy difícil de programar y, por lo tanto, según el conocimiento de los autores, todavía no hay una implementación práctica disponible." [ 36 ]
Referencias
- 1 2 Lipton, Richard J. ; Regan, Kenneth W. (2013). «David Johnson: Algoritmos galácticos» . Personas, problemas y pruebas: ensayos de la carta perdida de Gödel: 2010. Heidelberg: Springer Berlin. págs. 109–112 . ISBN 9783642414220.
- ↑ Fortnow, L. (2009). "El estado del problema P versus NP" (PDF) . Communications of the ACM . 52 (9): 78– 86. doi : 10.1145/1562164.1562186 . S2CID 5969255 .
- ↑ Fortnow, Lance (2022). "Cincuenta años de P versus NP y la posibilidad de lo imposible" . Communications of the ACM . 65 (1): 76– 85. doi : 10.1145/3460351 .
- ^ David, Harvey; Hoeven, Joris van der (marzo de 2019). "Multiplicación de enteros en el tiempo O (n log n)" . HAL . hal-02070778.
- 1 2 Harvey, David (9 de abril de 2019). "Hemos encontrado una forma más rápida de multiplicar números realmente grandes" . The Conversation . Recuperado el 9 de marzo de 2023 .
- ↑ Le Gall, F. (2012), "Algoritmos más rápidos para la multiplicación de matrices rectangulares", Actas del 53.er Simposio Anual IEEE sobre Fundamentos de la Informática (FOCS 2012) , págs. 514–523 , arXiv : 1204.1111 , doi : 10.1109/FOCS.2012.80 , ISBN 978-0-7695-4874-6, S2CID 2410545
- ↑ Larry Hardesty (19 de enero de 2010). "Explicación: El límite de Shannon" . Oficina de Prensa del MIT.
- ↑ "Códigos que se aproximan a la capacidad (Capítulo 13 de Principios de la comunicación digital II )" (PDF) . MIT OpenCourseWare . 2005.
- ↑ Kawarabayashi, Ken-ichi; Kobayashi, Yusuke; Reed, Bruce (2012). "El problema de los caminos disjuntos en tiempo cuadrático" . Journal of Combinatorial Theory . Serie B. 102 (2): 424– 435. doi : 10.1016/j.jctb.2011.07.004 .
- ↑ Johnson, David S. (1987). "La columna de NP-completitud: una guía en curso (edición 19)". Journal of Algorithms . 8 (2): 285– 303. CiteSeerX 10.1.1.114.3864 . doi : 10.1016/0196-6774(87)90043-5 .
- ↑ Biaoshuai Tao y Hongjun Wu (2015). Seguridad y privacidad de la información . Lecture Notes in Computer Science. Vol. 9144. pp. 39–56 . doi : 10.1007/978-3-319-19962-7_3 . ISBN 978-3-319-19961-0.
- ↑ Anna R. Karlin; Nathan Klein; Shayan Oveis Gharan (1 de septiembre de 2020). "Un algoritmo de aproximación (ligeramente) mejorado para el TSP métrico". arXiv : 2007.01409 [ cs.DS ].
- ↑ Klarreich, Erica (8 de octubre de 2020). "Científicos informáticos baten récord de viajante de comercio" . Quanta Magazine .
- ↑ Hutter, Marcus (14 de junio de 2002). "El algoritmo más rápido y corto para todos los problemas bien definidos". arXiv : cs/0206022 .
- ^ Gagliolo, Matteo (20 de noviembre de 2007). "Búsqueda universal" . Scholarpedia . 2 (11): 2575. Código Bib : 2007SchpJ...2.2575G . doi : 10.4249/scholarpedia.2575 . ISSN 1941-6016 .
- ↑ Granville, V.; Krivanek, M.; Rasson, J.-P. (1994). "Recocido simulado: una prueba de convergencia". IEEE Transactions on Pattern Analysis and Machine Intelligence . 16 (6): 652– 656. Bibcode : 1994ITPAM..16..652G . doi : 10.1109/34.295910 .
- ↑ Nolte, Andreas; Schrader, Rainer (1997), "Una nota sobre el comportamiento en tiempo finito del recocido simulado" , Operations Research Proceedings 1996 , vol. 1996, Berlín, Heidelberg: Springer Berlin Heidelberg, pp. 175–180 , doi : 10.1007/978-3-642-60744-8_32 , ISBN 978-3-540-62630-5, consultado el 6 de febrero de 2023
- ↑ Ingber, Lester (1993). "Recocido simulado: práctica versus teoría" . Modelado matemático y computacional . 18 (11): 29– 57. CiteSeerX 10.1.1.15.1046 . doi : 10.1016/0895-7177(93)90204-C .
- ↑ Liang, Faming; Cheng, Yichen; Lin, Guang (2014). "Recocido de aproximación estocástica simulada para optimización global con un programa de enfriamiento de raíz cuadrada". Journal of the American Statistical Association . 109 (506): 847– 863. doi : 10.1080/01621459.2013.872993 . S2CID 123410795 .
- ↑ Karger, David R.; Klein, Philip N.; Tarjan, Robert E. (1995-03-01). "Un algoritmo aleatorio de tiempo lineal para encontrar árboles de expansión mínima" . Journal of the ACM . 42 (2): 321– 328. doi : 10.1145/201019.201022 . ISSN 0004-5411 .
- ↑ Thiesen, Francisco. "Una implementación en C++ para un algoritmo de árbol de expansión mínima de tiempo lineal esperado (verificación del árbol de expansión mínima de Karger-Klein-Tarjan + Hagerup como subrutina)" . GitHub . Consultado el 19 de noviembre de 2022 .
- ↑ Geiman Thiesen, Francisco. "Árboles de expansión mínima esperados en tiempo lineal" . franciscothiesen.github.io . Consultado el 13 de noviembre de 2022 .
- ↑ Li, Tianxiao; Liang, Jingxun; Yu, Huacheng; Zhou, Renfei (6 de noviembre de 2023). "Límites inferiores ajustados de sonda celular para diccionarios sucintos dinámicos". 2023 IEEE 64th Annual Symposium on Foundations of Computer Science (FOCS) . IEEE. págs. 1842–1862 . arXiv : 2306.02253 . doi : 10.1109/FOCS57990.2023.00112 . ISBN 979-8-3503-1894-4.
- ↑ Bender, Michael; Farach-Colton, Martin; Kuszmaul, John; Kuszmaul, William; Mingmou, Liu (4 de noviembre de 2021). "Sobre el equilibrio óptimo entre tiempo y espacio para tablas hash". arXiv : 2111.00602 [ cs ].
- 1 2 Nadis, Steve (8 de febrero de 2024). "Los científicos encuentran el equilibrio óptimo entre el almacenamiento de datos y el tiempo" . Quanta Magazine . Recuperado el 12 de febrero de 2025 .
- ↑ Reingold, Omer (2008), "Conectividad no dirigida en el espacio logarítmico", Journal of the ACM , 55 (4): 1–24 , doi : 10.1145/1391289.1391291 , MR 2445014 .
- ↑ Gallager, Robert G. (1960). Códigos de verificación de paridad de baja densidad (PDF) (tesis doctoral). Instituto Tecnológico de Massachusetts.
- ↑ Hardesty, L. (21 de enero de 2010). "Explicación: Códigos Gallager" . MIT News . Consultado el 7 de agosto de 2013 .
- ↑ Gallager, RG (enero de 1962). "Códigos de verificación de paridad de baja densidad". IRE Trans. Inf. Theory . 8 (1): 21– 28. Bibcode : 1962IRTIT...8...21G . doi : 10.1109/TIT.1962.1057683 . hdl : 1721.1/11804/32786367-MIT . S2CID 260490814 .
- ↑ Andrews, Kenneth S; Divsalar, Dariush; Dolinar, Sam; Hamkins, Jon; Jones, Christopher R; Pollara, Fabrizio (2007). "El desarrollo de códigos turbo y LDPC para aplicaciones en el espacio profundo" (PDF) . Actas del IEEE . 95 (11). IEEE: 2142–2156 . doi : 10.1109/JPROC.2007.905132 . Archivado del original el 20 de junio de 2009. Recuperado el 4 de marzo de 2025 .
{{cite journal}}: CS1 maint: bot: estado de la URL original desconocido ( enlace ) - ↑ MacKay, David JC ; Neal, Radford M (1996). "Rendimiento cercano al límite de Shannon de códigos de verificación de paridad de baja densidad" (PDF) . Electronics Letters . 32 (18). IET: 1645–1646 . Bibcode : 1996ElL....32.1645M . doi : 10.1049/el:19961141 .
- ↑ Erico Guizzo (1 de marzo de 2004). "ACERCÁNDOSE AL CÓDIGO PERFECTO" . IEEE Spectrum . Archivado del original el 2 de septiembre de 2021."Otra ventaja, quizás la más importante de todas, es que las patentes de LDPC han expirado, por lo que las empresas pueden utilizarlas sin tener que pagar por los derechos de propiedad intelectual."
- ↑ Chazelle, Bernard (1991), "Triangulación de un polígono simple en tiempo lineal", Discrete & Computational Geometry , 6 (3): 485– 524, doi : 10.1007/BF02574703 , ISSN 0179-5376
- ↑ Seidel, Raimund (1991). "Un algoritmo aleatorio incremental simple y rápido para calcular descomposiciones trapezoidales y para triangular polígonos". Geometría Computacional . 1 (1): 51– 64. doi : 10.1016/0925-7721(91)90012-4 .
- ↑ Žalik, Borut; Lamot, Marko (2000). "Una contribución a los algoritmos de triangulación para polígonos simples". Journal of Computing and Information Technology . 8 (4): 319– 331. doi : 10.2498/cit.2000.04.07 .
- ↑ Lamot, Marko; Žalik, Borut (2003). "Un algoritmo rápido de triangulación de polígonos basado en la subdivisión uniforme de planos". Computers & Graphics . 27 (2): 239– 253. doi : 10.1016/S0097-8493(02)00281-9 .
- Análisis asintótico
- Análisis de algoritmos