『今週の問題』第215回 解答


◆東京都 明 さんからの解答

【問題1−1】

手数:15手
手順:下記2通り

1,2→移動先,3,4→移動先,5→移動先,5,3→最 初,4,1→最 初,
2→最 初,2,4→移動先,1,5→移動先,3→移動先,3,1→最 初,
5,2→最 初,4→最 初,4,5→移動先,2,3→移動先,1→移動先,

1→移動先,2,3→移動先,4,5→移動先,4→最 初,5,2→最 初,
3,1→最 初,3→移動先,1,5→移動先,2,4→移動先,2→最 初,
4,1→最 初,5,3→最 初,5→移動先,3,4→移動先,1,2→移動先,
【問題1−2】

手数:16手
手順:下記

1,2→移動先,3,4→移動先,5→移動先,5,3→最 初,4,1→最 初,
2→最 初,2,4→移動先,1,5→移動先,3→移動先,3,1→最 初,
5,2→最 初,5→移動先,2,3→移動先,2→最 初,3→最 初,
5,4→最 初,
【問題2−1】

手数:28手
手順:下記2通り

1,2→移動先,3,4→移動先,5,6→移動先,7→移動先,7,5→最 初,
6,3→最 初,4,1→最 初,2→最 初,2,4→移動先,1,6→移動先,
3,7→移動先,5→移動先,5,3→最 初,7,1→最 初,6,2→最 初,
4→最 初,4,6→移動先,2,7→移動先,1,5→移動先,3→移動先,
3,1→最 初,5,2→最 初,7,4→最 初,6→最 初,6,7→移動先,
4,5→移動先,2,3→移動先,1→移動先,

1→移動先,2,3→移動先,4,5→移動先,6,7→移動先,6→最 初,
7,4→最 初,5,2→最 初,3,1→最 初,3→移動先,1,5→移動先,
2,7→移動先,4,6→移動先,4→最 初,6,2→最 初,7,1→最 初,
5,3→最 初,5→移動先,3,7→移動先,1,6→移動先,2,4→移動先,
2→最 初,4,1→最 初,6,3→最 初,7,5→最 初,7→移動先,
5,6→移動先,3,4→移動先,1,2→移動先,
【問題2−2】

手数:31手
手順:下記

1,2→移動先,3,4→移動先,5,6→移動先,7→移動先,7,5→最 初,
6,3→最 初,4,1→最 初,2→最 初,2,4→移動先,1,6→移動先,
3,7→移動先,5→移動先,5,3→最 初,7,1→最 初,6,2→最 初,
4→最 初,4,6→移動先,2,7→移動先,1,5→移動先,3→移動先,
3,1→最 初,5,2→最 初,7,4→最 初,7→移動先,4,5→移動先,
2,3→移動先,2→最 初,3→最 初,4→最 初,5→最 初,
7,6→最 初,
【おまけ1】

「移動先」の列に1〜nの順に並べるための最少手数
 n=2k+1のとき、(2k+1)(k+1)

理由

まず、最初の列と移動先の列を1つのつながった列と考えます。
最初の列と移動先の列の間でカードを1枚ずつ移動した場合は、つながった列の中ではカードの順番は替わる事がありません。
2枚のカードを移動した場合は、つながった列の中では2枚の間で順番が置換されることになります。
隣合ったカードの置換ができれば、適当に置換を繰り返すことでカードの並びを任意にすることができます。

【問題1】【問題2】の答えのように2枚ずつカードを列間移動させ、最後に残った1枚を移動させるk+1回の移動を繰り返すことを考えます。

1セット(k+1回、2k+1枚)の移動でのカードの順番は次のようになります。

1,2,3,4・・・,2k-2,2k-1,2k,2k+1 → 2,1,4.3,・・・,2k-3,2k,2k-1,2k+1
次の1セットでの移動では次のとおりとなります。
2,4,1,6・・・,2k,2k-3,2k+1,2k-1
これを詳細に見てみると、1セットごとに奇数は右へ、偶数は左へ1つずつ移動し、両端で折り返していることがわかります。
したがって、2k+1セット後には完全に順番が逆転します。
2k+1,2k,2k-1,2k-2・・・,4,3,2,1
以上により、(2k+1)(k+1)回の移動で、最初の列から移動先の列への指定された順番にカードを並べることができることが解ります。

次に最小手数について考えます。

最初の列から移動先の列へカードの山を題意に添って移動させると、つながった列としてみれば、始めと最終形の間で、列のカードの順番の転倒(2枚のカード間の数の順番の逆転)の数は、
(2k+1)k 個になります。
したがって2つの列の間で2枚組の移動を最低 (2k+1)k回しなければなりません。

