Conexão entre os portões NAND e a integridade de Turing

14

Eu sei que os portões NAND podem ser usados ​​para criar circuitos que implementam todas as tabelas verdadeiras, e os computadores modernos são construídos com portões NAND. Qual é a ligação teórica entre os portões NAND e a integridade de Turing? Parece-me que os circuitos NAND gate estão mais próximos de autômatos finitos do que as máquinas de Turing. Minha intuição é que eu possa construir flip-flops e, portanto, registros e memória, fora dos portões da NAND, e a memória ilimitada é uma propriedade crucial dos sistemas completos de Turing. Estou procurando uma explicação mais teórica ou matemática ou dicas sobre o que ler.

bsm
fonte
1
"computadores modernos são construídos com portas NAND". Tenho certeza de que isso é falso. As bibliotecas de células típicas para projetos digitais contêm dezenas, quando não centenas, de portas e variam em função (procure portas AOI), bem como na entrada e saída de fãs.
AProgramador #
Você está correto, eu quis dizer em um sentido teórico que toda a lógica digital pode ser construída de NANDs, que são consideradas funcionalmente completa
BSM

Respostas:

9

De fato, há pouca conexão. Para um entendimento completo, deixe-me explicar a conexão entre programas e circuitos .

Um programa (ou algoritmo ou máquina ) é um mecanismo para calcular uma função. Por definição, vamos assumir que a entrada é uma string binária , e a saída é uma saída booleana b . O tamanho da entrada é potencialmente ilimitado. Um exemplo é um programa que determina se a entrada é a codificação binária de um número primo.xb

Um circuito (booleano) é uma coleção de instruções para calcular alguma função finita . Podemos imaginar o circuito como um circuito elétrico ou pensá-lo como uma sequência de instruções (essa visão é chamada de programa confuso em linha reta ). Concretamente, podemos assumir que a entrada é uma string binária de comprimento n , e a saída é booleana. Um exemplo é um circuito que determina se a entrada codifica um número primo (assim como antes, somente agora a entrada deve ter o comprimento n ).x nn

Podemos converter um programa em um circuito P n que simula P em entradas de comprimento n . A sequência correspondente dos circuitos P 0 , P 1 , P 2 , ... não é arbitrária - todos eles podem ser construídos por um programa que forneceu n saídas P n . Chamamos tal sequência de um dos circuitos de um uniforme circuito (confusa, que muitas vezes pensam da sequência como um "único" circuito P n para um indefinido n ).PPnPnP0 0,P1,P2,...nPnPnn

Nem toda sequência de circuitos é uniforme. De fato, uma sequência de circuitos pode calcular todas as funções, de cadeias de caracteres a booleanas, computáveis ​​ou não-computáveis! No entanto, na teoria da complexidade, estamos interessados ​​em modelos não uniformes nos quais os circuitos são restritos. Por exemplo, a pergunta P = NP afirma que problemas completos de NP não podem ser resolvidos por algoritmos de tempo polinomial. Isso implica que problemas NP-completos não podem ser resolvidos por circuitos uniformes de tamanho polinomial. Além disso, é conjecturado que problemas completos de NP não possam ser resolvidos por circuitos polinomiais de tamanho sem a exigência de uniformidade .

Modelos de computação completos de Turing são modelos que realizam todas as funções computáveis ​​(e não mais). Por outro lado, sistemas completos de portões (como AND, OR, NOT ou NAND) permitem calcular funções finitas arbitrárias usando circuitos feitos com esses portões. Tais sistemas completos podem calcular funções completamente arbitrárias usando sequências (irrestritas) de circuitos.

Yuval Filmus
fonte
Você pode explicar "uma sequência de circuitos pode calcular todas as funções, de cadeias de caracteres a booleanas, computáveis ​​ou não-computáveis"? Sua capacidade de calcular funções não-computáveis ​​(do ponto de vista da integridade de Turing) vem da restrição no tamanho da entrada?
BSM
2
nn
Você pode explicar isso, @YuvalFilmus? Parece estranho que uma função incontestável, como a complexidade de Kolmogorov, seja repentinamente "computável" usando circuitos.
Cort Ammon - Restabelece Monica
2
fn
3

Você está de fato correto. Um circuito lógico combinacional é equivalente a um autômato finito. Os portões NAND não os tornam mais poderosos; elas são usadas porque é simplesmente mais barato construir um circuito lógico digital com apenas um tipo de porta do que construir com todos os portões diferentes. De fato, uma porta NAND pode ser construída a partir de apenas uma porta AND e uma porta NOT. Flip-flops tornam o circuito completo de Turing. Aqui está uma chave útil:

Circuitos combinacionais ~ Autômatos finitos ~ Linguagens regulares ~ Expressões regulares ~ Cálculo proposicional ~ Programas de linha reta

μ

Se você quiser saber mais, existe um livro muito bom que você pode baixar gratuitamente em PDF, explicando tudo isso:

https://cs.brown.edu/people/jes/book/pdfs/ModelsOfComputation.pdf

user628544
fonte