注:本文基本上是对参考文献 \(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. SAX,DOM,JAXP,JDOM,DOM4J比较分析

    第一:首先介绍一下SAX,DOM,JAXP,JDOM,DOM4J的基本知识:(注意:至于 JAXP JAXB JAXM JAXR JAX-RPC 分别指什么,查看http://gceclub.sun. ...

  2. OS之《进程管理》

    进程同步 同步实际上是指:将多个进程,按照顺序,有序执行. 让进程有序进行的场景有很多.比如:一个进程依赖另外一个进程的计算结果:一个进程等待另外一个对临界资源的访问:还有像生产者消费者模型中的相互配 ...

  3. 【Amadeus原创】域用户完美执行应用程序

    企业环境中,为了安全起见一般都没有赋予域用户或者企业的PC客户端用户管理员权限. 但偶尔会有个别的程序一定需要管理员身份才能执行,如财务某些程序或专业的应用程序.那么如何不赋予用户管理员权限及密码但又 ...

  4. element 表格增加多选框 ,增加多选

    1. el-table 增加如下代码,就会出现多选框 <el-table-column type="selection" class="checkbox-inp&q ...

  5. 【Python】【Matplotlib】词云图

    关于从网页获取文本 import requests from bs4 import BeautifulSoup code = requests.request("post",&qu ...

  6. gitlab16 gitlab-runner

    gitlab-runner verify --delete FederatedKMeansSecureModelInference gitlab-runner register  --url http ...

  7. Spring Boot logback springProperty 设置默认值

    springProperty 当没有读取到source字段中设置的log.path值时,设置为defaultValue字段中的${user.dir}/logs变量值. <springProper ...

  8. 聊一聊 C#线程池 的线程动态注入 (下)

    一:背景 1. 讲故事 前面二篇我们聊到了 Thread.Sleep 和 Task.Result 场景下的线程注入逻辑,在线程饥饿的情况下注入速度都不是很理想,那怎么办呢?有没有更快的注入速度,这篇作 ...

  9. Qt/C++音视频开发70-无感切换通道/无缝切换播放视频/多通道流畅切换/不同视频打开无缝切换

    一.前言 之前就写过这个方案,当时做的是ffmpeg内核版本,由于ffmpeg内核解析都是代码实现,所以无缝切换非常完美,看不到丝毫的中间切换过程,看起来就像是在一个通道画面中.其实这种切换只能说是取 ...

  10. Qt编写的项目作品4-输入法V2019

    一.功能特点 未采用Qt系统层输入法框架,独创输入切换机制. 纯QWidget编写,支持任何目标平台(亲测windows.linux.嵌入式linux等),支持任意Qt版本(亲测Qt4.6.0到Qt5 ...