ところで、2つの列の間で2枚組の移動をする場合、移動の方向を変えるとき、少なくとも1枚のカードの移動をしなければなりません。
(さもないと次の2枚組の移動は1つ前の状態に戻すだけで無駄な手となります。)

(2k+1)k回の2枚のカードを移動させるとき、列間の1方向への移動は最大 k回しかできないため、
移動の方向の変化は最低 (2k+1)-1=2k 回必要です。

以上により、(2k+1)k組のカードの転倒には (2k+1)k+k回のカード移動が必要です。

ただし2枚ずつのカード移動をしたとき、最後に1枚のカードが最初の列に残るため、すべてのカードを移動先へ移すためには
最低でも (2k+1)k+k+1=(2k+1)(k+1)回のカード移動が必要になります。

以上により、2枚ずつカードを列間移動させ、最後に残った1枚を移動させるk+1回の移動を繰り返すことで、最小手数のカード移動ができることが証明されました。

最初に1枚を移動し、次に2枚ずつ k回移動させる方法でも同様です。
最小手数で指定の並びを実現する方法はこの2通りしかないことも明らかです。

【おまけ2】

指定された並びにするため、【問題1】【問題2】と同様な方法でカード移動をすれば
k(2k+5)-2 回で可能なことは判りますが、これが最小手数かはわかりません。
(k が2以上のときは少なくとも 2k+1 回の移動方向の変更が必要なため、
(2k+1)(k+1) 回が下限であることは判ります。)

n=3,5,7については計算機でk(2k+5)-2 回が最小手数であることを確かめました。
(n=9 以上ではメモリ不足で計算できませんでした。)

ちなみに n=5での最小手数の移動方法は22通り。
n=7での最小手数の移動方法は530通りありました。

参考で、コメントなしですが手数、手順を求めるためのプログラムを添付します。
(10進BASICです。)


◆滋賀県 松尾 さんからの解答

【問題1−1】

15手です。手順は以下のとおりです。

1→移動先,2,3→移動先,4,5→移動先,4→最 初,5,2→最 初,
3,1→最 初,3→移動先,1,5→移動先,2,4→移動先,2→最 初,
4,1→最 初,5,3→最 初,5→移動先,3,4→移動先,1,2→移動先
一番上のカードを動かし、次からは2枚のカードを動かします。
これをその列のカードが無くなるまで繰り返します。

【問題1−2】

「最小手数です。」との表示が出ないので自信がありませんが、16手です。
手順は以下のとおりです。

1,2→移動先,3,4→移動先,5→移動先,5,3→最 初,4,1→最 初,
2→最 初,2,4→移動先,1,5→移動先,3→移動先,3,1→最 初,
5,2→最 初,5→移動先,2,3→移動先,2→最 初,3→最 初,5,4→最 初
【問題2−1】

28手です。手順は以下のとおりです。

1→移動先,2,3→移動先,4,5→移動先,6,7→移動先,6→最 初,
7,4→最 初,5,2→最 初,3,1→最 初,3→移動先,1,5→移動先,
2,7→移動先,4,6→移動先,4→最 初,6,2→最 初,7,1→最 初,
5,3→最 初,5→移動先,3,7→移動先,1,6→移動先,2,4→移動先,
2→最 初,4,1→最 初,6,3→最 初,7,5→最 初,7→移動先,
5,6→移動先,3,4→移動先,1,2→移動先
【問題2−2】

「最小手数です。」との表示が出ないので自信がありませんが、31手です。
手順は以下のとおりです。

1,2→移動先,3,4→移動先,5,6→移動先,7→移動先,7,5→最 初,
6,3→最 初,4,1→最 初,2→最 初,2,4→移動先,1,6→移動先,
3,7→移動先,5→移動先,5,3→最 初,7,1→最 初,6,2→最 初,
4→最 初,4,6→移動先,2,7→移動先,1,5→移動先,3→移動先,
3,1→最 初,5,2→最 初,7,4→最 初,7→移動先,4,5→移動先,
2,3→移動先,2→最 初,3→最 初,4→最 初,5→最 初,
7,6→最 初
【おまけ1】

何度かやっていくうちに最初のカードを1枚動かし、次から2枚づつ動かすという方法に出会いました。
この方法では n=5のとき、以下のように変化します。
「最初」を「左」、「移動先」を「右」で表します。括弧内は手数です。

