Beibehalten des Werts eines Polynoms über eine dynamisch aktualisierte Eingabe


10

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 .P(x1,x2,,xn)Py{0,1}ny

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?Py{0,1}nyyy

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.rPPyiyiP(y)O(r)

(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 .)yiPyii

Gibt es etwas Besseres?

Antworten:


7

PiyyisO(s)


1
yf(y)

1
@AndrewMorgan Abhängig von Ihrer Bewerbung, für meine ist es in Ordnung anzunehmen, dass y gegeben ist. Danke für den Kommentar!
Tatiana Starikovskaya

2
yy

5

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.

PPkO(klogN)N

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.