Trình bày gọn gàng bộ giải pháp của một ví dụ SAT


10

Câu hỏi này đã xuất hiện trong đầu tôi sau khi đọc những đóng góp của András Salamon và Colin McQuillan cho câu hỏi trước đây của tôi Đếm các giải pháp của công thức Monotone-2CNF .

EDIT 30 ngày tháng 3 năm 2011
gia tăng câu hỏi n ° 2.

EDIT 29 ngày tháng 10 năm 2010
Câu hỏi rephrased sau András đề nghị để chính thức hóa nó thông qua các khái niệm về đại diện tốt đẹp của một bộ giải pháp (Tôi đã sửa đổi quan niệm của mình một chút).

Đặt là một công thức CNF chung với biến. Đặt là tập giải pháp của nó. Rõ ràng,có thể theo cấp số nhân trong . Chon S | S | n RFnS|S|nRlà một đại diện của . được cho là tốt nếu và chỉ khi các sự kiện sau đây đều đúng:RSR

  1. R có kích thước đa thức tính bằng .n
  2. R cho phép liệt kê các giải pháp trong với độ trễ đa thức.S
  3. R cho phép xác địnhtrong thời gian đa thức (tức là không liệt kê tất cả các giải pháp). |S|

Sẽ rất tuyệt nếu có thể, trong thời gian đa thức, xây dựng như vậy cho mọi công thức.R

Câu hỏi:

  1. Có ai từng chứng minh rằng tồn tại một gia đình công thức mà đại diện tốt đẹp như vậy không thể tồn tại?
  2. Có ai nghiên cứu mối quan hệ giữa biểu diễn của và các đối xứng được thể hiện bởi không? Theo trực giác, các đối xứng sẽ giúp biểu diễn gọn vì chúng tránh được biểu diễn rõ ràng của một tập hợp giải pháp khi thực sự sôi xuống chỉ một giải pháp (ví dụ từ mọi bạn có thể khôi phục mọi bằng cách áp dụng một đối xứng thích hợp, do đó, mọi tự nó là đại diện cho toàn bộ )F S S 'S S ' s iS ' s jS ' s iS ' S 'SFSS'SS'STôiS'SjS'STôiS'S'

1
Tôi nghĩ bạn cần hạn chế câu hỏi của bạn một chút. Như đã trình bày, công thức chính nó là một đại diện đa thức kích thước của . Nhưng điều này rõ ràng không giúp ích cho động lực đến từ vấn đề trước đó. Có thể bạn muốn một số ràng buộc (đa thức?) Về sự phức tạp của việc tái tạo (hoặc có thể là một yếu tố duy nhất của , hoặc tính toán ) từ biểu diễn có kích thước đa thức ...S S S | S |FSSS|S|
Joshua Grochow

@Joshua: Bạn nói đúng, cảm ơn. Tôi đã làm phong phú thêm câu hỏi để làm rõ. Xin vui lòng cho tôi biết nếu bây giờ là OK.
Giorgio Camerani

BTW, một cách để biểu diễn tập giải pháp là "cây tìm kiếm VÀ HOẶC". Mỗi trường hợp là một lá của cây, và đếm có thể được thực hiện mà không cần liệt kê tất cả các giải pháp.
Yar Tư Bulatov

@ Nam Tư: Thú vị ... bạn có thể vui lòng giải thích thêm không?
Giorgio Camerani

Câu trả lời:


10

Như đã nêu (sửa đổi 3), câu hỏi có một câu trả lời đơn giản: không.

Lý do là ngay cả đối với lớp biểu diễn bị hạn chế cao được đưa ra bởi các mạch Boolean với các cổng AND, OR và NOT, không có giới hạn thấp hơn không được biết đến. (Rõ ràng một mạch đại diện cho cũng sẽ đại diện cho một cách ngầm định và thật dễ dàng để liệt kê các giải pháp bằng cách thay đổi các đầu vào thành mạch.)SFS

