Processing math: 100%

11 votos

Una manera eficaz para comprobar el coeficiente de x1x2...xn en el producto de m polinomios

Tenemos n variables x1,...,xn m polinomios f1,...,fm.

El grado máximo de cada variable xi en cada polinomio fj1.

Además, cada variable está presente en la mayoría de los dos de los polinomios y cada polinomio contiene un máximo de 3 de las variables.

Definimos F como el producto de todos los polinomios: F=f1f2...fn .

Nos interesa conocer si un determinado plazo (x1x2...xn) aparece en F o no. En otras palabras, si el coeficiente de x1x2...xn sería distinto de cero si estamos totalmente de expandir F. Es allí una manera eficiente para comprobar eso?

He aquí un ejemplo:

f1=(5x+3xyz)

f2=(xy+2y)

f3=(z3)

F=f1f2f3=(5x+3xyz)(xy+2y)(z3)

F=30xy+15x2y18xy2+9x2y2+6yz+7xyz5x2yz+6xy2z3x2y2z2yz2+xyz2

Estamos interesados en saber si es o no el coeficiente de xyz es cero. En el ejemplo anterior, no es cero y es igual a 7. Es allí una manera eficiente de hacerlo (al menos para algunos no trivial casos especiales) que es aplicable a los casos con, por ejemplo, n=300 variables e m=200 polinomios.



Fondo: Aquí hay alguna información de fondo acerca de los orígenes de este problema para el lector interesado:

Dada cualquier función booleana en 3 variables, podemos representar con un vector binario en una de las 8 dimensiones del espacio con entidades igual a 1 si la función devuelve TRUE para que la combinación de entradas. (es decir, estándar de la suma de los productos de la forma)

Se podría utilizar la siguiente matriz lineal del mapa el espacio de las funciones booleanas a un nuevo espacio que puede ser representada con polinomios en 3 variables:

MATRIX W

La anterior matriz se define una transformación reversible (booleano de dominio para el polinomio de dominio) con varias características muy interesantes, algunos de los enumerados a continuación:

i) de la Fila X sólo depende de x, y es 1 en columnas con x 1 en columnas con x (complemento de x).

ii) de la Fila XY es el elemento por elemento producto de la fila X y la de la fila Y. (y sólo depende de XY, o más específicamente xy).

iii) El producto interior de cada par de filas (o columnas) es cero (ortogonales).

iv) Todos los elementos son 1 y -1 (para normalizada w 12n 12n donde n # de variables)

v) de la Matriz es simétrica, por lo w=w y para normalizada w, tenemos w1=w. (La inversa de la transformación y el avance de transformación sólo se diferencian en un factor constante 12n).

vi) Cualquier función booleana de tres (o, en general,n) variables, podría ser representado por un vector binario u donde ui es 1 si y sólo si f es CIERTO para la correspondiente combinación de entradas.

vii) por otra parte, si tenemos dos funciones de f1 y f2, f12=f1f2 está representado por u12=u1u2 donde, es el elemento por elemento del producto. A continuación,v12=w.u12=w(u1u2). (no es igual a wu1wu2, sin embargo se puede realizar regular la multiplicación de polinomio de dominio sólo necesitará reemplazar cualquier x2 1 al final y será equivalente a booleanas de dominio. Tenga en cuenta que dado (iv), en la plaza de cualquier fila será igual a la fila 1)

viii) de la misma forma con tres funciones de f123=f1f2f3, tenemos u123=u1u2u3, v123=w(u1u2u3)

ix) Si multiplicamos F X en el polinomio de dominio, en booleana de dominio de todos los términos con x será multiplicado por el 1 y todos los términos con x será multiplicado por el 1.

x) F(X=0) en el polinomio de dominio da el número de soluciones de (1 elementos) en booleana de dominio. Del mismo modo, el coeficiente de X en el polinomio de dominio es el número de soluciones con x=TRUE menos el número de soluciones con x=FALSE. Del mismo modo que el coeficiente de XY es el número de soluciones con xy ponderado por la paridad (es decir, xy xy soluciones son contados con signo positivo y xy xy soluciones son contados con signo negativo). Esto también es consecuencia directa de la i y ii.

