算法:数独DLX算法

解数独最好的算法叫舞蹈链:Dance Link X。

DLX=Dancing Links数据结构+X算法。

该算法主要是解决精确覆盖问题:比如有个集合X,以及其若干子集的集合Y,要求出一个Y的子集Y*,能够恰好分割X。

舞蹈链算法,需要构建一种数据结构,双向 十字 交叉 循环 链表。


DLX算法具体参见论文 https://arxiv.org/pdf/cs/0011047.pdf

DLX算法过程:

  1. 问题描述转化为01矩阵
  2. 构造dance links
  3. 用X算法求解
  4. 将得到的01矩阵的结果转为问题答案

求解数独的代码参见 https://blog.csdn.net/bl0ss0m/article/details/17918705


据说最难的数独

800000000003600000070090200050007000000045700000100030001000068008500010090000400


refer

https://zhuanlan.zhihu.com/p/67324277

https://zhuanlan.zhihu.com/p/342580800

https://blog.csdn.net/liujiyong7/article/details/5934494

https://www.cnblogs.com/grenet/p/3145800.html

https://www.zhihu.com/question/23022745/answer/138272280

https://arxiv.org/pdf/cs/0011047.pdf

https://blog.csdn.net/bl0ss0m/article/details/17918705

posted @ 2022-06-08 16:15  天下太平  阅读(403)  评论(0编辑  收藏  举报