参考答案
------------------------------------------------------------------------------------------------------------------------------------------------------------------
(a) 该问题的其他满意赋值: x1=true , x2=true , x3=false , x4=true。
(c)
本题对应的有向图:
(b)中对应的有向图:
(d) 对于一个变量x,如果一个强连通部件既包含x,又包含x(一)1,那么x成立时,x(一)1也应该成立,或者x(一)1成立时,x也应该成立,这显然是矛盾的。因此如果一个强连通部件既包含x,又包含x(一)1,那么该实例没有满意赋值。
(e) 在图G中,若对于任何一个变量x,在一个强连通部件中不存在x和x(一),则选择一个汇点强连通部件,把这个汇点强连通部件中所有文字赋值为true,将所有文字的取反赋值为false,即将这个汇点强连通部件中的所有顶点都设为true,这样的赋值并不破坏逻辑,因为一个变量和变量的取反不会出现在同一个强连通部件中,这样的赋值同时也不影响其他顶点的值,因为对于p-q来说q取true,p取true或者false都能满足。同时,汇点强连通分支中顶点的取反为false,因此也不影响其子孙的值,于是删除掉汇点强连通部件中的顶点,继续在剩余的图中执行相同的操作,最终将得到一个满意的赋值。
(f) 利用拓扑排序排序有向图,然后利用e中的算法按照拓扑排序的逆序依次处理每个顶点即可。