我有一个n * n矩阵。 每个顶点都有一个与之相关的程度。 Degree是可以绘制到其相邻顶点的线数。 我正在生成一个包含每个顶点的度数的数组。 例如,数组{1,2,2,1}实现了以下两种解决方案。
解决方案1
解决方案2
我想要的是,当我得到阵列时,我想知道它是否有一个解决方案或多个解决方案。
这是另一个例子{0,3,1,2,4,2,2,1,3}有多个解决方案。
答案 0 :(得分:0)
我在某处读到了这个。我认为它有两种方法:蛮力或精炼。
蛮力:尝试递归的每个顶点的度数所允许的任意行组合,如果发现矛盾则尝试回溯(节点获得不符合行列的内联计数)与其学位相对应。
精炼:不是从第一个节点开始,而是从链接最多的节点开始。这也通过剩余的节点进行递归,但剩余的节点通过其强度保持来更新(例如,如果先前的节点已经有一条线路,则节点的度数递减)。更快的原因是,具有较大程度的节点对其周围节点提出了更高的限制,例如,如果一个节点将邻居节点的剩余度数减少到0,则必须为该节点考虑0个案例。