Mantener el valor de un polinomio sobre una entrada actualizada dinámicamente

10

Sea un polinomio sobre un campo finito fijo. Supongamos que se nos da el valor de en algún vector y el vector .PAG(X1,X2,...,Xnorte)PAGy{0 0,1}nortey

Ahora queremos calcular el valor de en un vector manera que e difieran exactamente en una posición (en otras palabras, volteamos exactamente un bit en ). ¿Cuáles son las compensaciones de espacio y tiempo para este problema?PAGy{0 0,1}norteyyy

Por ejemplo, si es el número de monomios en , que puede almacenar los coeficientes y los valores de todos los monomios en . Si se voltea , fijamos el valor de cada monomio que contiene y luego el valor de usando la información almacenada. En general, necesitamos tiempo y espacio.rPAGPAGyyoyyoPAG(y)O(r)

(No digo nada acerca de cómo identificamos los monomios que contienen para su propósito. Puede elegir cualquier representación razonable de , en el ejemplo asumo que almacenamos una lista de monomios que contienen para cada .)yyoPAGyyoyo

¿Hay algo mejor?

Tatiana Starikovskaya
fuente

Respuestas:

7

Su idea se generaliza de la siguiente manera: dado un circuito algebraico (sobre el campo finito) o un circuito booleano (que calcula la representación en bits de sus elementos de campo finito) que calcula , luego mantenga el valor en cada puerta del circuito. Cuando cambie el bit -ésimo de , simplemente propague ese cambio a lo largo del DAG del circuito, comenzando desde la entrada . Si el circuito tiene tamaño , esto toma tiempo y espacio. Esto podría ser mucho más pequeño que el número de monomios (que corresponde al tamaño de los circuitos algebraicos de profundidad solo 2).PiyyisO(s)

Joshua Grochow
fuente
1
No estoy seguro de si esto fue intencional, pero el problema no dice que se nos da , solo f ( y ) . yF(y)
Andrew Morgan
1
@AndrewMorgan Depende de su aplicación, para la mía está bien asumir que se le da. ¡Gracias por el comentario!
Tatiana Starikovskaya
2
@AndrewMorgan: En efecto, si bien esto es técnicamente cierto, el camino de la construcción en el ejemplo OQ se formuló parecía que suponen implícitamente que es dada. Si y no se da, creo que este problema se vuelve mucho más difícil. (Tatiana, puede valer la pena agregar esto como una aclaración a la pregunta.)yy
Joshua Grochow
5

Es fácil modificar su enfoque de almacenamiento de monomios para que cada actualización lleve tiempo solo proporcional al número de monomios cambiados: simplemente actualice el valor polinomial total sumando el nuevo valor y restando el valor anterior para cada monomio modificado.

Si tiene una fórmula de lectura única para (es decir, cada variable aparece en una sola hoja del árbol de fórmulas, y cada nodo interno es una operación aritmética de dos entradas como más o veces), entonces puede mantener el valor de P en logarítmico tiempo por actualización usando un árbol rake-compress sobre la fórmula. Aplicando este enfoque a una fórmula arbitraria, el tiempo para actualizar una variable que aparece k veces será O ( k log N ) donde N es el tamaño de la fórmula. Entonces, a excepción del factor log, esto generaliza el límite para el número de monomios cambiados, y se aplica a tipos más generales de expansión del polinomio en una fórmula.PAGPAGkO(kIniciar sesiónnorte)norte

David Eppstein
fuente