Đối với các biểu diễn bị hạn chế hơn nữa, như mạch đơn điệu hoặc mạch có độ sâu không đổi, giới hạn dưới theo hàm mũ được biết đến. Ngoài ra còn có giới hạn dưới theo cấp số nhân để biểu diễn các công thức ở dạng CNF hoặc DNF, mặc dù đây có thể được coi là trường hợp đặc biệt của các mạch có độ sâu không đổi. Cuối cùng, các biểu diễn của BDD có thể được xem như các dạng DNF nhỏ gọn, nhưng tồn tại các công thức mà BDD yêu cầu kích thước theo cấp số nhân cho bất kỳ thứ tự biến nào.

Để làm cho câu hỏi của bạn chính xác hơn, vui lòng xem xét câu trả lời của @ Joshua một cách chi tiết và vui lòng làm rõ ý của bạn bằng cách "tầm thường để liệt kê mọi giải pháp duy nhất".


Đối với phiên bản 4, lưu ý tuyên bố về kích thước BDD. Một phần của những gì bạn dường như đang hỏi là: có một đại diện nhỏ gọn hơn của các công thức DNF so với BDD không? Đặt "BDD có kích thước siêu đa thức" có nghĩa là "mọi BDD đại diện cho cùng chức năng với , bất kể thứ tự biến, có kích thước siêu đa thức" và để "biểu diễn đẹp" có nghĩa là "biểu diễn cho phép các giải pháp được liệt kê với độ trễ đa thức". Câu hỏi cụ thể hơn này sau đó trở thành:BBB

Có một họ các công thức và một đại diện đẹp có kích thước đa thức trong khi các BDD của nó có kích thước siêu đa thức?

Điều này có nắm bắt được bản chất của những gì bạn đang yêu cầu?


@ András: Tôi đã thêm một phần làm rõ.
Giorgio Camerani

@ András: Tôi xin lỗi nếu câu hỏi của tôi thiếu độ chính xác. Câu của bạn "có đại diện nhỏ gọn hơn cho các công thức DNF so với BDD không?" nắm bắt được bản chất của những gì tôi yêu cầu. Việc biểu diễn nhỏ gọn hơn như vậy sẽ phải có thể áp dụng cho mọi công thức (ngay cả những công thức có số lượng giải pháp siêu đa thức).
Giorgio Camerani

@ András: Xin chào, tôi đã nghĩ thêm một chút về nó. Nắm bắt tốt hơn bản chất của những gì tôi đang hỏi là câu hỏi "Có đại diện đẹp nào có kích thước đa thức cho mọi công thức không?" . Đại diện như vậy phải là "tốt nhất từ ​​trước đến nay", bất kể hành vi của BDD so với nó như thế nào. Đề xuất của bạn về độ trễ đa thức phù hợp hoàn hảo với ý tưởng tôi có trong đầu.
Giorgio Camerani

@Walter: có thể đáng để chỉnh sửa câu hỏi phù hợp với cải cách đó hoặc đăng một câu hỏi mới.
András Salamon

@ András: Tôi đã đọc lại câu hỏi. Định nghĩa về đại diện tốt đẹp đã được thay đổi một chút (Tôi đã cho rằng đó là một thuật ngữ của phát minh của bạn chứ không phải là một thuật ngữ được thiết lập tốt trong tài liệu, phải không?).
Giorgio Camerani

9

[Câu trả lời này là để đáp ứng với phiên bản trước Phiên bản 6 ngày 29 tháng 10 năm 2010]

Tôi nghĩ rằng câu hỏi ít nhiều hoạt động bây giờ, nhưng vẫn còn một vấn đề kỹ thuật. Cụ thể, làm thế nào để chính thức hóa "thật tầm thường khi liệt kê mọi giải pháp duy nhất bằng cách chỉ nhìn vào cấu trúc như vậy." Một chính thức hoá có lẽ ngây thơ (nhưng chỉ có một tôi có thể đưa ra tại thời điểm này) là như sau: chúng ta hãy biểu thị các đại diện của giải pháp thiết lập S ( φ ) của φ . Hiện tại tôi không đặt ra giới hạn nào cho R ngoài điều đó | R ( φ ) | p o l y ( n ) trong đó φR(φ)S(φ)φR|R(φ)|potôiy(n)φlà một CNF trên biến. Sau đó, chúng tôi muốn có một thuật toán A sao cho A ( R ( φ ) ) = S ( φ )A trên đầu vào R ( φ ) ) chạy trong thời gian p o l y ( n , | S | ) .nMộtMột(R(φ))= =S(φ)MộtR(φ))potôiy(n,|S|)

