布尔系统(适用于C ++ / C#/ java)

时间:2011-05-14 16:17:01

标签: algorithm

我如何以编程方式解决此类系统:

A = !B
B = !C
D = !B
E = !A
E = !B

所以我可以替换A = C = D (3)E = B (2)。我只需要2组的数量。如果无法获得2个组,则会显示错误消息。

2 个答案:

答案 0 :(得分:3)

如果在上一个问题中我的answer没有以欺骗方式关闭:

解决形式的方程式

  

X 1 = NOT X 3

     

X 5 = NOT X 2

     

形成一个图形,其节点为X i 并连接X i 和X j iff等式X i = NOT X j 出现。

现在尝试使用广度优先搜索对图形进行双色处理。

答案 1 :(得分:-1)

考虑一串位ABCDE。对于此字符串的每个subset,将该子集中的所有变量设置为true,将不在子集中的所有变量设置为false。查看哪个子集符合您的条件。

您可以通过从02^(num variables) - 1的二进制计数来实现此目的。对于每个数字,其二进制表示形式为您提供哪些变量为true,哪些变量为false。所以你只需要获取一个数字的所有位并进行检查。