(0)  (3)  (6)  (9) (12) (15)
左 右  左 右  左 右  左 右  左 右  左 右  
1      4  3      2  5      1
2      5  1      4  3      2
3      2  5      1  4      3
4      3  2      5  1      4
5      1  4      3  2      5
これが最短手数かということですが、完成直前は「最初」の列の上の2枚のどちらかに5があり、下の2枚のどちらかに1があるという状態にします。
「移動先」の列は空です。
上図の12手目の 状態です。

このためにカードは2つの列を移動するのですが、隣の列に移動する場合、5枚のカードすべてを移動しないと完成直前の状態になりません。
例えば5のカードを残したまま5を上に移動することはできません。
すべてのカードを隣の列に移動する手数は最小で3手、
カードがn枚の時は(n+1)÷2(手)です。

何回列を移動しなくてはならないかですが、左の列にカードがある時の1と5の位置に注目します。
5は2つづつ上に、1は最初は1つで、次は2つ下がります。
ほかの方法を試みましたが、1と5の上下移動は2つまでで3つ以上上下することはありません。

完成直前、12手目の状態になるには1は3つ下がり、5は4つ上がります。
このためn=5の場合、
「最初」ー>「移動先」ー>「最初」ー>「移動先」ー >「最初」 で4回、
カードがn枚の場合は、移動は(n−1)回必要です。

最後に5つのカードを右の列に移動して完成ですから、移動は5回、n枚の時はn回です。
以上から最短の手数は  n(n+1)÷2(手)  です。

なお、カードの動かし方で、上から1枚、次から2枚を動かしましたが、上から2枚づつ動かし、最後の1枚を動かす方法でも同じ手数でできます。

【おまけ2】

n=5のとき、最初から2枚づつ、残りの1枚を一番上に移動するという方法で途中まで動かします。
4が「移動先」の下に来たら、4を残して残りを移動します。
1が「最初」の下に来たら、1のみ残して残りを移動します。
この後、移動は1枚、2枚と動かします。 最後に1枚、1枚、2枚と動かし完成です。

この方法では以下のように変化します。
「最初」を「左」、「移動先」を「右」で表します。
括弧内は手数です。

n=5の場合の変化

(0)  (3)  (6)  (9) (11) (13) (16)
左 右  左 右  左 右  左 右  左 右  左 右  左 右
1      5  2      3            5
2      3  4      1  5      2  4
3      4  1      5  2      3  3
4      1  5      2  3      5  2
5      2  3      4  1 4  1 4  1
これが最短手数かということですが、完成直前の状態は1、2が「移動先」の上2枚のどちらかにあり、4、5が下2枚にあるという状態にします。
すべてのカードを隣の列に移動する手数は最小 で3手、
カードがn枚の時は(n+1)÷2(手)です。

何回列を移動しなくてはならないかは【おまけ1】と同じで4回、カードがn枚の場合は、(n−1)回です。
これで「最初」の列に並びますが、これではできません。
5の位置は上から2枚目となり、また、2、3、4のカードの位置が合わないからです。
結局、もう1往復する必要があります。

ただ、途中で4が「移動先」の下1枚目に来るので、移動の手数は1手減ります。
上図の9手目です。
また、1も途中で「最初」の下1枚目にくるので、手数 は1手減ります。
上図の11手目です。
合計で2手減ります。

完成直前の「移動先」の列に並ぶまでにかかった手数は【おまけ1】の手数から2手減らした数の13手、
カードがn枚の時は n(n+1)÷2−2(手) です。

そして最後に4つのカードを右の列に移動して完成ですが、上から1枚、1枚、2枚と移動するので、手数は3手、
n枚の時はn−2手です。

結局、手数は
 n(n+1)÷2−2 + n−2(手)
=n(n+1)÷2 + n−4(手)です。

n=7の場合の変化です。

(0)  (4)  (8) (12) (16) (20) (23)
左 右  左 右  左 右  左 右  左 右  左 右  左 右
1      7  2      5  4      3
2      5  4      3  6      1  7
3      6  1      7  2      5  4
4      3  6      1  7      2  5
5      4  3      6  1      7  2
6      1  7      2  5      4  3
7      2  5      4  3      6  1 6

  (26)  (31)
   左 右  左 右
        7
     2  6
     3  5
     4  4
     5  3
     7  2
   1 6  1
感想です。
逆順に並べる手数は「最小手数です。」との表示が出ないので自信がありません。
もし、完成直前のカードが「移動先」の列にあるとき、2〜(n−1)の カードをうまく並べられたら、さらに手数は短くなりますが、至りませんでした。


