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}nyy′y

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(klog⁡N)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.