Độ phức tạp của việc chuyển đổi một mạch boolean thành một công thức boolean


10

Cho một mạch boolean trên n biến (chỉ sử dụng cổng NOT, AND và OR), cách hiệu quả nhất để trích xuất công thức boolean được đại diện bởi mạch là gì? Có một thuật toán polytime cho vấn đề này?Cn


Mạch có loại cổng nào?
Lev Reyzin

1
Những hạn chế đối với fan-in hoặc fan-out? Nếu nó chỉ là một quạt duy nhất thì nó không quan trọng: bản thân mạch về cơ bản là một AST cho công thức.
Đánh dấu Reitblatt

1
Giới hạn fan-in là chung. Nhưng để chính xác, giả sử AND và OR có fan-in 2. Trong nhiều tài liệu tham khảo trong tài liệu, tôi thấy rằng một mạch và công thức được sử dụng thay thế cho nhau, nhưng tôi muốn biết nếu chuyển đổi một mạch thành công thức có dễ dàng không vấn đề.
Nikhil

6
Nói chung, bạn sẽ mong đợi rằng bất kỳ công thức tương đương có thể có kích thước theo cấp số nhân ngay cả đối với một mạch nhỏ.
Kristoffer Arnsfelt Hansen

4
Công thức kích thước đa thức tương đương với mạch . Các mạch polysize ( P / p o l y ) không biết tương đương với N C 1 . Các công thức và mạch được sử dụng thay thế cho nhau khi độ sâu của mạch bị giới hạn. NC1 P/polyNC1
Kaveh

Câu trả lời:


8

Nếu tôi hiểu chính xác câu hỏi của bạn, tôi sẽ nói rằng bạn có thể sử dụng mức giảm tiêu chuẩn từ CIRCUIT-SAT sang SAT: Biểu diễn mỗi cổng như một biến mới, sau đó biểu diễn toàn bộ mạch ở dạng CNF, với mỗi mệnh đề có dạng , nơi v là biến mới, và các công thức cho cổng được cho bởi φ , sử dụng các biến cho cửa khác để đại diện cho các đầu vào. Điều này có thể được thực hiện bằng cách truyền tải đơn giản (trong thời gian tuyến tính, rõ ràng là tối ưu).(vϕ)vϕ

Ví dụ: nếu bạn có ba đầu vào , x 2x 3 , với các cổng AND liên kết x 1x 2 cũng như x 2x 3 và một cổng OR liên kết đầu ra của chúng, bạn có thể đưa ra ba biến để đại diện cho gates- v 1 , v 2 , và v 3 , tương ứng và viết lại các công thức để ( v 1( x 1x 2 ) ) x1x2x3x1x2x2x3v1v2v3Lưu ý rằng biến đầu ra được bao gồm rõ ràng.

(v1(x1x2))(v2(x2x3))(v3(v1v2))v3.

Giới thiệu về thuật toán của Cormen et al. giải thích điều này một cách chi tiết, trong chương về NP-Complete.


Không CIRCUIT-SAT có sử dụng 1 cổng ra không?
Đánh dấu Reitblatt

1
Chắc chắn, nhưng theo tôi có thể thấy, điều đó không ảnh hưởng đến việc giảm / biến đổi. Ý tưởng đại diện cho mỗi đầu ra là một biến mới có nghĩa là bạn có thể sử dụng lại mỗi đầu ra như một đầu vào nhiều lần (tương ứng với đầu ra quạt lớn tùy ý). Nói cách khác, giải pháp được đưa ra trong câu trả lời này sẽ hoạt động cho các mạch tùy ý.
Magnus Lie Hetland

3
Tôi đoán rằng đây không phải là những gì đang được yêu cầu. Tôi nghĩ những gì muốn là tạo ra một công thức trên cùng một bộ biến như mạch.
Kristoffer Arnsfelt Hansen

1
Hừm. Vâng, bạn có thể đúng. Giới thiệu các biến mới có ý nghĩa trong trường hợp CIRCUIT-SAT đến CNF-SAT, nhưng không phải trong một thiết lập chung hơn nữa, tôi đồng ý.
Magnus Lie Hetland

1
Cx1,x2,,xnϕ(x1,x2,,xn)
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.