Articulo de referencia

Tiempo pseudopolinomial

En la teoría de la complejidad computacional , un algoritmo numérico se ejecuta en tiempo pseudopolinomial si su tiempo de ejecución está acotado superiormente por una función p...

En la teoría de la complejidad computacional , un algoritmo numérico se ejecuta en tiempo pseudopolinomial si su tiempo de ejecución está acotado superiormente por una función polinomial de dos variables: el valor numérico de la entrada (el entero más grande presente en la entrada) y la longitud de la entrada (el número de bits necesarios para representarla). [ 1 ]

En general, al usar un sistema de numeración posicional , el valor numérico de la entrada crece exponencialmente con respecto a su longitud. Por eso, un algoritmo de tiempo pseudopolinomial no necesariamente se ejecuta en tiempo polinomial con respecto a la longitud de la entrada. La distinción entre el valor de un número y su longitud se debe a la codificación posicional; si las entradas numéricas se codifican en unario , la longitud y el valor son iguales.

Un problema NP-completo con algoritmos de tiempo pseudopolinomial conocidos se denomina débilmente NP-completo . Un problema NP-completo se denomina fuertemente NP-completo si se demuestra que no puede resolverse mediante un algoritmo de tiempo pseudopolinomial a menos que P = NP . Los tipos fuerte y débil de NP-dificultad se definen de forma análoga.

Ejemplos

Pruebas de primalidad

Consideremos la solución del problema de comprobar si un número n es primo verificando ingenuamente si un número en{2,3,,norte}{\displaystyle \{2,3,\dots ,{\sqrt {n}}\}}dividenorte{\displaystyle n}de manera uniforme. Este enfoque puede tardar hastanorte1{\displaystyle {\sqrt {n}}-1}divisiones, que es sublineal en el valor de n pero exponencial en la longitud de n (que es aproximadamenteregistro(norte){\displaystyle \log(n)}Por ejemplo, un número n ligeramente inferior a 10 000 000 000 requeriría hasta aproximadamente 100 000 divisiones, aunque la longitud de n sea de tan solo 11 dígitos. Además, es fácil escribir una entrada (por ejemplo, un número de 300 dígitos) para la cual este algoritmo resulta impracticable. Dado que la complejidad computacional mide la dificultad con respecto a la longitud de la entrada (codificada), este algoritmo ingenuo es en realidad exponencial. Sin embargo, su tiempo es pseudopolinomial.

Compare este algoritmo con un verdadero algoritmo numérico polinomial, por ejemplo, el algoritmo sencillo para la suma: Sumar dos números de 9 dígitos requiere alrededor de 9 pasos simples, y en general el algoritmo es verdaderamente lineal en la longitud de la entrada. Comparado con los números reales que se suman (en miles de millones), el algoritmo podría llamarse "tiempo pseudologarítmico", aunque tal término no es estándar. Por lo tanto, sumar números de 300 dígitos no es impráctico. De manera similar, la división larga es cuadrática: un número de m dígitos se puede dividir entre un número de n dígitos enO(metronorte){\displaystyle O(mn)}pasos (véase la notación Big O ).

En el caso de la primalidad, resulta que existe un algoritmo diferente para comprobar si n es primo (descubierto en 2002) que se ejecuta en tiempoO((registronorte)6){\displaystyle O((\log {n})^{6})}.

Problema de la mochila

En el problema de la mochila , se nos danorte{\displaystyle n}artículos con pesowi{\displaystyle w_{i}}y valorvi{\displaystyle v_{i}}junto con una capacidad de peso máxima de una mochilaW{\displaystyle W}El objetivo es resolver el siguiente problema de optimización; informalmente, ¿cuál es la mejor manera de colocar los artículos en la mochila para maximizar su valor?

maximizari=1norteviincógnitai{\displaystyle \sum _{i=1}^{n}v_{i}x_{i}}
sujeto ai=1nortewiincógnitaiW{\displaystyle \sum _{i=1}^{n}w_{i}x_{i}\leq W}yincógnitai{0,1}{\displaystyle x_{i}\in \{0,1\}}.

Resolver este problema es NP-difícil , por lo que un algoritmo de tiempo polinomial es imposible a menos que P = NP . Sin embargo, unO(norteW){\displaystyle O(nW)}El algoritmo de tiempo es posible utilizando programación dinámica ; dado que el númeroW{\displaystyle W}solo necesitaregistroW{\displaystyle \log W}En resumen, este algoritmo se ejecuta en tiempo pseudopolinomial.

NP-dureza fuerte y débil frente a algoritmos de tiempo polinomial fuertes y débiles

Suponiendo que P ≠ NP, lo siguiente es cierto para problemas computacionales sobre enteros: [ 2 ]

Véase también

Referencias

  1. Michael R. Garey y David S. Johnson . Computadoras e intratabilidad: una guía a la teoría de la NP-completitud . WH Freeman and Company, 1979.
  2. Demaine, Erik. "Límites inferiores algorítmicos: diversión con las demostraciones de dificultad, Lección 2" .