注:本文基本上是对参考文献 \(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方法参数太多怎么办—Part 1—自定义类型

    本文由 ImportNew - 王村平 翻译自 dzone.如需转载本文,请先参见文章末尾处的转载要求. 本文是这个系列的第一篇文章,介绍了采用自定义类型处理参数过多的问题.如果你也希望参与类似的系列 ...

  2. Dockerfile&Docker-Compose之基础

    使用了很久的docker,之前却从来没有总结过, 于是开此篇来记录平常使用Dockerfile和docker-compose.yaml的点滴, 先从基础命令开始哦 [Dockerfile] Docke ...

  3. Linux之EOF

    常见问题: 1.在EOF中存在特殊字符,例如$ 导致后面的无法识别, 因为默认会对变量自动替换 使用引号处理 cat >> a.sh << "EOF" ec ...

  4. Nuxt.js 应用中的 error 事件钩子

    title: Nuxt.js 应用中的 error 事件钩子 date: 2024/12/3 updated: 2024/12/3 author: cmdragon excerpt: 在任何 Web ...

  5. S2P销讯通-主数据对于客户关系管理系统的重要性

    由于业务发展,各大企业的业务系统经历了从无到有,从简单到复杂,从而形成了一个又一个的业务系统,比如OA.HR.CRM.ERP等等. 主数据在客户关系管理系统(CRM)中扮演着至关重要的角色.主数据是指 ...

  6. HarmonyOS Next 入门实战 - 基础组件、页面实现

    基础组件 常用组件 Text:显示文本内容 Image:显示图片 Button:显示一个按钮 Column: 纵向布局 Row:横向布局 List:列表 各组件的用法 Text("文本组件& ...

  7. vue组件传参props

    传参格式,将需要传的参数以属性方式写在组件标签上 //组件标签 <zu a='参数一' b='参数b'></zu> 接收格式,在组件内 //props属性接收参数 props: ...

  8. 使用 ASP.NET Core 5 Web API 创建可发现的 HTTP API

    使用 ASP.NET Core 5 Web API 创建可发现的 HTTP API https://devblogs.microsoft.com/aspnet/creating-discoverabl ...

  9. 中电金信:GienTech动态|一波好消息→中标!多领域“开花”

  10. 该怎么解决no route to host

    出现No route to host 的时候,有如下几种可能: 1.对方的域名确实不通 2.本机自己开了防火墙 3.本机的etc/hosts 里面没有配置本机的机器名和ip (可能性最大) 其中第三点 ...