Kết nối giữa cổng NAND và tính hoàn chỉnh của Turing


14

Tôi biết rằng các cổng NAND có thể được sử dụng để tạo ra các mạch thực hiện mọi bảng chân lý và các máy tính hiện đại được xây dựng từ các cổng NAND. Liên kết lý thuyết giữa các cổng NAND và tính đầy đủ của Turing là gì? Dường như với tôi rằng các mạch cổng NAND gần với automata hữu hạn hơn các máy Turing. Trực giác của tôi là tôi có thể xây dựng các flip-flop, và do đó các thanh ghi và bộ nhớ, ngoài các cổng NAND và bộ nhớ không giới hạn là một thuộc tính quan trọng của các hệ thống hoàn chỉnh Turing. Tôi đang tìm kiếm một lời giải thích lý thuyết hoặc toán học hơn, hoặc gợi ý về những gì cần đọc.


1
"Các máy tính hiện đại được xây dựng từ cổng NAND" Tôi chắc chắn điều đó là sai. Các thư viện di động điển hình cho thiết kế kỹ thuật số chứa hàng chục khi không phải hàng trăm cổng và chúng khác nhau về chức năng (tìm kiếm các cổng AOI) cũng như trong quạt vào và quạt ra.
AProgrammer

Nói đúng, ý tôi là về mặt lý thuyết, tất cả logic kỹ thuật số có thể được xây dựng từ NANDS, được coi là hoàn thành về mặt chức năng
bsm

Câu trả lời:


9

Thực sự có rất ít kết nối. Để hiểu kỹ hơn, hãy để tôi giải thích kết nối giữa các chương trìnhmạch .

Một chương trình (hoặc thuật toán hoặc máy ) là một cơ chế để tính toán một hàm. Để chắc chắn, chúng ta hãy giả sử rằng đầu vào là một chuỗi nhị phân đầu ra là đầu ra Boolean b . Kích thước của đầu vào có khả năng không giới hạn. Một ví dụ là một chương trình xác định xem đầu vào có phải là mã hóa nhị phân của số nguyên tố hay không.xb

Mạch (Boolean) là tập hợp các hướng dẫn để tính toán một số hàm hữu hạn . Chúng ta có thể hình dung mạch điện như một mạch điện, hoặc nghĩ về nó như một chuỗi các hướng dẫn (khung nhìn này được gọi một cách khó hiểu là một chương trình đường thẳng ). Cụ thể, chúng ta có thể giả sử rằng đầu vào là một chuỗi nhị phân có độ dài nđầu ra là Boolean. Một ví dụ là một mạch xác định xem đầu vào có mã hóa số nguyên tố hay không (giống như trước đây, chỉ bây giờ đầu vào phải có độ dài n ).x nn

Chúng ta có thể chuyển đổi một chương trình thành một mạch P n mô phỏng P trên các đầu vào có độ dài n . Trình tự tương ứng của mạch P 0 , P 1 , P 2 , ... không phải là tùy tiện - tất cả họ đều có thể được xây dựng bởi một chương trình mà cho n đầu ra P n . Chúng ta gọi một chuỗi các mạch như vậy là một mạch đồng nhất (một cách khó hiểu, chúng ta thường nghĩ chuỗi đó là một mạch "đơn" P n cho một n không xác định ).PPnPnP0,P1,P2,Giáo dụcnPnPnn

Không phải mọi chuỗi mạch là thống nhất. Thật vậy, một chuỗi các mạch có thể tính toán mọi hàm từ chuỗi đến Boolean, có thể tính toán hoặc không tính toán được! Tuy nhiên, trong lý thuyết phức tạp, chúng tôi quan tâm đến các mô hình không đồng nhất như vậy trong đó các mạch bị hạn chế. Ví dụ: câu hỏi P = NP nói rằng các vấn đề hoàn thành NP không thể được giải quyết bằng thuật toán thời gian đa thức. Điều này ngụ ý rằng các vấn đề hoàn thành NP không thể được giải quyết bằng các mạch thống nhất kích thước đa thức. Người ta phỏng đoán rằng hơn nữa vấn đề NP-đầy đủ không thể được giải quyết bằng các mạch kích thước đa thức nếu không có sự yêu cầu của sự thống nhất .

Các mô hình tính toán hoàn chỉnh Turing là các mô hình nhận ra tất cả các hàm tính toán (và không còn nữa). Ngược lại, các hệ thống cổng hoàn chỉnh (như AND, OR, NOT hoặc NAND) cho phép tính toán các hàm hữu hạn tùy ý bằng cách sử dụng các mạch được tạo từ các cổng này. Các hệ thống hoàn chỉnh như vậy có thể tính toán các hàm hoàn toàn tùy ý bằng cách sử dụng các chuỗi (không giới hạn) của các mạch.


Bạn có thể giải thích "một chuỗi các mạch có thể tính toán mọi hàm từ chuỗi đến Boolean, có thể tính toán hoặc không tính toán được" không? Có phải khả năng tính toán không thể tính toán được của họ (theo quan điểm của Turing-đầy đủ) đến từ các hạn chế về kích thước đầu vào không?
bsm

2
nn

Bạn có thể giải thích về điều đó không, @YuvalFilmus? Có vẻ kỳ lạ là một chức năng không thể tính toán như độ phức tạp Kolmogorov sẽ đột nhiên được "tính toán" bằng cách sử dụng các mạch.
Cort Ammon - Phục hồi Monica

2
fn

3

Bạn thực tế là chính xác. Một mạch logic tổ hợp tương đương với một máy tự động hữu hạn. Cổng NAND không làm cho chúng mạnh hơn; chúng được sử dụng bởi vì đơn giản là rẻ hơn để xây dựng một mạch logic kỹ thuật số chỉ với một loại cổng so với việc xây dựng nó với tất cả các cổng khác nhau. Trên thực tế, một cổng NAND có thể được xây dựng từ chỉ một cổng AND và cổng KHÔNG. Dép xỏ ngón làm cho mạch Turing-hoàn thành. Đây là một chìa khóa tiện dụng:

Mạch kết hợp ~ Tự động hữu hạn ~ Ngôn ngữ thông thường ~ Biểu thức chính quy ~ Tính toán đề xuất ~ Chương trình đường thẳng

μ

Nếu bạn muốn tìm hiểu thêm, có một cuốn sách rất hay bạn có thể tải xuống dưới dạng PDF miễn phí giải thích tất cả điều này:

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

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.