Hay alguna buena referencia para esta transformación? Es conocido por los nombres de lo que puedo ver? Todas las ideas para posibles aplicaciones? Mi motivación fue que el uso de estas bases ortogonales, uno podría simplificar algunos cálculos en la transformada de dominio (por ejemplo, desarrollar más rápido los algoritmos para la solución de SAT o simplificar circuitos lógicos utilizando algebraicas y no algebraicas métodos).

Para probar si un conjunto de ecuaciones booleanas son al mismo tiempo conste, se podría transformar a los polinomios, ampliar, sustituir todas las x2i 1 y comprobar si el resto es cero absoluto o no. Para hacerlo de manera más eficiente, se podría establecer xi a cero para eliminar algunos intermedio términos de la expansión.

Por ejemplo, supongamos xi sólo está presente en f1=axi+bf2=cxi+d, la expansión de xi y la eliminación de xi utilizando el método anterior sería el rendimiento:

F=f1f2f3...fm=(axi+b)(cxi+d)f3...fm=(acx2i+(bc+ad)xi+bd)f3...fm(ac+bd)f3...fm

Luego se puede continuar con la eliminación de las otras variables. Después de la eliminación de todas las variables, el resto se dará el número total de soluciones que satisfacen todas las ecuaciones simultáneamente. Es allí una manera eficiente para obtener la solución para algún subconjunto de los casos, sin la necesidad de exponencial cálculos ?

5voto

MrJavaGuy Puntos 631

He aquí la prueba de la complejidad. Todavía estoy interesado en sugerencias para los diferentes enfoques creativos para resolver el problema (incluso soluciones parciales) y/o de las ideas o referencias para otras posibles aplicaciones.

Para dar una breve prueba, voy a reducir un problema que fue previamente publicado aquí y respondidas por Yuval Filmus a este nuevo problema.

El primer paso es un simple cambio de variable: X=2X1 que se aplica a todas las variables de entrada. De modo que las entradas son ahora definidos sobre los {1,1} en lugar de {0,1}. Por lo tanto ahora tenemos X2=1 en lugar de X2=X. Alternativamente, se podría utilizar directamente la transformación descrita en el problema para obtener los polinomios. Para 3SAT problema, solo necesitamos la transformación polinómica de los siguientes tres funciones:

\begin{matrix} \text{Gate Name} & \text{Boolean} & \text{Polynomial} \\ XOR (y=\neg{x})& xy'+x'y& 1-XY\\ AllOrNone (x=y=z)& xyz+x'y'z' &1+XY+XZ+YZ\\ atLeastOne (x\lor y \lor z)& (x'y'z')' &7+ X + Y + Z -XY-XZ-YZ+ XYZ \end{de la matriz}

El segundo paso es multiplicar FX1X2...Xn. Esto va a cambiar a todos los poderes de uno y convertirlo F=aX2+bX+cF=aX3+bX2+cX(a+c)X+b. No sería difícil mostrar que a+c es, de hecho, el número total de soluciones de (F(X=1) es el número de soluciones con x F(X=1) es el número de soluciones con ¬x) y será igual a cero si y sólo si el conjunto original de ecuaciones no válido. Tenga en cuenta que, en la práctica, para cada variable Xi, podemos elegir uno de los polinomios (cláusula) con Xi, se multiplica por Xi y convertir X2i 1para que la cláusula. Esto reducirá la 3SAT problema el problema que se describe en esta pregunta. En los cálculos anteriores, he utilizado la multiplicación por una constante para la simplificación, pero que no afecta a los resultados.

5voto

kodlu Puntos 1178

Esta es una matriz de Hadamard de Sylvester tipo, escritas en un orden diferente. Existe una enorme literatura sobre este tema.

Sólo utilice el [1,X,Y,XY,Z,ZX,ZY,ZXY] que corresponde a lexicográfica del orden a través de los números enteros, y aplicar la permutación correspondiente a las columnas así.

Ryan O'Donnell notas sobre el Análisis de funciones Booleanas disponible aquí que ahora son publicados como un libro, Claude Carlet capítulos de la Booleanos funciones de aquí son fácilmente accesibles en línea.

En el orden que me dio anteriormente, su matriz es simplemente el 3 veces producto de Kronecker H2H2H2de la básica, de 2 en 2 matriz de Hadamard.

H2=(1111),

Este documento considera la evaluación eficiente de Hadamard representación de los coeficientes.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X