注:本文基本上是对参考文献 \(1\) 的翻译。这份论文是法语的,并且我没找到英语版本或中文介绍(

大家应该很熟悉汉诺塔了把,,,这里就不解释三柱汉诺塔了。

Frame-Stewart 算法

对于有 \(N\) 个圆盘 \(p\) 和 \(p(p\ge 3)\) 个柱子的汉诺塔,该算法寻找 \(1\le l<N\),使得以下步骤得到操作次数最小:

  • 把前 \(l\) 个通过 \(p\) 个柱子移到一个非目标柱子上。

  • 把剩下的圆盘通过 \(p-1\) 个柱子移到目标柱子上去。

  • 把前 \(l\) 个通过 \(p\) 个柱子移到目标柱子上。

设其答案为 \(\Phi(p,N)\),有:

\[\Phi(p,N)=\min_{1\le l<N}(2\Phi(p,l)+\Phi(p-1,N-l))
\]

边界条件:\(\Phi(3,N)=2^N-1,\Phi(p,1)=1\)。

如何证明其正确性呢?这是一个困难的问题,见下文所述。

有关 \(\Psi\) 和 \(\Phi\) 的代数性质

有必要引入几个重要函数及其性质来辅助证明定理 \(9\) 和定理 \(10\)。

\[[n]=\{0,1,\dots,n-1\}
\]
\[\Delta (n)=n(n+1)/2,\nabla(n)=\max\{k\ge 0\mid \Delta(k)\le n\}
\]
\[\Phi(n)=\sum _{i=0}^{n-1}2^{\nabla(i)}
\]

此时有 \(\Delta u=u+\Delta(u-1)\)。

参考文献 2 指出,

\[\Phi(n)=\min_{0\le m<n}2\Phi(m)+2^{n-m}-1
\]

可以发现其的确和 \(\Phi(4,N)\) 的递推式吻合,所以说 \(\Phi(n)\) 即为所找 \(\Phi(4,N)\)。根据这一点不难得出其通项公式

\[\Phi(n)=1-2^{t-2}(t^2-3t+4-2n)
\]

推论:

\[\forall a,b\in \mathbb{N},\Phi(a+b)\le 2\Phi(a)+2^b-1
\]

其中 \(t=\lceil \sqrt{2n}\rceil\)。

引理 1:对于 \(n,p\in \mathbb{N},p\le n+1\),

\[\Phi(\Delta n+p)=1+(n+p-1)2^n
\]

证明:显然其在 \(p=0\) 时成立,\(p\) 逐渐增加到 \(n+1\) 时都不会改变 \(\Delta n+p-1\) 的 \(\nabla\) 值,得证。

定义函数

\[\Psi_L(E)=(1-L)2^L-1+\sum_{u\in E}2^{\min(\nabla u,L)}
\]
\[\Psi(E)=\sup _{L\in \mathbb{N}}\Psi_L(E)
\]

不难发现其是良定义的。

引理 2:\(\forall n\in\mathbb{N}\),

\[\Psi[n]=\frac{\Phi(n+1)-1}2
\]

证明:

\(n=0\) 时命题成立。因此假设 \(n\ge 1\)。

类似于带余除法地,设 \(n=\Delta m+p\),其中 \(m=\nabla n\),此时 \(0\le p\le m\)。

根据引理 \(1\),有:

\[\Phi(\Delta m)=1+(m-1)2^m
\]
\[\Phi(n+1)=1+(m+p)2^m
\]

因此 \(\forall L\in \mathbb{N}\),有:

\[\Psi_{L+1}[n]-\Psi_L[n]=-(L+1)2^L+\sum _{u\in [n]}2^{\min(\nabla u,L+1)}-2^{\min(L,\nabla u)}
\]
\[=-(L+1)2^L+2^L(\#\{u\in [n]\mid u\ge \Delta(L+1)\})
\]
\[=2^L(\max(0,n-\Delta(L+1))-(L+1))
\]

此式 \(>0\) 当且仅当:

\[n\ge \Delta(L+1)+L+2=\Delta(L+2)
\]

即 \(\nabla n\ge L+2\),等价于 \(L<m-1\)。因此只需计算 \(\Psi_{m-1}[n]\)。

\[\Psi_{m-1}(n)=(2-m)2^{m-1}-1+\sum _{0\le i<\Delta m}2^{\nabla i}+\sum_{\Delta m\le k<n}2^{m-1}
\]
\[=(2-m)2^{m-1}-1+\Phi(\Delta m)+(n-\Delta m)2^{m-1}
\]
\[=m2^{m-1}+p2^{m-1}
\]
\[=\frac{\Phi(n+1)-1}2
\]

证毕。

推论:

\[\forall a,b\in \mathbb{N},\Psi[a+b]\le 2\Psi[a]+2^{b-1}
\]

根据引理 \(2\) 化为 \(\Phi\) 即可。

引理 \(3\):\(\forall n\in \mathbb{N}\),

\[\Psi[n+2]\ge 2^{(\nabla n)+1}
\]

设 \(s=\nabla n\)。根据 \(\Psi[\cdot]\) 递增,仅需考虑 \(\Psi[\Delta s+2]\ge 2^{s+1}\)。

容易验证 \(s<2\) 时成立,对于 \(s\ge 2\),根据引理 \(2\),

\[\Psi[\Delta s+2]=(s+2)2^{s-1}\ge 2^{s+1}
\]

证毕。

引理 \(4\):\(\forall E\subset N,\#E=n\),

\[n\le \Psi[n]\le \Psi (E)\le 2^n-1
\]

\(n\le \Psi[n]\) 是显然的。

\(\Psi[n]\le \Psi (E)\):设 \(E\) 排序后为 \(e_0<e_1<\dots<e_{n-1}\)。此时有 \(e_i\ge i\)。所以

\[\Psi_L(E)=(1-L)2^L-1+\sum_{i}2^{\min(\nabla e_i,L)}\ge (1-L)2^L-1+\sum_{i}2^{\min(\nabla i,L)}=\Psi_L[n]
\]

\(\Psi(E)\le 2^n-1\):放缩,

\[\Psi_L(E)=(1-L)2^L-1+\sum_{i\in E}2^{\min(\nabla u,L)}
\]
\[\le (1-L)2^L-1+\sum_{i\in E}2^{L}=(1+n-L)2^L-1\le 2^{n}-1
\]

证毕。

引理 \(5\):设 \(A,B\subset \mathbb{N}\),

\[\Psi(A)-\Psi(B)\le \sum_{u\in A-B}2^{\nabla u}
\]

设 \(\Psi(A)=\Psi_L(A)\)。放缩:

\[\Psi(A)-\Psi(B)\le \Psi_L(A)-\Psi_L(B)\le \Psi_L(A)-\Psi_L(A\cap B)
\]
\[=\sum _{u\in A-B}2^{\min (\nabla u,L)}\le \sum _{u\in A-B}2^{\nabla u}
\]

引理 \(6\):设 \(A\subset \mathbb{N}\),\(s\in \mathbb{N}\),使得 \(\#(A-[\Delta s])\le s\),那么:

\[\Psi(A)-\Psi(A-\{a\})\le 2^{s-1},\forall a\in A
\]

可以假设 \(A\neq \varnothing\),那么 \(s\ge 1\)。\(\forall L\ge s-1\),根据前面的结果,

\[\Psi_{L+1}(A)-\Psi_L(A)=2^L(\#\{n\in A\mid n\ge \Delta(L+1)\}-L-1)\le 2^L(\#\{n\in A\mid n\ge \Delta s\}-s)\le 0
\]

那么 \(\exists L\le s-1,\Psi(A)=\Psi_L(A)\),所以:

\[\Psi(A)-\Psi(A-\{a\})\le \Psi_L(A)-\Psi_L(A-\{a\})=2^{\min(\nabla a,L)}\le 2^L\le 2^{s-1}
\]

证毕。

引理 \(7\):

设 \(n,s\in \mathbb{N},s\ge 1,n\ge \Delta(s-1),A\in [n],b_{1:s}\in \mathbb{N}^s\)。有:

\[\Psi(A\cup \{b_{1:s}\})-\Psi(A)\le \Psi[n+s]-\Psi[n]
\]

设 \(A_t=A\cup \{b_{1:t}\},0\le t\le s\)。原命题等价于

\[\Psi(A_t)-\Psi(A_{t-1})\le \Psi[n+t]-\Psi[n+t-1]
\]

只需考虑 \(t>0,b\) 互不相同。

根据引理 \(2\),右式可以写作 \(2^{\sigma -1}\),其中 \(\sigma=\nabla (n+t)\)。根据引理 \(6\),只需证明 \(\#(A_t-[\Delta\sigma])\le \sigma\)。

注意到 \(\Delta(\sigma+1)>n+t\),即 \(\sigma+\Delta\sigma\ge n+t\),所以

\[\#(A_t-[\Delta\sigma])\le t+\#([n]-[\Delta\sigma])=t+\max(0,n-\Delta\sigma)\le \max(t,\sigma)
\]

下面证明 \(\sigma\ge t\):

\[\Delta t-t=\Delta(t-1)\le \Delta(s-1)\le n
\]

所以

\[\Delta t\le n+t
\]

而 \(\sigma=\nabla(n+t)\ge t\)。证毕。

引理 \(8\):

设 \(A,B\subset \mathbb{N},n=\#(A\cup B)\),则

\[\Psi(A)+\Psi(B)\ge \frac{\Phi(n+3)-5}4=\frac 12\Psi[n+2]-1=\frac 14\left(\sum _{i=3}^{n+2}2^{\nabla i}\right)
\]

等号可直接通过定义得到,关注不等号:

设 \(E=A\cup B,L\in \mathbb{N}\)。根据引理 \(4\),总有 \(\Psi_L(E)\ge \Psi_L[n]\)。所以:

\[\Psi(A)+\Psi(B)\ge \Psi_L(A)+\Psi_L(B)=\Psi_L(A\cap B)+\Psi(A\cup B)\ge \Psi _L(\varnothing)+\Psi_L(E)
\]
\[\ge \Psi_L[0]+\Psi_L[n]
\]

和上面类似地,设 \(n+3=\Delta m+p\),其中 \(m=\nabla (n+3)\)。

根据引理 \(1\),有:

\[\Phi(n+3)=1+(m+p-1)2^m\\
\Phi(\Delta(m-2))=1+(m-3)2^{m-2}
\]

取 \(L=m-2\)。这样

\[\Psi_L[0]+\Psi_L[n]=(1-L)2^{L+1}-2+\sum_{i=0}^{n-1}2^{\min(\nabla i,L)}
\]
\[=(3-m)2^{m-1}-2+\sum _{i=0}^{\Delta(m-2)-1}2^{\nabla i}+\sum_{i=\Delta(m-2)}^{n-1}2^{m-2}
\]
\[=(3-m)2^{m-1}-2+\Phi(\Delta(m-2))+(n-\Delta(m-2))2^{m-2}
\]
\[=(m+p-1)2^{m-2}-1=\frac{\Phi(n+3)-5}{4}
\]

这些引理会在后面的证明被反复应用。

定理 \(9\) 及其证明

汉诺塔游戏和定理 \(9\)

接下来回到原问题汉诺塔问题。

从小到大对圆盘用 \([N]\) 标号。记 \(C\) 是柱子集合,比方说 \(\{0,1,2,3\}\)。

一个汉诺塔游戏的状态可以使用一个函数 \(u:[N]\to C\) 表示。\(u(a)\) 表示 \(a\) 盘子所在柱子。所有状态的集合显然就是 \(C^{[N]}\)。

定义距离函数 \(d(u,v):(C^{[N]})^2\to \mathbb{N}\cup \{\infty\}\),是两个状态通过合法操作互化的最小操作次数。

定理 \(9\):

设 \(C=\{0,1,2,3\},N\in \mathbb{N}\),\(u,v\) 是两个 \(N\) 圆盘 \(4\) 柱汉诺塔的状态。如果 \(\forall i,v(i)\in \{2,3\}\),那么:

\[d(u,v)\ge \Psi(k\in [N]\mid u(k)=0)
\]

这个定理意味着,\(N\) 圆盘 \(4\) 柱汉诺塔的答案 \(\ge \Psi[N]\)。

下面大部分的篇幅将会证明这个定理。

定理 \(9\) 的证明

定义和基础性质

我们采取对 \(N\) 归纳的方法。边界条件是显然的。

设 \(E=\{k\in [N]\mid u(k)=0\}\)。可以假设 \(E\neq \varnothing\),否则命题显然。

设 \(u',v':[N-1]\to C\),是 \(u,v\) 移除掉最大的圆盘的状态。

有:

\[d(u,v)\ge d(u',v')\ge \Psi(E-\{N-1\})
\]

若 \(N-1\not\in E\),显然;因此,假设 \(N-1\in E\)。不妨设 \(v(N-1)=2\)。

接下来定义路径。设 \(d(u,v)=D\)。路径是函数 \(\gamma:[D+1]\to C^{[N]}\),且满足 \(\gamma(0)=u,\gamma(D)=v\),\(d(\gamma(i),\gamma(j))=|i-j|,\forall i,j\in [D+1]\)。下面,也用 \(\gamma _i\) 指代 \(\gamma(i)\)(应用柯里化技巧)。

事实上,把所有的状态可以一步互化的连上无向边,得到的图上 \(u\) 到 \(v\) 的任意一条最短路径就是上面的 $\gamma $。

设 \(E'=\{k\in E\mid \exists t\in [D+1],\gamma_t(k)=3\}\),即初始在第 \(0\) 柱,但经过第 \(3\) 柱的圆盘集合。

考虑 \(E'=\varnothing\) 的情况。这就是三柱问题,而根据引理 \(4\) 知道 \(\Psi (E)\le 2^{\# E}-1\),而 \(D\ge 2^{\# E}-1\ge \Psi(E)\)。

设 \(T=\max E'\),\(E''=E-[T+1]\),\(K=|E''|\)(可能是 \(0\))。设 \(E''=\{b_{1:K}\},b_i<b_{i+1}\)。

显然有 \(T+K+1\le N\)。

设 \(t_0\) 是最小的整数使得 \(\gamma_{t_0}(T)\neq 0\),即 \(T\) 已经离开 \(0\) 柱子的时间。设状态 \(x_0=\gamma(t_0-1)\)。在这一状态中,第 \(0\) 柱的顶部是 \(T\),移动到的那一柱的顶部 \(>T\)。设 \(t_1\) 是最小的整数使得 \(\gamma_{t_1}(T)=3\)。类似地,设 \(x_3=\gamma(t_1)\)。在这一状态中,第 \(3\) 柱的顶部是 \(T\),来的那一柱顶部 \(>T\)。显然 \(1\le t_0\le t_1\le D\)。

设 \(t_2\) 是最小的整数使得 \(\gamma_{t_2}(N-1)\neq 0\),并设 \(z_0=\gamma(t_2-1)\)。在这一状态中,第 \(0\) 柱的顶部是 \(N-1\),移动到的那一柱是空的。设 \(t_3\) 是最大的整数使得 \(\gamma_{t_3}(N-1)\neq 2\),并设 \(z_2=\gamma (t_3+1)\)。在这一状态中,第 \(2\) 柱的顶部是 \(N-1\),来的那一柱是空的。此时有 \(t_2\le t_3+1\)。

类似地定义 \(x'_a,z'_b\) 是忽略 \(N-1\) 圆盘的 \(x_a,z_b\),\(x_a'',z_b''\) 是忽略 \(\ge T\) 的圆盘的 \(x_a,z_b\)。

观察到 \(z_0'\) 的两列都是空的。所以可以类似地应用归纳假设:

\[d(u,z_0)\ge d(u',z_0')\ge \Psi\{k\in [N-1]\mid u(k)=0\}=\Psi(E-\{N-1\})
\]

类似地:

\[d(u,x_0)\ge d(u'',x_0'')\ge \Psi(E\cap [T])
\]

\(\Delta K>T\)

首先考虑 \(\Delta K>T\) 的情形。

此时有 \(K\ge 1,T<b_k=N-1\),也就是说 \(N-1\) 没有经过第 \(3\) 柱。

此外,注意到 \((E-[\Delta K])\subset E''\),\(\#(E-[\Delta K])\le \Delta K\),那么可以应用引理 \(6\):

\[\Psi (E)-\Psi(E-\{N-1\})\le 2^{K-1}
\]

与上面的式子结合,得到

\[d(u,z_0)\ge \Psi(E)-2^{K-1}
\]

由于 \(t_2\le t_3+1\),\(u\) 到 \(v\) 的路径 \(\gamma\) 一定形如:

\[u\to z_0\to z_2\to v
\]

考虑 \(z_2\) 的 \(2\) 柱和 \(c=\gamma_{t_3}(N-1)\)(\(c\in\{0,1\}\))柱上不能有 \(<N-1\) 的圆盘,所以 \(b_{1:K-1}\) 一定都在 \(1-c\) 柱上。这些盘最后(\(v\))一定都在 \(2\) 柱上,而这些圆盘不被允许通过第 \(3\) 柱。根据三柱汉诺塔,有:

\[d(z_2,v)\ge 2^{K-1}-1
\]

而 \(d(z_0,z_2)\ge 1\),所以:

\[D=d(u,z_0)+d(z_0,z_2)+d(z_2,v)
\]
\[\ge (\Psi(E)-2^{K-1})+1+(2^{K-1}-1)=\Psi(E)
\]

证毕。

\(\Delta K\le T\)

其次考虑 \(\Delta K\le T\) 的情况。

取 \(s=\nabla(T+K+1)\)。由于 \(E=[T+1]\cup E''\),\(\#(E-[\Delta s])\le \max(T+1-\Delta s,0)+K\)。

显然 \(s\ge \nabla T\ge K\)。并且 \(T+K+1<\Delta(s+1)=\Delta s+s+1\),那么 \(T+K+1-\Delta s\le s\)。根据以上两条,有:

\[\#(E-[\Delta s])\le s
\]

所以应用引理 \(6\) 有:

\[\Psi(E)-\Psi(E-\{N-1\})\le 2^{s-1}
\]

这次作用于上面的式子得到的结果是

\[d(u,z_0)\ge d(u',z_0')\ge \Psi(E)-2^{\nabla(T+K+1)-1}
\]

\(K=0\)

先考虑 \(K=0\)。

这意味着 \(T=N-1\) 经过了 \(3\) 柱,最后留在 \(2\) 柱。

因为 \(t_1\le t_3\),所以 \(u\) 到 \(v\) 的路径 \(\gamma\) 一定形如:

\[u\to z_0=x_0\to x_3\to z_2\to v
\]

设 \(c=\gamma_{t_3}(N-1)\neq 2\)。所以在状态 \(z_2'\) 中,所有圆盘都在除了 \(2,c\) 的那两个柱子上。设:

\[\{0,1,2,3\}-\{2,c\}=\{a,b\}
\]

不妨设 \(a,b\) 是依下表的值:

\(c\) \(0\) \(1\) \(3\)
\(a\) \(3\) \(3\) \(0\)
\(b\) \(1\) \(0\) \(1\)

\[A=\{k\in [N-1]\mid z_2(k)=a\}
\]
\[B=\{k\in [N-1]\mid z_2(k)=b\}
\]

因为 \(A\cup B=[N-1]\),根据引理 \(8\),有:

\[\Psi(A)+\Psi(B)\ge \frac 12\Psi[N+1]-1
\]
\[=\frac 14(2^{\nabla (N+1)}+2^{\nabla N})+\frac 12 \Psi[N-1]-1
\]
\[\ge 2^{\nabla(T+K+1)-1}+\frac 12 \Psi[N-1]-1
\]

在 \(x'_a\) 中, \(a\) 柱和另一柱为空,因此可以应用归纳假设:

\[d(z_2',x_a')\ge \Psi(A)
\]

而在 \(v'\) 中,\(0\) 和 \(1\) 柱为空,有:

\[d(z_2,v)\ge d(z_2',v')\ge \Psi(B)
\]

而在 \(z_0\) 到 \(z_2\) 的路径上,\([N-1]\) 的圆盘至少做了 \(d(x_a',z_2')\) 次操作(因为路径结构),而 \(N-1\) 至少需要 \(0\to 3\to 2\),所以

\[d(z_0,z_2)\ge \Psi(A)+2
\]

那么

\[D=d(u,v)=d(u,z_0)+d(z_0,z_2)+d(z_2,v)
\]
\[\ge \Psi(E)-2^{\nabla(T+K+1)-1}+\Psi(A)+2+\Psi(B)
\]
\[\ge \Psi(E)+1+\frac 12 \Psi[N-1]\ge \Psi(E)
\]

\(K\ge 1\)

接下来解决最后一种情况:\(K\ge 1\),所以 \(T<b_k=N-1\)。

此时我们无从比较 \(t_1\) 和 \(t_3+1\),难以像之前一样直接每段放缩,只能分类讨论。

\(t_1>t_3+1\)

假设 \(t_1>t_3+1\)。

那么 \(u\to v\) 的路径一定形如:

\[u\to z_0\to z_2\to x_3\to v
\]

在状态 \(x_3\) 中,\(3\) 和 \(d=\gamma_{t_1-1}(T)\) 不包含小于 \(T\) 的圆盘。他们在剩下的两列里。所以,设 \(c=\gamma_{t_3}(N-1)\in \{0,1\}\)。

那么设:

\[\{0,1,2,3\}-\{3,d\}=\{a,b\}
\]

其中 \(a,b\) 值依下表。

\(d\) \(0\) 或 \(1\) \(2\)
\(a\) \(2\) \(c\)
\(b\) \(1-d\) \(1-c\)

\[A=\{k\in [T]\mid x_3(k)=a\}
\]
\[B=\{k\in [T]\mid x_3(k)=b\}
\]

在状态 \(z_2''\) 中, \(a\) 和另一列是空的。因此应用归纳假设:

\[d(x_3,z_2)\ge d(x_3'',z_2'')\ge \Psi(A)
\]

而在 \(v''\) 中, \(0,1\) 列为空。所以应用归纳假设:

\[d(x_3,v)\ge d(x_3'',v'')\ge \Psi(B)
\]

而 \(d(z_0,z_2)\ge 1\),所以:

\[D=d(u,v)=d(u,z_0)+d(z_0,z_2)+d(z_2,z_3)+d(x_3,v)
\]
\[\ge \Psi(E)-2^{\nabla (T+K+1)-1}+1+\Psi(A)+\Psi(B)
\]
\[\ge \Psi(E)-2^{\nabla(T+K+1)-1}+\frac 12 \Psi[T+2]
\]

设 \(s=\nabla(T+K+1)\)。因为 \(T\ge \Delta K\),\(T+K+1\ge \Delta(K+1)\),即 \(s\ge K+1\)。但是

\[T=(T+K+1)-(K+1)\ge \Delta s-s=\Delta(s-1)
\]

即 \(\nabla T\ge s-1\)。根据引理 \(3\),\(\Psi[T+2]\ge 2^s\)。所以,\(D\ge \Psi (E)\)。

\(t_1<t_3+1\)

设 \(t_1<t_3+1\)。

\(u\to v\) 的路径一定形如:

\[u\to x_0\to x_3/z_0\to z_2\to v
\]

中间不能确定 \(x_3\) 和 \(z_0\) 的顺序。

在状态 \(z_2'\) 中,\(2\) 柱和 \(c=\gamma_{t_3}(N-1)\in \{0,1\}\) 柱为空。因此所有圆盘都在 \(3\) 柱和 \(b=1-c\) 柱上。\(b_{1:K-1}\) 一定在 \(b\) 柱上。

\[A=\{k\in [T]\mid z_2(k)=3\}
\]
\[B=\{k\in [N-1]\mid z_2(k)=b\}
\]

在状态 \(x_3''\) 中,\(3\) 柱和另一柱为空。因此可以应用归纳假设,\(d(z_2'',x_3'')\ge \Psi(A)\)。

而在状态 \(v'\) 中,\(0,1\) 柱为空,所以 \(d(z_2,v)\ge d(z_2',v')\ge \Psi(B)\)。

\[([T]\cup \{b_{1:K-1}\})\subset (A\cup B)
\]

所以

\[\Psi(A)+\Psi(B)\ge \frac 12 \Psi[T+K+1]-1
\]

由于 \(d(z_2'',x_3'')\ge \Psi(A)\),在 \(x_3\) 到 \(z_2\),\(<T\) 的圆盘至少操作 \(\Psi(A)\) 次。从 \(u\) 到 \(x_0\),\(<T\) 的圆盘至少操作 \(\Psi(E\cap [T])\) 次(依靠归纳假设)。此外,在 \(u\) 状态下,\(b_{1:K-1}\) 圆盘都在 \(0\) 柱,在 \(z_0\) 却都不在 \(0\) 柱上,且不能经过 \(3\) 柱。因此,根据三柱汉诺塔,他们至少需要 \(2^{K-1}-1\) 次操作完成这个。最后,盘 \(T\) 在 \(x_0\) 到 \(x_3\) 至少被操作一次,盘 \(N-1\) 在 \(z_0\) 到 \(z_2\) 至少被操作一次。综上,

\[d(u,z_2)\ge \Psi(E\cap [T])+\Psi(A)+2^{K-1}+1
\]

得到结果:

\[D=d(u,v)=d(u,z_2)+d(z_2,v)
\]
\[\ge\Psi(E\cap [T])+\Psi(A)+2^{K-1}+1+\Psi(B)
\]
\[\ge \Psi(E\cap [T])+\frac 12 \Psi[T+K+1]+2^{K-1}
\]

另外,由于 \(T\ge \Delta K\),\(E=(E\cap[T])\cup\{T,b_{1:K}\}\),根据引理 \(7\),有:

\[\Psi(E)-\Psi(E\cap [T])\le \Psi[T+K+1]-\Psi[T]
\]

根据上式,有:

\[D-\Psi(E)\ge \Psi(T)+2^{K-1}-\frac 12\Psi[T+K+1]
\]

根据引理 \(2\) 的推论,右式非负,所以 \(D\ge \Psi(E)\)。

至此,定理 \(9\) 的所有情况证毕。

证明原命题-定理 \(10\)

定理 \(9\) 并没有显然地给出 Frame-Stewart Algorithm 的正确性。

定理 \(10\):\(N\) 个圆盘的汉诺塔问题可以在 \(\Phi(N)\) 步内解决。

不妨设 \(N\ge 1\)。

设 \(u\) 是所有 \(N\) 个圆盘都在 \(0\) 柱的状态,\(v\) 是所有圆盘都在 \(2\) 柱的状态。

\(u\) 到 \(v\) 的路径一定形如:

\[u\to z_0\to z_2\to v
\]

由于 \(z_0\) 有两列为空,应用定理 \(9\):

\[d(u,z_0)\ge d(u',z_0')\ge \Psi\{k\in [N-1]\mid u(k)=0\}=\Psi[N-1]
\]

同样,

\[d(v,z_2)\ge \Psi[N-1]
\]

而 \(d(z_0,z_2)\ge 1\),所以:

\[d(u,v)=d(u,z_0)+d(z_0,z_2)+d(z_2,v)\ge 1+2\Psi[N-1]=\Phi(N)
\]

最后一个等号来源于引理 \(2\)。

证毕。

参考文献

参考文献 1 :T. Bousch. La quatri`eme tour de Hano¨ı. Bull. Belg. Math. Soc. Simon Stevin, 21:895–912,2014.

参考文献 2: S.Klav˘zar, U. Milutinovi´c, and C. Petr. On the Frame-Stewart algorithm for the multi-peg Tower of Hanoi problem.Discrete Appl. Math., 120(1–3):141–157, 2002.

四柱汉诺塔的 Frame-Stewart 算法及其最优性的更多相关文章

  1. hdu 1207 四柱汉诺塔

    递推,汉诺塔I的变形. 这题真心没想到正确解法,越想越迷糊.这题看了别人题解过得,以后还是自己多想想,脚步太快并非好事. 贴上分析:   分析:设F[n]为所求的最小步数,显然,当n=1时,F[n]= ...

  2. 4柱汉诺塔(zz)

    多柱汉诺塔可以用Frame–Stewart算法来解决. The Frame–Stewart algorithm, giving a presumably optimal solution for fo ...

  3. 多柱汉诺塔问题“通解”——c++

    多柱汉诺塔问题 绪言 有位同学看到了我的初赛模拟卷上有一道关于汉诺塔的数学题.大概就是要求4柱20盘的最小移动次数. 他的数学很不错,找到了应该怎样推. 如果要把n个盘子移到另一个柱子上,步骤如下: ...

  4. The Towers of Hanoi Revisited---(多柱汉诺塔)

    Description You all must know the puzzle named "The Towers of Hanoi". The puzzle has three ...

  5. HDU汉诺塔系列

    这几天刷了杭电的汉诺塔一套,来写写题解. HDU1207 汉诺塔II HDU1995 汉诺塔V HDU1996 汉诺塔VI HDU1997 汉诺塔VII HDU2064 汉诺塔III HDU2077  ...

  6. 四柱加强版汉诺塔HanoiTower----是甜蜜还是烦恼

    我想很多人第一次学习递归的时候,老师或者书本上可能会举汉诺塔的例子. 但是今天,我们讨论的重点不是简单的汉诺塔算法,而是三柱汉诺塔的延伸.先来看看经典的三柱汉诺塔. 一.三柱汉诺塔(Hanoi_Thr ...

  7. 汉诺塔的问题:4个柱子,如果塔的个数变位a,b,c,d四个,现要将n个圆盘从a全部移到d,移动规则不变

    四柱汉诺塔问题的求解程序.解题思路:如a,b,c,d四柱. 要把a柱第n个盘移到目标柱子(d柱),先把上层 分两为两部份,上半部份移到b柱,下半部分移到c柱,再把第n盘移到 目标柱子,然后,c柱盘子再 ...

  8. [递推]B. 【例题2】奇怪汉诺塔

    B . [ 例 题 2 ] 奇 怪 汉 诺 塔 B. [例题2]奇怪汉诺塔 B.[例题2]奇怪汉诺塔 题目描述 汉诺塔问题,条件如下: 这里有 A A A. B B B. C C C 和 D D D ...

  9. python汉诺塔问题的递归理解

    一.问题背景 汉诺塔问题是源于印度一个古老传说. 源于印度一个古老传说的益智玩具.大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘.大梵天命令婆罗门把圆盘从下 ...

  10. C语言数据结构----递归的应用(斐波拉契数列、汉诺塔、strlen的递归算法)

    本节主要说了递归的设计和算法实现,以及递归的基本例程斐波拉契数列.strlen的递归解法.汉诺塔和全排列递归算法. 一.递归的设计和实现 1.递归从实质上是一种数学的解决问题的思维,是一种分而治之的思 ...

随机推荐

  1. Java 10大优点—Part4—Java内存模型

    本文由 ImportNew - 靳禹 翻译自 zeroturnaround.如需转载本文,请先参见文章末尾处的转载要求. 在忙着参加在爱沙尼亚进行的 TEDx talk 演讲活动以及在比利时举办的一届 ...

  2. golang日志库之log

    查看基本使用: package main import ( "log" ) type User struct { Name string Age int } func main() ...

  3. ip addr没有ip显示?

    重新启动网络 service NetworkManager stop systemctl restart network

  4. cas3.5配置LDAP域控

    一. 安装cas3.5 点击下载 CAS 3.5.2 :CAS 解压缩下载的 cas-server-3.5.2-release.zip,在 %CAS%\modules文件夹中找到cas-server- ...

  5. 【Amadeus原创】Docker安装wikijs wiki系统

    拉取mysql8的镜像并运行 docker pull mysql docker run -d -v /data/mysql/data:/var/lib/mysql -v /data/mysql/con ...

  6. TS 原理详细解读(7)绑定1-符号

    在上一节主要介绍了语法树的解析生成.就好比电脑已经听到了"你真聪明"这句话,现在要让电脑开始思考这句话的含义--是真聪明还是假聪明. 这是一个非常的复杂的过程,接下来将有连续几节内 ...

  7. 一打开终端就默认进入conda的base环境,取消方法

    conda版本:4.10.3 安装conda之后,在使用VSCode的时候,每次在里面使用powershell终端都是默认进入base环境,稍不注意就会用错python解释器,所以考虑取消这一设置.经 ...

  8. java int转byte数组

    int 转 byte[] 低字节在前(低字节序)public static byte[] toLH(int n) { byte[] b = new byte[4]; b[0] = (byte) (n ...

  9. Python 在Excel单元格中应用数据条

    在Excel中添加数据条是一种数据可视化技巧,它通过条形图的形式在单元格内直观展示数值的大小,尤其适合比较同一列或行中各个单元格的数值.这种表示方式可以让大量的数字信息一目了然.本文将介绍如何使用Py ...

  10. Qt音视频开发43-采集屏幕桌面并推流(支持分辨率/矩形区域/帧率等设置/实时性极高)

    一.前言 采集电脑屏幕桌面并推流一般是用来做共享桌面.远程协助.投屏之类的应用,最简单入门的做法可能会采用开个定时器或者线程抓图,将整个屏幕截图下来,然后将图片传出去,这种方式很简单但是性能要低不少, ...