Estoy mirando el siguiente problema:
Dados vectores dimensionales de números naturales v 1 , ... , v my algún vector de entrada u , ¿es u una combinación lineal de v i 's con coeficientes numéricos naturales?
es decir, ¿hay alguna donde u = t 1 v 1 + ⋯ + t m v m ?
Obviamente, la versión en números reales de este problema se puede resolver utilizando la eliminación gaussiana. Me pregunto, ¿se ha estudiado la versión entera de este problema? ¿Qué algoritmos existen para resolverlo?
Tenga en cuenta que esto está usando números naturales, pero no aritmética modular, por lo que está algo separado del Teorema del resto chino y sistemas como ese. Además, parece estar relacionado con las ecuaciones de diofantina, pero me pregunto qué se ha hecho en el caso en que solo se consideran enteros no negativos. Esto también recuerda un problema de suma de subconjuntos multidimensional, generalizado para permitirnos tomar un número arbitrario de copias de cada vector. También parece estar relacionado con probar si es un elemento de la red generada por v 1 , ... , v m , excepto que aquí solo permitimos combinaciones lineales con coeficientes no negativos.
Para cualquier persona interesada, esto se motiva al observar si un vector Parikh está en un conjunto lineal, como en el Teorema de Parikh .
En particular, estoy interesado en un algoritmo que pueda resolver el problema utilizando solo operaciones de números naturales, evitando entrar en los números reales / flotantes.
Respuestas:
Su problema es NP completo, mediante la reducción de Subset Sum (está en NP ya que el hecho de que todo sea no negativo limita suficientemente los coeficientes de la solución). Dada una instancia de Subset Sum (¿hay un subconjunto de S sumando a T ?), Construimos una instancia v 1 , ... , v 2 n , u de su problema como sigue. Para cada 1 ≤ i ≤ n , ponemos v iS= { s1, ... , snorte} , T S T v1, ... , v2 n, u 1 ≤ i ≤ n vyo ser el vector con dos entradas distintas de cero: y v i , n + 1 = s i , y v n + i ser el vector con una única entrada distinta de cero v n + i , i = 1 . El vector objetivo es u = 1 , ... , 1 , T . Cada combinación natural de v 1 , ... , v 2 nvyo , yo= 1 vi , n + 1= syo vn + i vn + i , i= 1 u = 1 , ... , 1 , T v1, ... , v2 n igual a debe seleccionar exactamente uno de cada uno de v i , v n + i , y así codifica un subconjunto de S cuya suma es el valor del último componente.1 , ... , 1 , ∗ vyo, vn + i S
fuente