Підтримання значення многочлена над динамічно оновленим входом


10

Нехай - поліном над фіксованим кінцевим полем. Припустимо, нам задано значення для деякого вектора та вектора .P(x1,x2,,xn)Py{0,1}ny

Тепер ми хочемо обчислити значення для вектора таке, що і різняться в точно одній позиції (іншими словами, перевернемо рівно один біт на ). Який простір та час компенсації цієї проблеми?Py{0,1}nyyy

Наприклад, якщоr це число одночленним в , ми можемо зберігати коефіцієнти і значення всіх Мономах P . Якщо y i перевернуто, ми фіксуємо значення кожного одночлена, що містить y i, а потім значення P ( y ), використовуючи збережену інформацію. Загалом нам потрібен O ( r ) час та простір.PPyiyiP(y)O(r)

(Я нічого не кажу про те, як ми за призначенням ототожнюємо одночлени, що містять . Ви можете вибрати будь-яке розумне представлення P , у прикладі я припускаю, що ми зберігаємо список одночленів, що містять y i для кожного i .)yiPyii

Чи є щось краще?

Відповіді:


7

Ваша ідея узагальнюється наступним чином: задавши алгебраїчну схему (над кінцевим полем) або булеву схему (обчислюючи біт-розумне представлення ваших елементів кінцевого поля), обчислюючи , а потім підтримуйте значення на кожному затворі в ланцюзі. Коли ви змінюєте i -й біт y , просто поширіть цю зміну вздовж DAG ланцюга, починаючи з входу y i . Якщо схема має розмір s , це займає час і простір O ( s ) . Це може бути набагато меншою, ніж кількість одночленів (що відповідає розміру алгебраїчних схем глибини лише 2).PiyyisO(s)


1
Я не впевнений, чи було це навмисно, але проблема не говорить про те, що нам дано , просто f ( y ) . yf(y)
Ендрю Морган

1
@AndrewMorgan Залежить від вашої заявки, на моєму чудово вважати, що y дано. Дякую за коментар!
Тетяна Стариковська

2
@AndrewMorgan: Дійсно, хоча це технічно правда, те, як формульовано приклад побудови в OQ, здавалося, неявно припускає, що дано. Якщо y не дано, я думаю, що ця проблема стає набагато складнішою. (Тетяна, можливо, варто додати це як уточнення до питання.)yy
Джошуа Грохов,

5

Легко змінити підхід для зберігання монометів таким чином, щоб кожне оновлення вимагало часу лише пропорційне кількості змінених мономеїв: просто оновіть загальне значення полінома, додаючи нове значення та віднімаючи старе значення для кожного зміненого мономера.

Якщо у вас є формула для читання один раз для (тобто кожна змінна з'являється на одному аркуші дерева формули, і кожен внутрішній вузол є арифметичною операцією з двома входами, як плюс чи раз), ви можете підтримувати значення P у логарифмічному значенні час за оновлення за допомогою дерева граблі-стискання за формулою. Застосовуючи цей підхід до довільної формули, час на оновлення змінної, яка з’являється k разів, буде O ( k log N ), де N - розмір формули. Таким чином, за винятком log коефіцієнта, це узагальнює обмеження для кількості змінених одночленів і стосується більш загальних типів розширення многочлена у формулу.PPkO(klogN)N

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.