มีการเชื่อมต่อน้อยมาก เพื่อความเข้าใจอย่างละเอียดให้ฉันอธิบายการเชื่อมต่อระหว่างโปรแกรมและวงจร
โปรแกรม (หรืออัลกอริทึมหรือเครื่อง ) เป็นกลไกสำหรับการคำนวณฟังก์ชัน สำหรับความชัดเจนให้เราคิดว่าการป้อนข้อมูลเป็นสตริงไบนารีและเอาท์พุทเป็นแบบบูลเอาท์พุทข ขนาดของอินพุตนั้นอาจถูก จำกัด ตัวอย่างหนึ่งคือโปรแกรมที่กำหนดว่าอินพุตเป็นการเข้ารหัสเลขฐานสองของจำนวนเฉพาะหรือไม่xข
วงจร (บูลีน) คือชุดคำสั่งสำหรับการคำนวณฟังก์ชันจำกัดบางอย่าง เราสามารถนึกภาพวงจรเป็นวงจรไฟฟ้าหรือคิดว่ามันเป็นลำดับของคำสั่ง (มุมมองนี้เรียกว่าโปรแกรมเส้นตรงแบบสับสน) เราสามารถสรุปได้ว่าอินพุตเป็นสตริงไบนารีของความยาวnและเอาต์พุตเป็นบูลีน ตัวอย่างหนึ่งคือวงจรที่กำหนดว่าอินพุตเข้ารหัสหมายเลขเฉพาะ (เหมือนก่อนหน้านี้เฉพาะตอนนี้อินพุตต้องมีความยาวn )x nn
เราสามารถแปลงโปรแกรมเป็นวงจรP nที่เลียนแบบPปัจจัยของความยาวn ลำดับที่สอดคล้องกันของวงจรP 0 , P 1 , P 2 , ...ไม่ได้โดยพลการ - พวกเขาทั้งหมดจะสามารถสร้างขึ้นโดยโปรแกรมที่ได้รับnผลP n เราเรียกลำดับดังกล่าวของวงจรเครื่องแบบวงจร (พลุกพล่านเรามักจะคิดว่าลำดับเป็น "เดี่ยว" วงจรP nสำหรับไม่แน่นอนn )PPnPnP0, P1, P2, ...nPnPnn
ลำดับวงจรไม่ได้เหมือนกันทุกชุด อันที่จริงลำดับของวงจรสามารถคำนวณได้ทุกฟังก์ชั่นตั้งแต่สตริงไปจนถึงบูลีนคำนวณหรือไม่สามารถคำนวณได้! อย่างไรก็ตามในทฤษฎีความซับซ้อนเรามีความสนใจในโมเดลที่ไม่เหมือนกันซึ่งมีการ จำกัด วงจร ตัวอย่างเช่นคำถาม P = NP ระบุว่าปัญหา NP-complete ไม่สามารถแก้ไขได้โดยอัลกอริทึมเวลาพหุนาม นี่ก็หมายความว่าปัญหา NP-complete ไม่สามารถแก้ไขได้ด้วยวงจรเครื่องแบบขนาดพหุนาม มันเป็นที่คาดคะเนได้ยิ่งไปกว่านั้นว่าปัญหา NP-สมบูรณ์ไม่สามารถแก้ไขได้โดยวงจรขนาดพหุนามโดยไม่ต้องการความเท่าเทียม
แบบจำลองการคำนวณที่สมบูรณ์แบบทัวริงเป็นแบบจำลองที่ตระหนักถึงฟังก์ชั่นการคำนวณทั้งหมด (และไม่มีอีกต่อไป) ในทางตรงกันข้ามระบบที่สมบูรณ์ของประตู (เช่น AND, OR, NOT หรือ NAND) อนุญาตให้คำนวณฟังก์ชันจำกัดโดยใช้วงจรที่ทำจากประตูเหล่านี้ ระบบที่สมบูรณ์ดังกล่าวสามารถคำนวณฟังก์ชั่นโดยพลการอย่างสมบูรณ์โดยใช้ (ไม่ จำกัด ) ลำดับของวงจร