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 :
É sabido que todas as funções booleanas de variáveis podem ser calculadas por um circuito lógico com portas O ( 2 n / n ) (teorema de Lupanov) e que existem funções booleanas de n variáveis que requerem circuitos lógicos desse tamanho (Shannon teorema). Apresentamos os resultados correspondentes para funções booleanas calculadas por circuitos VLSI, usando o modelo de Thompson de um chip VLSI. Provamos que todas as funções booleanas de n variáveis podem ser calculadas por um circuito VLSI de O ( 2 n ) área e período 1, e provamos que existem funções booleanas de nnO ( 2n/ n)nO ( 2n)nvariáveis para as quais todos os chips VLSI (convexos) devem ter área.Ω ( 2n)
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 eNL o gTi m e2n/ n≤ 2um R e um2 de uma biblioteca de células padrão comercial VLSI normalizada para o tamanho de uma porta NAND de 2 entradas:
2 3 4 <- Aridade
e 1,14 1,28 1,41
1,00 1,14 1,28
ou 1,14 1,41 1,41
nem 1,00 1,14 1,41
xor 1,62 2,44
xnor 1,62 2,44
buf 1.14
inv 0.80
aoi22 1,28
aoi222 1,62
aoi33 1,62
oai22 1,41
oai222 1,72
oai33 1,62
addf 2.64
Especificamente, observar as aoi
/ oai
portões que são And 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.
nn ≥ 2n
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.
PNP
P≠ NPNPf: { 0 , 1 }n→ { 0 , 1 }f2n/ nNP.
f: { 0 , 1 }n→ { 0 , 1 }NP{ 0 , 1 }n2n/ nnnNPNP2n/ n
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:
A T2= Ω ( n2)Ω ( cn)c < 1A T2= O ( n1 + c)
n2 n - 1i - 12 n - i - 11 ≤ i ≤ nA T2= Ω ( i2)1.0 ( 1,09Eu)