Évaluer le circuit booléen sur un lot d'entrées similaires

10

Supposons que j'ai un circuit booléen qui calcule une fonction f : { 0 , 1 } n{ 0 , 1 } . Supposons que le circuit est composé de portes ET, OU et NON avec au plus fan-in et fan-out 2.Cf:{0,1}n{0,1}

Soit une entrée donnée. Étant donné C et x , je veux évaluer C sur les n entrées qui diffèrent de x dans une position de bit unique, c'est-à-dire calculer les n valeurs C ( x 1 ) , C ( x 2 ) , , C ( x n )x i est identique à x sauf que son ix{0,1}nCxCnxnC(x1),C(x2),,C(xn)xixie bit est retourné.

Existe-t-il un moyen de le faire plus efficace qu'une évaluation indépendante de n fois sur les n différentes entrées?C nn

Supposons que contient m portes. Ensuite, l'évaluation indépendante de C sur toutes les n entrées prendra du temps O ( m n ) . Existe-t-il un moyen de calculer C ( x 1 ) , C ( x 2 ) , , C ( x n ) en temps o ( m n ) ?CmCnO(mn)C(x1),C(x2),,C(xn)o(mn)


Contexte optionnel: Si nous avions un circuit arithmétique (dont les portes sont la multiplication, l'addition et la négation) sur , alors il serait possible de calculer les n dérivées directionnelles fRnen tempsO(m). Fondamentalement, nous pourrions utiliser des méthodes standard pour le calcul du gradient (règle de rétropropagation / chaîne), en tempsO(m). Cela fonctionne parce que la fonction correspondante est continue et différenciable. Je me demande si quelque chose de similaire peut être fait pour les circuits booléens. Les circuits booléens ne sont pas continus et différenciables, vous ne pouvez donc pas faire la même astuce, mais peut-être existe-t-il une autre technique intelligente que l'on peut utiliser? Peut-être une sorte de truc de Fourier, ou quelque chose?fxi(x)O(m)O(m)

(Question variante: si nous avons des portes booléennes avec fan-in illimité et fan-out borné, pouvez-vous faire mieux asymptotiquement que d'évaluer n fois?)C n

DW
la source
1
Comme Andrew a très bien répondu à votre question, je vais juste laisser un commentaire. Si est grand (comme O ( 2 n / n ) ) et que vous évaluez C sur de nombreuses entrées (jusqu'à 2 o ( n / log n ) ), alors il y a un C de taille uniquement O ( 2 n / n ) qui peut évaluer C sur tout mmO(2n/n)C2o(n/logn)CO(2n/n)Cmcontributions. (Le problème est également appelé «production de masse» dans la littérature.) Voir Uhlig, «Sur la synthèse de schémas d'autocorrection à partir d'éléments fonctionnels avec un petit nombre d'éléments fiables». Notes mathématiques Acad.Sci. URSS 15, 558--562. Dans certains cas, vous pouvez donc faire mieux avec la non-uniformité.
Ryan Williams

Réponses:

10

Je considère qu'il est peu probable qu'une telle astuce soit facile à trouver et / ou vous fournisse des gains importants, car elle donnerait des algorithmes de satisfiabilité non triviaux. Voici comment:

CNx0,,xN1CO~(N|C|)CC|C|+O~(Nn)0i10N1iC(xi)0i10N1ixiC

O~(|C|2ϵ+(N|C|)1ϵ/2+N2ϵ)ϵ>0CCC2n/2|C|n/2CC2n/2CCO~(2(n/2)(2ϵ)|C|2ϵ)=O~(2n(1ϵ/2)poly(|C|))

Andrew Morgan
la source