Оцените логическую схему на партии аналогичных входов

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 раз?)

DW
источник
1
Поскольку Эндрю очень хорошо ответил на ваш вопрос, я просто оставлю комментарий. Еслиm большой (как O(2n/n)) а ты оцениваешь C на многих входах (до 2o(n/logn)) то есть C только размера O(2n/n) который может оценить C на любом mвходы. (В литературе эта проблема также называется «массовое производство».) См. Улиг «О синтезе самокорректирующихся схем из функциональных элементов с небольшим количеством надежных элементов». Math.Notes Acad.Sci. СССР 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 тогда и только тогда Cвыполнимо. Время работыO~(2(n/2)(2ϵ)|C|2ϵ)=O~(2n(1ϵ/2)poly(|C|)),

Эндрю Морган
источник