我正在尝试为以下示例中的问题设想解决方案:
A != B
B != C
D != B
C != B
E != D
E != A
有多少变量是真的,有多少是假的?据我所知,我应该尝试使用广度优先搜索,但我的问题是从哪里开始,图表将是一个导向图(我将xi
连接到!xj
存在平等关系)。有人能指出我正确的方向吗?
答案 0 :(得分:5)
这是图2着色问题。顶点:此A, B, C, …
此无向图中的边(u, v)
仅在u != v
时出现。
2-coloring是广度优先搜索的应用之一。请参阅:http://en.wikipedia.org/wiki/Breadth-first_search#Testing_bipartiteness
答案 1 :(得分:0)
我认为你根本不需要搜索。如果存在约束xi =!xj,请将约束视为连接顶点xi和xj的图形。获取图形的连通分量(即,存在连接每对顶点的路径的组件)。假设你的约束是一致的(即,不同时指定xi = xj和xi =!xj)那么你可以在组件中选择任何顶点xi并立即计算出任何连接的顶点xj是否等于xi或!xi。然后,可以直接计算出最大化或最小化真实变量数量所需的分配。