我无法弄清楚如何使用降阶有序二元决策图(ROBDD)解决8皇后拼图问题。我用谷歌搜索了它,但无法找到问题的良好解释。 那么,这里的问题 - 到目前为止,我已经发现将有n * n输入变量或ROBDD的状态。现在,我怎样才能真正创建一个解决8皇后拼图的ROBDD?
解释将帮助我更好地理解这个问题。
答案 0 :(得分:2)
你的问题有点误导。 ROBDD只是表示和操纵布尔函数的一种手段。因此,首先,您必须处理表示问题的布尔函数。关于n-queen问题有很多材料,所以我不会在这个答案中解释。
一旦掌握了功能,就可以在ROBDD上进行表示。每个节点都可能回答“这个广场上有女王的问题?是的“。关于减少和重新排序,与问题本身没有直接联系。 Reduce是一种标准算法,并且有许多不同的算法和启发式用于重新排序(例如CUDD包提供了十几个)。再一次,详细解释这些事情并不是这个答案的范围,而且互联网上还有大量的资料需要考虑。但是,我可以说,reduce算法将保留所有变量,因为几乎没有你可以在广场上有或没有女王的情况相同。
现在是时候寻找解决方案了。如果问题实际上有一个解决方案,你会发现至少有一条路径通向1.沿着那条路径(或那些路径,可以有多个路径),你可以知道哪些变量设置为1或0(也就是说,皇后所在的位置和不在哪里。
答案 1 :(得分:0)
在Andersen的优秀“An introduction to binary decision diagrams”, Lecture notes, TU Denmark, 1997中可以找到命题逻辑中8皇后问题的表述。
我建议先自己编写这样一个布尔公式,然后检查该文本以纠正任何错误,并从中学习。
至于问题清单:阅读Andersen的介绍将回答Q2-5。这些是关于BDD如何工作的问题,而不是具体问题。
Q1:如果问题是决定可满足性(也许是为了枚举解决方案),那么减少BDD的构造可以解决问题。通过由变量排序引起的表示的正规性,得到的BDD表示满意分配的集合。当且仅当BDD是终端节点“False”时,该集合为空。