Sei ein Polynom über einem festen endlichen Feld. Angenommen, wir erhalten den Wert von P für einen Vektor y ∈ { 0 , 1 } n und den Vektor y .
Wir wollen nun den Wert von auf einem Vektor y ' ∈ { 0 , 1 } n so berechnen , dass sich y und y ' an genau einer Position unterscheiden (mit anderen Worten, wir drehen genau ein Bit in y ). Was sind die räumlichen und zeitlichen Kompromisse für dieses Problem?
Wenn beispielsweise die Anzahl der Monome in P ist , können wir die Koeffizienten und die Werte aller Monome in P speichern . Wenn y i umgedreht wird, legen wir den Wert jedes Monoms, das y i enthält, und dann den Wert von P ( y ) unter Verwendung der gespeicherten Informationen fest. Insgesamt brauchen wir O ( r ) Zeit und Raum.
(Ich sage nichts darüber, wie wir die Monome, die zu diesem Zweck identifizieren . Sie können eine vernünftige Darstellung von P wählen. In dem Beispiel gehe ich davon aus, dass wir für jedes i eine Liste von Monomen speichern, die y i enthalten .)
Gibt es etwas Besseres?
quelle
Es ist einfach, Ihren Ansatz zum Speichern von Monomen so zu ändern, dass jede Aktualisierung nur proportional zur Anzahl der geänderten Monome dauert: Aktualisieren Sie einfach den gesamten Polynomwert, indem Sie den neuen Wert addieren und den alten Wert für jedes geänderte Monom subtrahieren.
quelle