4
給定一組公式s
,我想找到s
的最小子集s'
,暗示s
中的每個公式。我將s
稱爲最小的獨立集合,因爲中的每一對a,b
,a
並不意味着b
,反之亦然。最小獨立集合
在我看來,天真的方法將需要O(2^|s|)
複雜性。有沒有更有效的方法?這個問題可以編碼一些如何利用當前的smt/sat求解器(例如不可核心)?
給定一組公式s
,我想找到s
的最小子集s'
,暗示s
中的每個公式。我將s
稱爲最小的獨立集合,因爲中的每一對a,b
,a
並不意味着b
,反之亦然。最小獨立集合
在我看來,天真的方法將需要O(2^|s|)
複雜性。有沒有更有效的方法?這個問題可以編碼一些如何利用當前的smt/sat求解器(例如不可核心)?
也許現在已經太遲了。但是你可以通過1循環來計算這樣一個集合。
IS = F1 // first formula in s
for each formula Fi in {F2,..Fn} in s
if ((not IS) AND Fi) is UNSAT
IS = IS AND Fi
集合IS
包含獨立集合。
這個計算一個獨立的集合,但不一定是最小的集合。 – CliffordVienna
我認爲你可以使用Z3。這看起來像[數組和包](http://rise4fun.com/z3/tutorialcontent/guide#h26)的用例。但是,Z3不會給你任何有關運行時複雜性的信息。而且,由於問題已經解決,它只能解決給定實例的問題(而不是一般情況)。就個人而言,在[Alloy](http://alloy.mit.edu/alloy/)中寫下問題比Z3更容易。 –