6

私はブール式を持っています: (x_{1} or x_{2}) and (x_{3} or x_{4}) and ..... and (x_{2r-1} or x_{2r}) , x_{i}はセットに属します: {p_{1}, p_{2}, ... p_{99} , ~p_{1}, ~p_{2}, ... ~p_{99} } x_{i}のいくつかの値について、与えられた式が真であるかどうかを判断する必要があります。

私はそれが一般的に計算的に難しいことを知っています。しかし、この特定の問題を解決できる非常に高速な方法はありますか? これまでのところ、私はバックトラックを試みました - つまり、再帰では、すべての可能な変数に対してすべての可能な値 (0 または 1 のように多くはない) を代入し、まだ値を取得していないすべての変数は自明に真です。再帰を深く掘り下げる前に、(すべての変数が値を持っているわけではない場合でも) 式をチェックし、それが偽の場合は深くは考えません。しかし、遅すぎます。何か案は?大変助かりました。

4

1 に答える 1

5

OR 句ごとに変数が 2 つしかない場合は、線形時間の解を持つ2-SATがあります。

于 2012-07-06T15:03:16.763 に答える