◆愛知県 Y.M.Ojisan さんからの解答

【問題1−1】 15手

1,2→移動先,3,4→移動先,5→移動先,5,3→最 初,4,1→最 初,
2→最 初,2,4→移動先,1,5→移動先,3→移動先,3,1→最 初,
5,2→最 初,4→最 初,4,5→移動先,2,3→移動先,1→移動先,
【問題1−2】 16手
1,2→移動先,3,4→移動先,5→移動先,5,3→最 初,4,1→最 初,
2→最 初,2,4→移動先,1,5→移動先,3→移動先,3,1→最 初,
5,2→最 初,5→移動先,2,3→移動先,2→最 初,3→最 初,
5,4→最 初,
【問題2−1】 28手
1,2→移動先,3,4→移動先,5,6→移動先,7→移動先,7,5→最 初,
6,3→最 初,4,1→最 初,2→最 初,2,4→移動先,1,6→移動先,
3,7→移動先,5→移動先,5,3→最 初,7,1→最 初,6,2→最 初,
4→最 初,4,6→移動先,2,7→移動先,1,5→移動先,3→移動先,
3,1→最 初,5,2→最 初,7,4→最 初,6→最 初,6,7→移動先,
4,5→移動先,2,3→移動先,1→移動先,
【問題2−2】 31手
1,2→移動先,3,4→移動先,5,6→移動先,7→移動先,7,5→最 初,
6,3→最 初,4,1→最 初,2→最 初,2,4→移動先,1,6→移動先,
3,7→移動先,5→移動先,5,3→最 初,7,1→最 初,6,2→最 初,
4→最 初,4,6→移動先,2,7→移動先,1,5→移動先,3→移動先,
3,1→最 初,5,2→最 初,7,4→最 初,7→移動先,4,5→移動先,
2,3→移動先,2→最 初,3→最 初,4→最 初,5→最 初,
7,6→最 初,
【おまけ1】

【おまけ2】  (予想)

【証明】
 下図(n=9の場合)のようにカードのある部分だけ上部を付き合わせると、9個のセルにカードがならび、
n+1個の位置の何れかの位置に境界が一つあるという図になる。
 この場合、1個だけ移動するのは、境界が1個ずれるだけと同じである。また、2個の移動は、境界が2個ずれることと、通過した2セルのカード交換が行われることと同じである。

  

 以上の表示方法で初期状態とゴール状態を表すと下図である。
いずれのゴールもカード配置にのみ注目すると逆順である。境界位置が異なっているだけである。 
 一方、上図に示すように1個移動ではカードの並びは変化せず、2個の場合は互換一回に対応している。


【十分条件】
【おまけ1】

下図のように2個2個。。。最後1個移動を左右にn回スイープすればカード順は逆転し、かつ矢印は左端に来る。
このときの手順数はである。

【おまけ2】

下図のように2個2個。。。最後1個移動を左右にn−2回スイープし、n−1回目は最後の1個移動の前でスイープを止める。
次に逆スイープを行うが最初に1個移動し、2個2個。。。2個移動をできるところまで行う。
最後のスイープでは1個1個。。。。。1個移動を行い最後に2個移動を行う。
以上でカード順は逆転し、矢印は右端にくる。
このときの手順数はである。
青破線はそのままを表す)
これは単順に、おまけ1の手順の最後を除く手順の後、1個移動のみで右へ戻る方法よりは2回少ない。
  

【必要条件】

N枚のカードを逆順に並び替えるには 互換は全部で回必要である。
これを「必要互換数」とよぶ。
即ち、どんなに少なくても回の手数は必須である。
ただし、2個移動ばかりでは矢印の位置が2づつ左右するだけなので、n=9の場合なら4回より後は戻るしかなく、かつそれは前回と同じ互換なので無駄である。
一般には回連続が最高である。
これを「最高連続互換回数」とよぶ。

 従って、状況を変えるには ここに「1個移動」を挟む必要がある。
必要互換数/最高連続互換回数=nであるので 少なくともn−1回の「1個移動」が余分に必要である。
nは奇数であるので、区分境界(↓)はほぼ左の端に行っている。
完全に左端にゴールするには、後1回「1個移動」が必要である。
 よって、【おまけ1、2】の手数は回より小さくない。

 【おまけ2】の場合は、PCで虱潰しに探索したところ n=5,7,9の場合は十分条件で示した手数が最小であることが確認された。
多分、それ以上のときも十分条件で示した手数が最小と思われるが証明できなかった。


 ◆ 問題へもどる

 ◆ 今週の問題

数学の部屋へもどる