DLX 学习笔记
DLX 用于解决的精确覆盖问题,比较适合稀疏矩阵。(精确覆盖问题:给定一个 01 矩阵,从里面挑选一些行,使得最终每列都恰好有一个 1)
一、X 算法
简而言之,X 算法就是搜索时删除掉冲突的行,以提高遍历的速度。
比如上面这个
二、DLX
DLX 就是 Dancing Links 优化的 X 算法。
Dancing link 是一种数据结构,底层上是一个双向十字链表。链表每个节点储存了四个指针,分别指向上下左右。这样就可以做到快速删除冲突的行。
DLX 的时间复杂度仍为指数级,但是底数接近