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

Algorithm 布尔系统(用于C+;+;/C#/java),algorithm,Algorithm,如何以编程方式解决此类系统: A = !B B = !C D = !B E = !A E = !B 所以我可以通过替换A=C=D(3)和E=B(2)得到。我只需要两组的号码。如果无法获得两个组,我将显示一条错误消息。考虑一组位ABCDE。对于每个字符串,将该子集中的所有变量设置为true,将不在该子集中的所有变量设置为false。查看哪个子集与您的条件匹配 您可以通过从0到2^(num变量)-1的二进制计数来实现这一点。对于每个数字,它的二进制表示为您提供了哪些变量是true,哪些变量是fal

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

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

所以我可以通过替换
A=C=D(3)
E=B(2)
得到。我只需要两组的号码。如果无法获得两个组,我将显示一条错误消息。

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


您可以通过从
0
2^(num变量)-1的二进制计数来实现这一点。对于每个数字,它的二进制表示为您提供了哪些变量是
true
,哪些变量是
false
。因此,您只需获取一个数字的所有位并进行检查。

如果您在上一个问题中提到,这不是一个重复项:

求解下列形式的方程

X1=不是X3

X5=非x2

形成一个图,节点为Xi,连接席席席和XJ方程,方程X=不xj出现。


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

相关(我想说“重复”):我没有看到他的编辑,但我更希望能找到问题的答案。它还没有被解决:)它不是一个复制品。这个问题要求给出基本方法。这个问题更具体,要求提供实现细节。@IVlad:我仍然认为这是重复的,因为图形的2-着色方法(见我的答案)也可以很容易实现。@Dan Dinu,顺便说一句,我想如果你不打算在这个作业上花费太多时间,你可以用乔恩·斯基特的暴力方法。谢谢你的回答。我有这个想法,但很快就放弃了。我还是不明白。你是说连接每个节点席Xi和XJ,但最后我得到一个连接graph@Dan:很好,你得到了一个连通图。你的问题是什么?我不明白如果图是完全连通的,我怎么才能知道这两组是什么。(如果只有两组)@Dan:你知道2色是什么意思吗?我上面例子中的图形如下:a与B相连;B链接到C;B连接到D,E连接到A和B;如果我不理解你的意思,我必须给节点2种颜色,这样径向节点就不会有相同的颜色。但在这个例子中,我如何做到这一点呢?A连接到B;如果A是黑色的,那么E和B是白色的,但是E和B是绝热的。我错了吗?虽然这很容易实现,但这是学术界通常不赞成的所谓暴力解决方案。