Cụ thể, chúng tôi không áp dụng cấu trúc cụ thể nào cho các mạch (ngoài việc là cây nhị phân), không cho phép quạt ra (để mỗi bit của chỉ được sử dụng một lần) và các cổng có thể không đối xứng. Bằng cách chỉ cho phép các cổng hai bit, tôi loại trừ cổng NOT (nhưng có thể được mô phỏng bằng cách có nhiều cổng có liên quan với nhau bằng cách phủ định, chẳng hạn như AND / NAND ; và tôi cũng loại trừ các cổng chỉ đơn giản là đầu ra không có đầu vào , do đó, số lượng cổng trong mạch trên thực tế sẽ luôn là cho đầu vào -bit. Để cho ngắn gọn, tôi sẽ đề cập đến 2-TREE-OPSAT dưới đây đơn giản là OPSATx n - 1 nCxn−1n; mặc dù phân tích các vấn đề có thể trở nên khó khăn hơn nhiều cho mạch cho phép tùy ý k -input cửa ( k-TREE-OPSAT ) hoặc cho phép người hâm mộ-out (mà chúng ta có thể gọi là k-fanout-OPSAT ).
Đối với lựa chọn cố định , vấn đề chọn cây phù hợp với cổng phù hợp không giống như phân biệt logic: sử dụng các tương đương như
chúng tôi có thể thực hiện giảm giữa các bộ sưu tập liên quan đến các bộ cổng phức tạp hơn đối với các bộ cổng đơn giản (và mạnh mẽ); a có thể nói về một bộ cổng có thể mô phỏng các cổng khác không thuộc về bộ đó, bằng cách chọn khôn ngoan một số phần tử của có cùng tác dụng (khi được trình bày với một đầu vào cụ thể) như một cổng . Cụ thể, một số tổ hợp cổng nhất định (chẳng hạn như ) có thể mô phỏng chức năng không đổi mang lạiHOẶC ( x , y )x∈{0,1}n G G ∉ G { OR , NAND } 1
Chúng tôi tiến hành bằng cách xem xét các bộ cổng bao gồm các loại cổng khác nhau , sau đó loại trừ các cổng đó khỏi các trường hợp phân tích sau này, để chỉ ra rằng các bộ cổng liên quan đến bất kỳ một trong các cổng nào dẫn đến sự cố có thể xảy ra. Chúng ta sẽ tiến hành theo thứ tự số chuỗi hai bit thỏa mãn cổng đang xét, bắt đầu từ cổng không đổi đến cổng không đổi .1 0G10
Đối với bất kỳ cổng nào được đặt chứa cổng , chúng ta có thể chỉ cần xây dựng một mạch sử dụng cổng đó, trong trường hợp chấp nhận bất kỳ . G ( x , y ) = 1 C C xGG(x,y)=1CCx
HOẶC và NAND. Đối với bất kỳ cổng nào được đặt chứa : nếu tất cả các cổng khác thỏa mãn , thì không có lợi thế nào khi chọn bất kỳ cổng nào khác ngoài trong việc xây dựng các mạch . Một mạch chỉ có các cổng chấp nhận bất kỳ chuỗi nào ngoại trừ . Mặt khác, tồn tại một cổng sao cho là tautologous. Vì vậy, mọi trường hợp của OPSAT với đều dễ dàng; và nhận xét tương tự áp dụng cho .HOẶC G ∈ G G ( x , y )GORG∈GHOẶC C HOẶC x ∈ 0 * G ∈ G { G , HOẶC } HOẶC ∈ G NAND ∈ GG(x,y)⟹OR(x,y)ORCORx∈0∗G∈G{G,OR}OR∈GNAND∈G
Cổng giống như ngụ ý. Hãy xem xét cổng , chỉ xuất ra 0 nếu . Đối với những gì tiếp theo, một phân tích tương tự sẽ được áp dụng cho cổng .
Hãy xem xét bất kỳ chuỗi . Nếu kết thúc bằng , hãy phân tách thành các chuỗi con có dạng ; trên mỗi như vậy , chúng tôi áp dụng đệ quy từ phải sang trái, mang lại đầu ra cho mỗi . (Đối với một chuỗi con có độ dài 1, chúng tôi sử dụng mạch tầm thường, nghĩa là để riêng đầu vào đó.) Tương tự, nếu( x , y ) = ( 1 , 0 ) G ' ( x , y ) = x ∨ ¬ y x ∈ { 0 , 1 } n x 0 x w j = 1 * 0 w j G 0 w j x 1 x wG(x,y)=¬x∨y(x,y)=(1,0)G′(x,y)=x∨¬y
x∈{0,1}nx0xwj=1∗0wjG0wjx kết thúc bằng , phân tách thành các chuỗi con có dạng và áp dụng đệ quy từ trái sang phải trên mỗi , tạo ra đầu ra cho mỗi . Do đó, chúng tôi có thể giảm vấn đề để xây dựng các mạch được thỏa mãn bằng hoặc , trong đó là số lượng các chuỗi con hoặc . Đối với , chúng tôi có thể chấp nhận sử dụng cổng bằng cách áp dụng đệ quy từ trái sang phải. Điều này chỉ để lại trường hợp1xG w j 1 w j 0 m 1 m m 1 * 0 0 * 1 m ⩾ 2 G G m = 1 x ∈ 1 * 0 x = 1 * 0 G 1 * 0 0 G H ∈ G H ( 1 , 0 ) = 1 { G , Hwj=0∗1Gwj1wj0m1mm1∗00∗1m⩾2GGm=1 , trong đó trường hợp có vấn đề là đầu vào . Đối với , bất kỳ mạch bao gồm duy nhất của cửa sẽ chỉ mang lại chuỗi ngắn hơn có dạng , cuối cùng năng suất chuỗi single-bit : để không mạch của cổng có thể được thỏa mãn bởi đầu vào này. Nếu cũng có một cổng mà , thì là tautologous; hoặc, nếu có một cổng mà , chúng tôi có thể giảm các chuỗi có dạngx∈1∗0
x=1∗0G1∗00GH∈GH(1,0)=1H ∈ G H ( 1 , 1 ) = 0 11 * 0 ( 1 * 0 ) * H x x ∈ 1 * 0 G{G,H}H∈GH(1,1)=011∗0cho các chuỗi có dạng , bằng cách áp dụng cho hai bit đầu tiên của . Mặt khác, không có mạch nào có thể được xây dựng chấp nhận .
Do đó, đối với bất kỳ bộ cổng nào chứa cổng giống như hàm ý, OPSAT rất dễ dàng.(1∗0)∗Hxx∈1∗0
G
Tiêu cực của dự đoán. Hãy xem xét các cổng và . Chúng tôi coi , phân tích với tương tự nhau. Về bản thân, có thể chấp nhận bất kỳ chuỗi nào trong cho bằng cách giảm các bit cuối cùng xuống một bit, sau đó áp dụng ; và nó có thể chấp nhận tương tự cho bằng cách giảm các bit cuối cùng thành một bit, sau đó áp dụng mạch¬ π 2 ( x , y ) = ¬ y ¬ π 1 ¬ π 2 ¬ π 1 0 ( 0 | 1 ) n - 1 n ⩾ 2 n - 1 ¬ π 1 1 ( 0 | 1 ) n - 1 n ⩾ 3¬π1(x,y)=¬x¬π2(x,y)=¬y¬π1¬π2¬π10(0|1)n−1n⩾2n−1¬π11(0|1)n−1n⩾3¬ π 1 ( ¬ π 1 ( x 1 , x 2 ) , x 3 ) ¬ π 1 10 11n−2¬π1(¬π1(x1,x2),x3). Các đầu vào duy nhất mà các mạch không thể chấp nhận là hoặc ; xác định xem bất kỳ cổng bổ sung chấp nhận những điều này là tầm thường. Do đó, OPSAT dễ dàng cho các phủ định của các phép chiếu.¬π11011
PHỤ TÙNG VÀ THIẾT BỊ . Hãy xem xét cổng . Bộ cổng rõ ràng chỉ có thể được thỏa mãn chính xác bởi các chuỗi với số lẻ 1s; chúng tôi xem xét lợi ích của việc thêm bất kỳ cổng khác.G = { chẵn lẻ } x ∈ { 0 , 1 } nPARITY(x,y)=(x∨¬y)∧(¬x∨y)G={PARITY}x∈{0,1}n
- Bất kỳ bộ cổng nào chứa cả và hoặc
đều có thể mô phỏng các mạch có
hoặc (tương ứng) cho các đầu vào cố định, tương ứng trường hợp dễ dàng của OPSAT .VÀ NOR ( x , y ) = ¬ ( x ∨ y ) HOẶC NANDPARITYANDNOR(x,y)=¬(x∨y)ORNAND
- Hoặc hoặc có thể được sử dụng để mô phỏng một trong hai hay trên chuỗi con hai bit chẵn lẻ thậm chí, để chúng ta có thể làm giảm cổng-bộ với những cổng và cho trường hợp trước.π 2 ( x , y ) = y VÀ NOR chẵn lẻπ1(x,y)=xπ2(x,y)=yANDNORPARITY
- EQUAL = ¬ chẵn lẻPARITY cùng với là tautologous.EQUAL=¬PARITY
- Nếu chúng tôi bổ sung bằng cổng , chúng tôi có thể chấp nhận bất kỳ chuỗi chẵn lẻ nào ngoại trừ bằng cách áp dụng cho một chuỗi chuỗi và sau đó áp dụng mạch cho phần còn lại. Tương tự, cùng với có thể chấp nhận bất kỳ chuỗi nào ngoại trừ các chuỗi có dạng . Bổ sung bằng cả và cho phép chúng tôi xây dựng các mạch chấp nhận tất cả các đầu vào ngoại trừ vàG 01 = ¬ x ∧ y x ∈ ( 11 ) * 0 * G 01 01 x chẵn lẻ chẵn lẻ G 10 = x ∧ ¬ y x ∈ 0 * ( 11 ) * chẵn lẻ G 01 G 10 x ∈ 0 * x = 11PARITYG01=¬x∧yx∈(11)∗0∗G0101xPARITYPARITYG10=x∧¬yx∈0∗(11)∗PARITYG01G10x∈0∗x=11 .
- Cuối cùng, nếu chúng tôi bổ sung với cổng , chúng tôi có thể chấp nhận mọi đầu vào ngoại trừ hoặc bằng cách áp dụng cổng cho một chuỗi con hoặc , giảm đến trường hợp chẵn lẻ. Z ( x , y ) = 0 x ∈ ( 11 ) * x ∈ 0 * G 01 10PARITYZ(x,y)=0x∈(11)∗x∈0∗G0110
Do đó, OPSAT dễ dàng cho mọi có chứa . Một phân tích tương tự áp dụng cho cổng như đối với cổng : bởi vì , các mạch của Cổng về cơ bản đếm số chẵn của số s trong đầu vào. Sau đó, chúng tôi có thể giảm phân tích cho xuống còn bằng cách trao đổi và .chẵn lẻ EQUAL chẵn lẻ EQUAL ( x , y ) = ¬ chẵn lẻ ( x , y ) = ¬ chẵn lẻ ( ¬ x , ¬ y ) EQUAL 0 EQUAL chẵn lẻ 0 1GPARITY
EQUALPARITYEQUAL(x,y)=¬PARITY(x,y)=¬PARITY(¬x,¬y)EQUAL0EQUALPARITY01
Cổng chiếu. Các cổng và , chỉ có thể tự xây dựng các mạch chấp nhận các chuỗi bắt đầu hoặc kết thúc bằng , tương ứng. Hãy xem xét hiệu quả của việc tăng cổng với bất kỳ cổng nào khác (một phân tích tương tự giữ cho ):π 2 ( x , y ) = y 1 π 1 π 2π1(x,y)=xπ2(x,y)=y1π1π2
- Cho phép cả và cho phép xây dựng mạch "lựa chọn", chỉ đơn giản là xuất ra bất kỳ bit nào từ đầu vào; những cái này có thể chấp nhận bất kỳ và bổ sung chúng với bất kỳ cổng nào mà cho phép xây dựng một mạch thỏa mãn cho bất kỳ nào .π 2 x ≠ 0 n G G ( 0 , 0 ) = 1 xπ1π2x≠0nGG(0,0)=1x
- Nếu chúng tôi bổ sung bằng hoặc , chúng tôi có thể mô phỏng hoặc một cổng giống như ngụ ý cho các đầu vào cố định; OPSAT được giải quyết cho cả hai trường hợp này.BẮC G 01 = ¬ x ∧ y HOẶCπ1NORG01=¬x∧yOR
- Nếu chúng tôi bổ sung bằng , , cổng không đổi hoặc bất kỳ kết hợp nào của chúng, chúng tôi sẽ không có thêm sức mạnh chấp nhận, do đó chúng tôi không vẫn chỉ có thể chấp nhận chuỗi bắt đầu bằng .VÀ G 10 = x ∧ ¬ y Z ( x , y ) = 0 1π1ANDG10=x∧¬yZ(x,y)=01
Do đó, đối với bất kỳ cổng nào khác, chúng tôi có thể bổ sung (hoặc ) với, chúng tôi có được một bộ tautologous, không có thêm sức mạnh chấp nhận đối với chỉ (hoặc ) hoặc có thể giảm xuống thành trường hợp dễ dàng trước đó của OPSAT . Sau đó, mọi trường hợp của OPSAT với hoặc đều dễ dàng.π 2 π 1 π 2 π 1 ∈ G π 2 ∈ Gπ1π2π1π2π1∈Gπ2∈G
Cổng chức năng Delta. Hãy xem xét các cổng hai bit chỉ có một đầu vào thỏa mãn chúng: , , và . Các mạch được tạo chỉ với các cổng chỉ có thể chấp nhận chuỗi : bổ sung chúng bằng bất kỳ cổng chức năng delta nào khác cho phép chúng mô phỏng cả , hoặc , là các trường hợp đã giải quyết; nhận xét tương tự áp dụng cho . Đồng thời, bộ cổng cũng có thể được sử dụng để mô phỏngNOR G 10 ( x , y ) = x ∧ ¬ y G 01 ( x , y ) = ¬ x ∧ y VÀ 1 * EQUAL pi 1 π 2 NOR { G 01 , G 10 } chẵn lẻ G 10 G 01 Z ( x , y ) = 0 G 10 G 01ANDNORG10(x,y)=x∧¬yG01(x,y)=¬x∧yAND1∗EQUALπ1π2NOR{G01,G10}PARITYcánh cổng. Do đó, chúng tôi có thể tập trung vào cổng hoặc , có thể được bổ sung với cổng . Chúng tôi tập trung vào , với trường hợp tương tự nhau. Có thể xây dựng các mạch chỉ bằng để chấp nhận , ngoại trừ chuỗi , bằng cách áp dụng một mạch tùy ý cho các bit cuối cùng và sau đó áp dụng mạch cuối cùng . Rõ ràng, chuỗi không thể được chấp nhận bởi hoặc bởi ; và chúng ta có thể hiển thị bằng cảm ứng rằng bất kỳG10G01Z(x,y)=0G10G01
1 ( 0 | 1 ) n - 1 11 n - 2 G 10 ( x 1 , G 10 ( x 2 , x 3 ) ) 11 G 10 Z G 10 1 Z G 10 x ∈ 1 ( 0 | 10 | 11 ) ( 0 | 1 ) *G101(0|1)n−111n−2G10(x1,G10(x2,x3))11G10ZG10mạch chấp nhận một chuỗi phải có kết quả trung gian của các cổng ở nhánh ngoài cùng bên trái, tất cả đều cho năng suất , cho đến chính đầu vào bên trái nhất. Không có lợi ích bổ sung có được bằng cách thêm các cổngDo đó, các mạch chỉ có thể chấp nhận .1ZG10x∈1(0|10|11)(0|1)∗
Cuối cùng, các mạch chỉ gồm các cổng chấp nhận không có đầu vào.Z
Như mỗi cổng làm phát sinh một được xác định rõ và nói chung là khá lớn lớp đầu vào mà nó chấp nhận, với cửa thêm khuynh hướng tầm thường hóa vấn đề, chúng tôi thấy rằng 2-TREE-OPSAT là trong P .