Оцініть булеву схему на партії подібних входів


10

Припустимо, у мене булева схема C що обчислює деяку функцію f:{0,1}n{0,1}. Припустимо, схема складається з воріт І, АБО, А НЕ з вентилятором і не більше 2 вентиляторів.

Дозволяє x{0,1}nбути заданим входом. ДаноC і x, Я хочу оцінити C на n входи, які відрізняються від x в єдиній бітовій позиції, тобто для обчислення n значення C(x1),C(x2),,C(xn) де xi те саме, що x за винятком того, що його iго біт перевернутий.

Чи є спосіб зробити це більш ефективним, ніж незалежне оцінювання C n разів на n різні входи?

Припустимо C містить mворота. Потім самостійно оцінюючиC на всіх n входи приймуть O(mn)час. Чи є спосіб обчислитиC(x1),C(x2),,C(xn) в o(mn) час?


Необов’язковий контекст: якби у нас була арифметична схема (воротами якої є множення, додавання та заперечення) надR, тоді можна було б обчислити n направлені похідні fxi(x) в O(m)час. В основному, ми могли використовувати стандартні методи для обчислення градієнта (правило розповсюдження / правило ланцюга), вO(m)час. Це працює, тому що відповідна функція є безперервною та диференційованою. Мені цікаво, чи можна щось подібне зробити для булевих схем. Булеві схеми не є безперервними та диференційованими, тому ви не можете зробити той самий трюк, але, можливо, є якась інша розумна техніка, яку можна використати? Може, якийсь трюк Фур'є, чи щось?

(Варіантне запитання: якщо у нас булеві ворота з необмеженим вентилятором і обмеженим вентилятором, чи можна зробити асимптотично краще, ніж оцінювати C n разів?)


1
Оскільки Ендрю відповів на ваше запитання досить добре, я просто залишу коментар. Якщоm великий (як O(2n/n)) і ви оцінюєте C на багатьох входах (до 2o(n/logn)) то є a C тільки розміру O(2n/n) який може оцінити C на будь-якому mвходи. (Проблему в літературі також називають "масовим виробництвом".) Див. Уліг, "Про синтез самокоригуючих схем з функціональних елементів з невеликою кількістю надійних елементів". Math.Notes Акад. Наук. СРСР 15, 558--562. Так що в деяких випадках ви можете зробити краще з нерівномірністю.
Райан Вільямс

Відповіді:


10

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

Перш за все, хоча нібито простіше, ваша проблема може насправді вирішити більш загальну проблему, задану схемою C і N входи x0,,xN1, оцінити C на всіх входах швидше, ніж O~(N|C|)час. Причина в тому, що ми можемо налаштуватиC в ланцюг C розміру |C|+O~(Nn) який на вході 0i10N1i, виходи C(xi). В основному ми просто робимо невелику таблицю пошуку, яка надсилається0i10N1i до xi, і з'єднайте його C.

Потім нетривіальні алгоритми для пакетної оцінки булевих ланцюгів можуть бути використані для створення швидких алгоритмів задоволення. Ось приклад у простому випадку, коли ми припускаємо, що алгоритм робить оцінку вчасноO~(|C|2ϵ+(N|C|)1ϵ/2+N2ϵ) для будь-якої постійної ϵ>0. На вході схемаC, ми можемо вирішити задоволення, розширивши C в ланцюг C розміру 2n/2|C| що є АБО над усіма можливими варіантами першого n/2 входи до C(залишивши інші входи вільними). Потім ми проводимо групову оцінкуC на всі його 2n/2входи. Кінцевим результатом є те, що ми знаходимо задовольняюче завданняC iff Cзадовольняє. Час роботи -O~(2(n/2)(2ϵ)|C|2ϵ)=O~(2n(1ϵ/2)poly(|C|)).

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