e são duas das menores classes de complexidade que temos. (Observe que a hierarquia de tempo logarítmica é igual a e esses são os dois primeiros níveis de ).G H A C 0 L H
Depois de ler esta pergunta , fico interessado em ver se a separação entre essas duas classes é conhecida e, de fato, é fácil separá-las, pois (obrigado a Robin Kothari. Veja também conhecido ). Agora, estou interessado em conhecer sua caracterização de complexidade de circuito correspondente. Pesquisei um pouco e perguntei a algumas pessoas, mas não consegui encontrar a resposta.
Temos boas caracterizações de complexidade de circuito para as classes de complexidade e ?
Nota: mostra muito na definição de uniformidade para pequenas classes de complexidade. Observe que o pequeno limite de tempo não permite que essas máquinas leiam toda a entrada; elas podem apenas ler bits da entrada, e as classes são definidas usando máquinas que podem escrever o endereço de um bit e depois ler diretamente esse bit. (ou seja, não precisa passar por todos os bits anteriores para chegar lá).
Respostas:
Penso que é muito mais interessante que as classes de complexidade do circuito usadas pela teoria da complexidade do CS façam previsões diferentes e usem métricas diferentes das da comunidade VLSI. Na complexidade VLSI das funções booleanas :
Curiosamente, a complexidade do circuito VLSI tem a tendência de tratar a profundidade como "irrelevante", pois há uma e apenas uma "profundidade" que importa: o caminho crítico. Para fins mais práticos, um circuito arbitrariamente complexo pode ser tratado como com uma latência de n .O ( 1 ) n
Na verdade, não tenho a certeza, mesmo que o conceito de / N L o g o t i m e traduz-se directamente para a complexidade do circuito VLSI. Mesmo o resultado de Shannons 2 n / n não se traduz facilmente: os resultados de Shannons são válidos apenas para uma base booleana que consiste em uma ity 2 ≤ 2 {AND, OR, NOT}. Essa não é a única base, e o número de "portões" necessários diminui drasticamente à medida que você permite mais e mais tipos de portões. O que se segue são um r um e um 2D L o gTi m e NL o gTi m e 2n/ n ≤ 2 um R e um2 de uma biblioteca de células padrão comercial VLSI normalizada para o tamanho de uma porta NAND de 2 entradas:
Especificamente, observar as
aoi
/oai
portões que sãoAnd Or Invert
/Or And Invert
consistindo de aridade dimensionadas primeira função alimentando a segunda função, em que o número de primeiros função portões é igual ao número de vezes aridade aparece. Por exemplo,aoi22
representa "Dois dois portões AND de entrada que alimentam um portão NOR".Meu argumento é: Tomada separadamente, uma
oai222
função pode ser construída usando três portas OR de 2 entradas e uma porta NAND de 3 entradas, para uma área total de ~ 4,56, sem incluir nenhuma área usada para interconexão. No entanto, essa primitiva pode ser realizada em uma área de apenas 1,72, o que significa que uma manifestação discreta da mesma função booleana consome 2,65 vezes mais área.As propriedades de propagação para as primitivas mais complexas também são significativamente melhores do que o que seria alcançado usando portões discretos.
Na complexidade das implementações VLSI e representações gráficas de funções booleanas com aplicação à multiplicação inteira mostra que prever a complexidade do circuito usando um modelo OBDD superestima a complexidade real do circuito:
fonte