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ình và mạ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 và đầ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 và đầ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, ...nPnPnn
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.