你一定见过这种东西:

C A N T O R
G A U S S .
E U L E R .
A B E L . .
. . . . . .
. . . . . .

一个字母方格,藏着若干单词——横着、竖着,有时候斜着。找到它们是游戏,但出这道题才是有趣的工程问题:给你几个单词,怎么把它们都塞进格子里?

这件事比看起来难。单词可以斜放,可以反向,两个单词可能在某个格子相交——相交处的字母必须相同。暴力枚举所有摆法代价太大,还容易遗漏。

这篇文章介绍一种优雅的做法:把”出谜题”变成一个填色游戏,然后用舞蹈链算法自动求解。顺带揭露一个很容易写错的细节——以及 Knuth 用来修复它的一个小技巧。

Read more


引言

一个宋朝就有文献记载的传统玩具,和现代 5G 手机的信号调制算法,共享着同一个数学结构——你信吗?

前面几篇我们一直在和精准匹配、Dancing Link 打交道,解决的核心问题是”在组合空间里找满足条件的子集”。这篇换个方向——不是挑选,而是遍历:怎样把所有 n 位二进制串走一遍,而且每一步只改变一个 bit?

答案藏在一个中国传统智力玩具里。

Read more