引言

2025 年 12 月,87 岁的 Knuth 在斯坦福做了他的第 29 届圣诞讲座,主题是骑士巡游(Knight’s Tours)。台下的人估计没想到,这老爷子 1973 年就开始研究这个问题,找了五十多年才把当年的笔记翻出来,在 2025 年做出了新的突破——把 8×8 棋盘上所有满足 180° 旋转对称的封闭巡游数清楚了:2,432,932 个,占全部封闭巡游的不到 0.1%。这个数字是怎么来的,后面慢慢说。

这篇文章是 TAOCP 系列的续集。我们已经聊过精准匹配Dancing Link回溯算法,骑士巡游是把这些东西串起来的绝佳例子——它是一个哈密顿路径问题,但 Knuth 有个漂亮的技巧把它变成精准匹配。

Read more


整理博客归档的时候,偶然翻到了十年前写的一篇笔记——Learning how to learn。那是我在Coursera上完同名课程后整理的要点,当时不知道怎么想的,居然只用英文写了。

正好最近我的博客加上了中英文切换功能,每个主题可以同时存在中英文两个版本,访客可以根据自己的语言偏好阅读。既然基础功能已经搭好了,那就把这个坑填上吧。

Read more


前言

你为了学英语,把手机系统切成过英文吗?

昨天折腾北京玲珑通交通卡折腾了半天,解决问题之后,我下定决心把用了一年多的英文iOS系统切回了中文。这件事让我感想不少,记下一笔。

Read more


前言

想象一下,你的一篇技术文章被外国开发者看到,但因为语言障碍,他们无法理解其中的精髓。或者一位国际读者想了解你的观点,却因为语言问题而放弃。在全球化的今天,多语言支持已经不再是加分项,而是必备功能。

但是,很多静态网站的多语言实现要么过于复杂,要么不够优雅。今天,我想结合我的个人博客实现,分享一种简单、直观且易于维护的方案,带你在Jekyll静态网站中优雅地实现中英双语支持。

核心实现思路

1. 文件命名规范:用文件名直接标识语言

我采用了一种非常直接且易于理解的文件命名方式:

  • 中文文章:yyyy-mm-dd-title.md
  • 英文文章:yyyy-mm-dd-title_en.md

这种命名方式的三大优点:

Read more


引言

如果你可以创建一组无需逗号或分隔符就能唯一解码的代码,这会对 DNA 测序、数据压缩和错误校正产生什么影响?

这不是纯粹的学术好奇——commafree codes 在这些领域都有实际应用。在我上一篇文章中,我们探讨了指数级复杂度的递归算法。今天,我们将深入 Knuth 的 Algorithm C,它通过巧妙的回溯和稀疏数据结构实现了惊人的效率。

本文你将学到:

  • Algorithm C 如何将复杂度从 O(2^n) 降低到可管理的水平
  • 用于剪枝搜索空间的 ingenious “poison array” 技术
  • 实用的实现技巧和性能优化方法

无论你是正在研读 TAOCP 4B,还是单纯热爱优雅算法,这篇深度解析都将改变你对组合搜索的思考方式。

Read more