子串复杂度、平衡 01 串与 Sturmian 串

让我们先从两个小问题开始说起。第一个问题是,是否存在某个无限不循环的 01 串,使得对于任意一个正整数 n ,该 01 串中长度为 n 的子串都有且仅有 n + 1 种?

或许这个问题来得有些突然。让我们慢慢解释一下,这个问题是怎么来的。衡量一个 01 串的复杂程度有很多办法,比方说,我们可以去考察它的“子串复杂度”(subword complexity),即子串的种类有多丰富。我们用 pw(n) 来表示,在一个(有可能无限长的)数字串 w 当中,长度为 n 的子串一共有多少种。例如,对于无限 01 串 α = 000000… 来说,不管 n 是多少, pα(n) 永远都等于 1 ;而对于无限 01 串 β = 001001001… 来说,我们有 pβ(1) = 2 ,并且 pβ(2) = pβ(3) = pβ(4) = … = 3 。

注意,虽然 α 和 β 这两个 01 串都是无限的,但是当 n 的值变得很大时, pα(n) 和 pβ(n) 的值始终很小。当然,这一点也不奇怪,因为 α 和 β 是一种特殊的无限 01 串——无限循环 01 串。对于那些无限不循环的 01 串来说,这种事情就不大可能了。在数字串 γ = 01001000100001… 里,长度为 1 的子串只有 {0, 1} 共 2 种,长度为 2 的子串有 {00, 01, 10} 共 3 种,长度为 3 的子串有 {000, 001, 010, 100} 共 4 种,长度为 4 的子串有 {0000, 0001, 0010, 0100, 1000, 1001} 共 6 种……像这样继续计算下去,我们可以得到序列 pγ(1), pγ(2), pγ(3), pγ(4), … 的前面若干项:

2, 3, 4, 6, 9, 12, 16, 20, 25, 30, 36, 42, 49, 56, 64, 72, 81, 90, 100, 110, …

趋势非常明显:随着 n 的增加, pγ(n) 的值也会跟着增加,最终可以增加到任意大。换句话说, pγ(n) 的值没有一个上限。那么,能否找到某个无限不循环的 01 串 w ,使得 pw(n) 的值存在上限呢?不可能!下面我们就来说明,对于任意一个无限不循环的 01 串 w 来说,不管 n 是多少,不等式 pw(n) ≥ n + 1 始终成立。

Read more…

在 2048 里能够得到的最大的数是多少?

Michael Brand 在 Using your Head is Permitted 趣题站 2014 年 4 月的谜题中提出了一个这样的问题:在最近非常流行的小游戏 2048 中,你能得到的最大的数是多少?

在这里,我们简单描述一下游戏的规则。游戏在一个 4 × 4 的棋盘上进行,棋盘里填有一个个的“数块”,每个数块上都写有某个形如 2n 的正整数。每一步,你需要从上、下、左、右四个方向中选取一个方向,按下对应的方向键之后,所有的数块都会“落”到这个方向;若有两个同种的数块在此过程中发生碰撞,则它们的值会相加起来,并合成一个新的数块。然后,系统会在棋盘中随机选择一个空白位置,并在此生出一个新的数块,上面写有数字 2 或者数字 4 (两种情况之比为 9 : 1)。游戏开始时,棋盘上会自动生成两个随机的数块,你的目标就是通过有限步的操作,得出一个写有 2048 的数块。当然,即使得到了 2048 这个数块,游戏也不会自动结束,你还可以向更大的数发起挑战。于是就有了我们刚才的问题:理论上,这个游戏当中能够得到的最大的数是多少?

Read more…