Considere uma função calculada por um circuito booleano com entradas do tamanho sobre a base (com o indegree 2 para os portões ).C n s ( n ) = p o l y ( n ) { X O R , A N D , N O T } X O R , A N D
Um circuito booleano é colocado em camadas se puder ser disposto em camadas ( sendo a profundidade do circuito) de portas, de modo que qualquer borda entre duas portas conecte as camadas adjacentes.d
Dado que possui um circuito booleano de tamanho , o que podemos dizer sobre o tamanho de um circuito em camadas que computa ? Existe um limite superior trivial: adicionando nós fictícios a em cada camada atravessada por uma aresta, obtemos um circuito em camadas de tamanho no máximo . Mas podemos melhorar em geral (por exemplo, ou ) ou para uma classe interessante de circuitos?s f C O ( s 2 ) O ( s ⋅ log s ) O ( s )
Fundo. Essa questão decorre de resultados recentes em criptografia que mostram como calcular com segurança circuitos booleanos em camadas de tamanho com (por exemplo, ou ; Estou tentando entender o quão restritiva essa restrição aos circuitos booleanos em camadas pode ser na prática, seja para circuitos gerais ou para circuitos "naturais". No entanto, não encontrei muito sobre circuitos em camadas na literatura; ponteiros apropriados também seriam bem-vindos.o ( s ) s / log s s / log log s )
fonte
Respostas:
Até onde eu sei, três classes de circuitos em camadas foram estudadas. Em todas essas definições, os arcos são permitidos apenas entre duas camadas adjacentes.
Um circuito é chamado síncrono ( Harper 1977 ) se todos os portões estiverem dispostos em camadas, e as entradas devem estar na camada 0. (Uma definição equivalente: para qualquer porta , todos os caminhos das entradas para têm o mesmo comprimento).g g
Um circuito é localmente síncrono ( Belaga 1984 ) se cada entrada ocorrer exatamente uma vez, mas em uma camada arbitrária.
Um circuito é estratificado ( Gál, Jang 2010 ) se portas e entradas estiverem dispostas em camadas, as entradas podem ocorrer várias vezes em camadas diferentes. (Uma definição equivalente: para qualquer porta e porta de saída , todos os caminhos direcionados de a têm o mesmo comprimento.)g o g o
É fácil ver que as três classes estão listadas da mais fraca à mais forte (e a classe de circuitos irrestritos é ainda mais forte).
Em relação ao tamanho de um circuito em camadas que computa um circuito irrestrito de tamanho , sabemos o seguinte:s
Qualquer circuito de tamanho pode ser calculado por um circuito síncrono / localmente síncrono / em camadas de tamanho ( Wegener 1987, Seção 12.1 ).s s2
Deve ser difícil encontrar uma função explícita que exija um circuito síncrono / localmente síncrono / em camadas de tamanho . Na verdade, todos os circuitos de tamanho e a profundidade pode ser calculado por um circuito síncrono de tamanho ( Wegener 1987, Secção 12.1 ). Assim, mesmo se tivermos uma função explícita que requer circuitos síncronos de tamanho (independentemente de sua complexidade na classe de circuitos irrestritos), não pode ser calculado por um circuito de profundidade e tamanho , que responde a uma pergunta aberta de longa data na complexidade do circuito (ω(slogs) s d O(sd) f ω ( n log n ) f O ( log n ) O ( n )f ω(nlogn) f O(logn) O(n) Valiant 1977 ).
Existem funções explícitas
3.1 com limite inferior para circuitos síncronos , mas limite superior para circuitos localmente síncronos ( Turán 1989 ).Ω(nlogn) O ( n )O(n)
3.2 com limite inferior para circuitos localmente síncronos , mas limite superior para circuitos em camadas ( Turán 1989 ).Ω(nlogn) O ( n )O(n)
É importante observar que esses dois resultados de separação da Turán são comprovados para funções com uma saída. Muitas vezes, é muito mais fácil encontrar uma função com saídas que separam duas dessas classes.n
Como um exemplo, considere a função em que o -ésimo bit de saída é um XOR de todas as entradas, excepto para o th um. Essa função pode ser facilmente calculada por um circuito em camadas do tamanho : Primeiro calcule um XOR de todas as entradas nas camadas do tamanho total , depois calcule todas as saídas em uma camada do tamanho . Por outro lado, requer circuitos síncronos de tamanho . De fato, para calcular uma paridade de comprimento , a profundidade do circuito deve ser pelo menos . Por outro lado, cada camada deve transmitirf:{0,1}n→{0,1}n i i O(n) logn n n f Ω(nlogn) n−1 Ω(logn) n bits de informação, portanto, seu tamanho deve ser pelo menos .n
fonte