Le moyen le plus efficace de convertir un circuit en un circuit (de n'importe quelle profondeur) avec fanout de porte 1

18

EDIT (22 août 2011):

Je simplifie encore la question et je mets à contribution la question. Peut-être que cette question plus simple aura une réponse facile. Je vais également biffer toutes les parties de la question initiale qui ne sont plus pertinentes. (Merci à Stasys Jukna et Ryan O'Donnell d'avoir répondu partiellement à la question d'origine!)


Contexte:

Étant donné un circuit AC 0 avec une profondeur k et une taille S, il existe un autre circuit AC 0 calculant la même fonction avec une profondeur k et une taille telle sorte que le nouveau circuit a un fanout = 1 pour toutes les portes. En d'autres termes, le circuit ressemble à un arbre (sauf aux entrées, car les entrées peuvent s'étendre à plus d'une porte). Une façon de le faire est de dupliquer toutes les portes qui ont fanout> 1 jusqu'à ce que toutes les portes aient fanout = 1.O(Sk)

Mais est - ce la façon la plus efficace pour convertir AC 0 circuits AC 0 circuits avec sortance 1? J'ai lu ce qui suit dans la leçon 14 des notes de cours de Ryan O'Donnell :

Supposons que C est un circuit de profondeur k de taille S qui calcule la parité. C'est un exercice pour montrer que C peut être converti en un circuit de profondeur-k nivelé, où les niveaux alternent les portes ET et OU, les fils d'entrée sont les 2n littéraux, et chaque porte a un fan-out 1 (c'est-à-dire, c'est un arbre ) - et la taille augmente au maximum .(2kS)2O(S4)

Note de bas de page: En fait, c'est un exercice légèrement délicat. C'est plus facile si vous n'avez qu'à obtenir la taille , qui est presque la même pour nos besoins si vous considérez k comme une «constante».O(Sk)

Est-ce à dire qu'il existe un moyen de prendre n'importe quel circuit de profondeur k AC 0 de taille S et de le convertir en un circuit AC 0 avec fanout 1, profondeur k et taille ? Si oui, comment cela se fait-il et est-ce la méthode la plus connue? (2kS)2

Question d'origine:

Étant donné un circuit AC 0 avec une profondeur k et une taille S, quelle est la méthode la plus connue (en termes de minimisation de la taille du circuit du circuit résultant) pour la convertir en un circuit AC 0 de profondeur k et de fanout de porte 1? Y a-t-il des limites inférieures connues pour cela?


Question plus récente et plus simple:

Cette question est un relâchement de l'original où je n'insiste pas pour que le circuit résultant soit à profondeur constante. Comme expliqué ci-dessus, il existe un moyen de convertir un circuit AC 0 de profondeur k, taille S en un circuit de taille telle sorte que le nouveau circuit ait fanout = 1 pour toutes les portes. Y a-t-il une meilleure construction?O(Sk)

Étant donné un circuit AC 0 avec une profondeur k et une taille S, quelle est la méthode la plus connue (en termes de minimisation de la taille du circuit du circuit résultant) pour la convertir en un circuit de n'importe quelle profondeur avec le fanout de grille 1?

Robin Kothari
la source
5
La borne est ok Mais si la borne ( 2 k S ) 2 tient pour les circuits arbitraires (pas seulement ceux qui calculent la fonction de parité), alors on pourrait simuler chaque circuit fanin-2 de taille S par un fanin -2 formule de taille O ( S 5 ) : les portes S fanin-2 suffisent pour simuler une porte de fanin non bornée. Ensuite, la formule pourrait être transformée en une profondeur O ( log S )O(Sk)(2kS)2SO(S5)SO(logS)(résultat bien connu, attribué à tort à Spira). Ainsi, nous obtiendrions que la profondeur du circuit est la plus . Mais c'est trop beau pour être vrai: la limite supérieure la plus connue pour la profondeur du circuit n'est que O ( S / log S ) . O(logS)O(S/logS)
Stasys
2
Btw vaut en effet aussi pour les circuits arbitraires , mais seulement si nous autorisons les portes de fanin-2 (voir, par exemple, Thm. 4.1 dans le livre de Wegener); les circuits peuvent alors se souvenir des résultats intermédiaires. La situation avec fanin-1 est très différente: ici, les circuits n'ont aucune mémoire. Mais la question de Robin est très intéressante. Il serait même intéressant de montrer que les circuits de profondeur 3 de taille S peuvent être simulés par des formules de profondeur 3 de taille inférieure à S 2 . O(kS)2)SS2
Stasys
4
Je ferais confiance à tout ce que Stas dit ci-dessus; Je n'étais pas très prudent dans ces notes (désolé). D'un autre côté, je me souviens en les écrivant étant assez frustré de trouver le fait - mentionné dans de nombreux articles mais presque jamais avec citation - que l'on peut convertir des circuits arbitraires en circuits en couches sans faire exploser la taille "beaucoup" . J'aimerais voir un indicateur du résultat le plus connu à ce sujet. AC0
Ryan O'Donnell
2
@Ryan O'Donnell: en effet, on peut facilement faire un circuit en couches avec une explosion . Nous utilisons l'associativité pour réaliser que chaque porte ET n'a que des portes OU comme entrées, et vice versa; la profondeur reste inchangée. Ensuite, organisez les portes en fonction de leur profondeur, et ajoutez si nécessaire des portes fanin-1 OR et AND triviales pour obtenir un circuit en couches; la profondeur reste la même et la taille n'augmente que d'un facteur k. Mais j'ai compris que Robin veut qu'un circuit soit converti en une formule (un circuit en forme d'arbre, sauf que les littéraux d'entrée peuvent avoir un grand fanout). O(kS)
Stasys
2
@Ryan O'Donnell: Merci pour la réponse et pour avoir mis en ligne vos notes de cours! En particulier, vos notes de cours sur l'analyse des fonctions booléennes ont été très utiles.
Robin Kothari

Réponses:

11

Je vais essayer de résumer mes commentaires précédents.

Ignorons d'abord le fait que votre circuit d'origine a une profondeur (constante) ; simplement supposer qu'il a une taille S . Soit A le plus petit nombre tel que toutes les tailles de circuit Fanin bornes S peut être transformé en une formule de Fanin bornes F de taille O ( S A ) . Je prétends que le mieux que nous puissions faire à ce jour est d'obtenir A = O ( S / log 2 S ) . Par exemple, on ne sait pas si même si un circuit (Fanin-2) de taille S = O ( n )kSASFO(SA)A=O(S/log2S)S=O(n)peut être simulé par une formule de taille inférieure à .exp(n/logn)

Pour montrer la revendication, on transforme la formule dans un Fanin-2 formule F ' de taille M = O ( S 2 A ) . Il est bien connu que la profondeur D de chaque formule F ' peut être réalisée logarithmique dans sa taille, qui est D = O ( log M ) = O ( A log E ) . [Ce fut la première fois par Khrapchenko 1968, puis la constante sous grand-O a été amélioré pour D 1,73 log 2 MFFM=O(S2A)DFD=O(logM)=O(AlogS)D1.73log2Mpar plusieurs auteurs.] D'autre part, le résultat le plus connu pour les circuits fanin-2 [Paterson et Valiant, TCS 2 (3), 397-400] dit que . Ainsi, ayant une simulation avec une beaucoup plus petite que S / log 2 S améliorerait le plus connu simulation Taille profondeur pour les circuits.Depth=O(Size/logSize)AS/log2S

Cependant, ce n'est qu'un "mot d'avertissement" - cela ne répond pas à votre question car vous supposez que votre circuit d'origine a une profondeur constante , ce qui implique que dans ce cas, nous pouvons simplement prendre A = k (ou A = k - 1 si nous avons une seule porte de sortie). La puissance de la simulation Paterson-Valiant est qu'il applique à arbitraire, même des circuits très asymétriques dont la profondeur est presque toute taille! Mais dans votre milieu profondeur limitée, même le cas k = 3 est pas clair: peut chaque circuit profondeur 3 de la taille S être transformée en une formule de taille profondeur 3 beaucoup plus petite que S 2kA=kA=k1k=3SS2? Je suppose que la réponse devrait être «non» (cela pourrait être un exercice intéressant pour les étudiants). Une formule de profondeur 3 n'est qu'un grand OU de CNF. La question est de trouver un OU CNF qui partagent de nombreuses clauses en commun, mais autrement sont « très différents » pour forcer une grande profondeur formule 3.

SD3S2n2DO(S2)O(DlogS)

fAC0 kSfDk1+log2SDklogSlogS

Stasys
la source