D ディスク、P 極、およびディスクの初期開始位置と、必要な極の最終目的地が与えられた場合、問題の一般的な解決策をどのように記述できるでしょうか?
例えば、
D=6 と P=4 の場合、最初の開始位置は次のようになります。
5 1
6 2 4 3
数字は円盤の半径を表し、極には左右に 1 ~ 4 の番号が付けられており、すべての円盤を極 1 に積み重ねたいと考えています。
次の動きをどのように選択しますか?
解決策は次のとおりです(手動で解決します):
3 1
4 3
4 1
2 1
3 1
(形式: <from-pole> <to-pole>
)
最初の動きは明らかです。「4」を「5」の上に移動します。これは、最終的なソリューションで必要な位置だからです。
次に、おそらく次に大きい数字、つまり「3」を移動したいと思います。しかし、最初にそれをアンベリーする必要があります。つまり、次に「1」を移動する必要があります。しかし、それをどこに置くかをどのように決めるのでしょうか?
それは私が得た限りです。考えられるすべての場所を試す再帰的アルゴリズムを作成できますが、それが最適かどうかはわかりません。