Theo chính thức này, các trường hợp khó khăn duy nhất là những trường hợp là siêu đa thức nhưng theo cấp số nhân. Các trường hợp còn lại được xử lý bởi biểu diễn R và thuật toán A sau: if | S | p o l y ( n ) , sau đó cho R ( φ ) = ( 0 , S ) . Nếu | S | 2 Ω ( n ) sau đó cho phép R ( φ ) = (SRMột|S|potôiy(n)R(φ)= =(0,S)|S|2Ω(n) . Một ( 0 , S ) chỉ đơn giản là kết quả đầu ra S A ( 1 , φ ) chỉ đơn giản là tính S bằng brute force từ φ . Kể từ | S | = 2 Ω ( n ) trong trường hợp thứ hai, điều này vẫn chạy trong thời gian O ( | S | ) .R(φ)=(1,φ)A(0,S)SA(1,φ)Sφ|S|=2Ω(n)O(|S|)

Tuy nhiên, các trường hợp khó nói chung là không thể theo chính thức này. Nếu tồn tại A như vậy , điều đó có nghĩa là độ phức tạp Kolmogorov giới hạn p của mọi S được giới hạn bởi p o l y ( n ) , điều này là vô lý (vì hầu hết tất cả các tập S đều có giới hạn thời gian p tối đa Độ phức tạp Kolmogorov, cụ thể là | S | ). (Ở đây p là thời gian chạy của A là một hàm của | S | .)RApSpoly(n)Sp|S|pA|S|

(Lưu ý rằng nếu chúng ta thêm yêu cầu chạy trong thời gian p o l y ( n , | φ | ) , thì câu trả lời cho câu hỏi không nói chung, giả sử P P r o m i s e U P : nếu φ có một giải pháp độc đáo, sau đó A ( R ( φ ) ) sẽ giải quyết φ và chạy trong thời gian p o l y ( n ) .Rpoly(n,|φ|)PPromiseUPφMột(R(φ))φpotôiy(n)


@Joshua: Cảm ơn bạn đã dành một chút thời gian của bạn để trả lời câu hỏi này. Có lẽ trong dòng cuối cùng thứ ba chúng ta nên thay bằng A ? RMột
Giorgio Camerani

@Joshua: Tôi nghĩ rằng "vấn đề" với là nó đòi hỏi sức mạnh vũ phu. Nó không tầm thường đối với một con người (cũng không phải là một thuật toán) để ngay lập tức "nhìn thấy" các bài tập thỏa mãn chỉ bằng cách nhìn vào nó. R(φ)= =(1,φ)
Giorgio Camerani

@Walter: Tôi thực sự có nghĩa là trong dòng thứ ba đến cuối cùng. R
Joshua Grochow

@Walter: Tôi hoàn toàn nhận thức được rằng vi phạm tinh thần của câu hỏi của bạn, ít nhất là một phần (kể từ khi tôi chỉ làm điều này cho một số người, không phải tất cả, công thức). Đây là một phần của vấn đề kỹ thuật: cách duy nhất tôi có thể nghĩ ra để chính thức hóa câu hỏi của bạn cho phép những điều ngớ ngẩn như thế này, một phần vi phạm tinh thần của câu hỏi. Tìm kiếm một chính thức hóa không cho phép điều này sẽ khá thú vị. R(φ)=(1,φ)
Joshua Grochow

@Walter, @ András Salamon: Có lẽ đề xuất của Andras về việc đưa ra các yếu tố của với độ trễ đa thức (trong n ) (thay vì trong thời gian O ( | S | ) ) sẽ là một hình thức tốt hơn. Nó chắc chắn bác bỏ những thứ như R ( φ ) = ( 1 , φ ) , ngay cả khi φ có theo cấp số nhân nhiều giải pháp. SnÔi(|S|)R(φ)= =(1,φ)φ
Joshua Grochow
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.