Un algoritmo galáctico es un algoritmo con un rendimiento teórico ( asintótico ) sin precedentes , pero que no se utiliza debido a limitaciones prácticas. Las razones típicas son que las mejoras de rendimiento solo aparecen para problemas que son tan grandes que nunca ocurren, o la complejidad del algoritmo supera una mejora relativamente pequeña en el rendimiento. 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 de la Tierra.
Incluso si nunca se utilizan en la práctica, los algoritmos galácticos aún pueden contribuir a la ciencia informática:
De manera similar, un algoritmo hipotético para el problema de satisfacibilidad booleano con un límite de tiempo grande pero polinomial, como , aunque inutilizable en la práctica, resolvería el problema P versus NP , considerado el problema abierto más importante en informática y uno de los problemas del Premio del Milenio . [2]Esto por sí solo podría ser importante y, a menudo, es una gran razón para encontrar dichos algoritmos. Por ejemplo, si mañana se descubriera que existe un algoritmo de factorización con un límite temporal enorme pero demostrablemente polinómico, eso cambiaría nuestras creencias sobre la factorización. Es posible que el algoritmo nunca se utilice, pero sin duda dará forma a la investigación futura sobre factorización.
Un ejemplo de algoritmo galáctico es la forma más rápida conocida de multiplicar dos números , [3] que se basa en una transformada de Fourier de 1729 dimensiones . [4] Necesita operaciones de bits, pero como las constantes ocultas por la notación O grande son grandes, nunca se usa 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 más refinamientos, el algoritmo pueda volverse práctico para números con solo miles de millones o billones de dígitos". [4]
La primera mejora con respecto a la multiplicación de matrices por fuerza bruta (que necesita multiplicaciones) fue el algoritmo de Strassen : un algoritmo recursivo que necesita multiplicaciones. Este algoritmo no es galáctico y se utiliza en la práctica. Otras extensiones de este algoritmo, que utilizan una teoría de grupos sofisticada, son el algoritmo Coppersmith-Winograd y sus sucesores ligeramente mejores, que necesitan multiplicaciones. Estos son galácticos: "No obstante, subrayamos que estas mejoras son sólo de interés teórico, ya que las enormes constantes implicadas en la complejidad de la multiplicación rápida de matrices suelen hacer que estos algoritmos sean poco prácticos". [5]
Claude Shannon mostró 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 de código aleatoria a cada mensaje de 128 bits posible, luego decodificar encontrando la palabra de código más cercana. Si se elige lo suficientemente grande, esto supera a cualquier código existente y puede acercarse arbitrariamente a la capacidad del canal. Desafortunadamente, cualquier código lo suficientemente grande como para superar los códigos existentes también es completamente impráctico. [6] Estos códigos, aunque nunca se usaron, inspiraron décadas de investigación en algoritmos más prácticos que hoy pueden lograr tasas arbitrariamente cercanas a la capacidad del canal. [7]
El problema de decidir si un grafo contiene como menor es NP-completo en general, pero donde es fijo, se puede resolver en tiempo polinomial. El tiempo de ejecución para probar si es un menor de en este caso es , [8] donde es el número de vértices en y la notación O grande oculta una constante que depende superexponencialmente de . La constante es mayor que en la notación de flecha hacia arriba de Knuth , donde es el número de vértices en . [9] Incluso el caso de no se puede calcular razonablemente ya que la constante es mayor que 2 pentado por 4, o 2 tetrado por 65536, es decir, .
En la jerga criptográfica , una "ruptura" es cualquier ataque que, en teoría, sea más rápido que la fuerza bruta , es decir, que realice un descifrado de prueba para cada clave posible. En muchos sistemas criptográficos, las rupturas son conocidas, pero siguen siendo prácticamente inviables con la tecnología actual. Un ejemplo es el mejor ataque conocido contra AES de 128 bits , que solo requiere operaciones. [10] A pesar de ser poco prácticas, las rupturas teóricas pueden proporcionar información sobre patrones de vulnerabilidad y, a veces, llevar al descubrimiento de rupturas explotables.
Durante varias décadas, la aproximación más conocida al problema del viajante de comercio en un espacio métrico fue el algoritmo de Christofides, muy simple , que producía un camino como máximo un 50 % más largo que el óptimo. (Muchos otros algoritmos normalmente podrían hacerlo mucho mejor, pero no podrían hacerlo de manera demostrable). En 2020, se descubrió un algoritmo más nuevo y mucho más complejo que puede superarlo en un porcentaje. [11] Aunque nadie cambiará nunca a este algoritmo por su muy leve mejora en el peor de los casos, todavía se considera importante porque "esta minúscula mejora rompe tanto un atasco teórico como uno psicológico". [12]
Un único algoritmo, la "búsqueda de Hutter", puede resolver cualquier problema bien definido en un tiempo asintóticamente óptimo, salvo algunas salvedades. 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 la prueba), buscando una prueba de corrección para cada algoritmo. Dado que la prueba de corrección es de tamaño finito, "solo" agrega una constante y no afecta el tiempo de ejecución asintótico. Sin embargo, esta constante es tan grande que el algoritmo es completamente impráctico. [13] [14] Por ejemplo, si la prueba de corrección más corta de un algoritmo dado tiene 1000 bits de longitud, la búsqueda examinará al menos otras 2999 pruebas potenciales primero.
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 (tal como las implementan los programas) que describen perfectamente las observaciones anteriores se utilizan para calcular la probabilidad de la siguiente observación, y se da más peso a las teorías computables más cortas. Una vez más, la búsqueda de todas las explicaciones posibles hace que este procedimiento sea galáctico.
Se ha demostrado que el recocido simulado , cuando se utiliza con un programa de enfriamiento logarítmico, permite encontrar el óptimo global de cualquier problema de optimización. Sin embargo, un programa de enfriamiento de este tipo da como resultado tiempos de ejecución totalmente imprácticos y nunca se utiliza. [15] Sin embargo, saber que existe este algoritmo ideal ha llevado a variantes prácticas que pueden encontrar soluciones muy buenas (aunque no demostrablemente óptimas) para problemas de optimización complejos. [16]
El algoritmo MST de tiempo lineal esperado es capaz de descubrir el árbol de expansión mínimo de un gráfico en , donde es el número de aristas y es el número de nodos del gráfico. [17] Sin embargo, el factor constante que está oculto por la notación Big O es lo suficientemente grande como para hacer que el algoritmo sea poco práctico. Una implementación está disponible públicamente [18] y dadas las constantes de implementación estimadas experimentalmente, solo sería más rápido que el algoritmo de Borůvka para gráficos en los que . [19]
Los investigadores han descubierto un algoritmo que logra el mejor rendimiento asintótico posible [20] en términos de equilibrio entre tiempo y espacio. [21] Pero sigue siendo puramente teórico: "A pesar de la eficiencia sin precedentes de la nueva tabla hash, es poco probable que nadie intente construirla en un futuro próximo. Es demasiado complicada de construir" [22] y "en la práctica, las constantes realmente importan. En el mundo real, un factor de 10 es el final del juego". [23]
{{cite web}}
: CS1 maint: varios nombres: lista de autores ( enlace )