『5つのナップザック』解答


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

【問題1解答】 1296通り

【考え方】

常に全体が入っている大きなナップザックXを考え、パッキング関係を矢印で表すとき、
たとえばY+B[O+R[G]]は図1のように表せる。

 図1

図2に示すように「矢印」は1つのナップザック(例:R)につき全て5種ある。

 図2

従って,その組み合わせは5=3125ある。
このうち下図に示すように、ループを含む関係は存在しえず、この分を差し引くことにより、全組み合わせ数を計算できる。

 

【記号】

Nz :ナップザック

NM
=:N個からM個のNzを取り出しループを作る場合の数
NM×M-1M-1

NBM
=:図2における「X」相当が複数 (1+N-M)個、NzがM個ある場合のループができる場合の数を意味するとする。

下図参照

N2=1

N333+N×32

N444+N×4342×4-22/2+(N2N2)×42

。。。。。。

であり、
答え=NNNである。

【計算】

以下、ループの大きさと数で分類し、計算する。

○5Nzのループの数
 55=1×44=24

○4Nzのループの数
 54×55-4
54×33×5
=150

○3Nz+2Nzのループの数
 53×5-32
=(53×22)×1
=20

○3Nzのみのループの数
 53×(55-352
53×22×(52−1)
=480

○2組の2Nzのループの数
 52×5-22/2×55-2-2
=(52×1×5-22×1)/2×5
=75

○1組の2Nzのループの数
 52×(55-253
52×(5333−5×32
52×1×(125―1×22−5×32
=1080

以上より
 55
=24+150+(20+480)+75+1080
=1829

よって 
答え=3125−1829=1296

【蛇足】

N=2
 2222=3

N=3
 333
=27−2−9
=16

N=4
 444
=256−6−32−3−90
=125

N=6

−○6Nzループ−○5Nzループ−○4Nzのみループ
−○4Nzと2Nzループ−○3Nzのみループ−○3Nz2個ループ
−○3Nzと2Nzループ−○2Nzのみループ−○2Nz2個ループ
−○2Nz3個ループ
。。。。 この先には、一般解は見えません。


【出題者のコメント】

思い付かないユニークな解法には脱帽しました。
実は、この問題の創作時に偶然発見したのですが、N個の時の一般解も存在します。
問題2として出題します。


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

【問題2】 (N+1)N-1通り

【証明】

下図のように最初の1Nz(R)だけ特別扱いする。
すると、その他N−1個の入る位置は、

(1)Rの上方Xとの間に繋がる場合(尊属、いとこ)
(2)Rの下方(子孫)
(3)側鎖(はとこ)

の何れかである。

次に2番目(O)の位置をどのNzに入るかで分類すると、
下図のように(N+1)ケースある。

すなわち、自分以外の各Nzに入る(以後直下)(N−1)ケースと「X」の直下で、「Rの上方」の場合と「Rの直系でない:側鎖」の場合の2ケースの合計である。
 これは1番目(R)以外のその他のNzに関しても対称性から全く同じである。

次に3番目(G)の結合を考えると、
全部で(N+1)×(N+1)タイプがあるが、このうち下図の禁止マークの2タイプは存在しえない。
しかし、「R上方」への結合タイプで、各1タイプにつき直列になる場合と側鎖になる場合の2ケースが存在するため、2番目(O)の1ケースにつきそれぞれ(N+1)ケースが存在する。
 すなわち、(N+1)2 ケース存在している。

さらに、Nz(B)(Y)。。。。を追加していっても、
下2図のようにループがあれば、
その数だけ、必ず「R上方」への結合部において、
直列、並列の側鎖ケースの数がその数分増え、
「R上方」部に既に先客がある場合はその先客の直下において、
さらにその分側鎖ケースが+1されるので、
必ず1タイプにつき(N+1)ケースが存在する。

よって、Rを除く(N−1)個のNzのケースの積であり、
全部で (N+1)N-1とおりある。

【感想】

脱帽はこちらです。
問題1で 正攻法では場合分けが多くなるので、裏側から攻撃し、一応の成果はあったのですが、一般解へは到達しませんでした。

N=1,2,3の場合の数1、3、16をしらみ潰しで確認し、
N=4を飛ばして N=5の1296を正攻法の答えで確認し、解答を書き終えて蛇足をつける段階でのことです。

N=4の場合の答えを計算したら
 125=53

まさかの気持ちで64を計算したら1296。

さらに、N=6,7でも成立。
この奇策は無駄であったことが分かり、かなり愕然としました。
一般解は正攻法の末にあるらしいのですから。

結局しりきれとんぼの蛇足とともに、ほぼ間違いなく「問題2」が出るであろうことを予測しつつ、【問題1】の解答を提出しましたが。

しかし、どうしてこんなに綺麗な解なのでしょう。
綺麗に解きたくて、その単純な構造を見つけようとこの1週間悩みに悩んだのですが、結局それは出来ませんでした。


【出題者のコメント】

【問題1】,【問題2】とも全て正解です!
ただ、出来る事なら一般解の証明は一般のN個から直接に証明して頂きたかったですけど・・。


出題者の山梨県 Footmark さんの証明

【問題1】

  (5+1)5-1
= 64
= 1296

【答え】1296 通り

【問題2】

【答え】 (N+1)N-1 通り

【証明】

ナップザックの持ち主にも登場してもらい、各ナップザックは人格化して目と口と耳を持つものとします。

現実に1つの収納の仕方があるとして、次のことを行うものとします。

まず、ナップザックの持ち主から、自分に直接見えるナップザックがあれば、RGB値順に告げてから、最後に「ありません」と報告します。

次に、色を告げられたナップザック順に、自分の中に直接見えるナップザックがあれば、RGB値順に告げてから、最後に「ありません」と報告します。
これを、自分の色を告げられているのに報告が済んでないナップザックがある間は、告げられた順に繰り返します。

この操作によって、収納の仕方が同じなのに全報告が2通り以上になったり、逆に2通り以上の収納の仕方なのに全報告が同一になったりせず、
[収納の仕方]と[全報告のあり方]が1対1対応になります。
それ故、[収納の仕方]を数えるのは、この[全報告のあり方]を数えるのと同じです。

現実にあり得る全報告ならば、すべての「ナップザック」が誰かに1回だけ告げられる筈です。
しかも、1つのナップザック(または持ち主)からの報告では、告げられる「ナップザック」は常にRGB値順が保たれています。
また、「ありません」と発音する数は、ナップザックの持ち主の分も含めて
(N+1)個ですが、最後に報告するナップザックは常に「ありません」だけしか報告しない筈ですから、これを除くとN個になります。

ですから、この問題は、N個の「色の違うナップザック」とN個の「ありません」との計2N個を、現実にあり得る全報告として1列にさせる並び方の問題になります。

〔収納の仕方〕〔全報告のあり方〕
1+2+3+4+512345*****
2<3>+1+4+51245**3***
3<4>+5<1>+2235**4*1**
4<5<1>>+2+3234***5*1*
5<1+2>+3+4345***12**
1<2<3>>+4<5>14*2*5*3**
2<3+4>+5<1>25*34*1***
3<4<5>>+1<2>13*2*4**5*
4<5<1+2+3>>4*5*123***
5<1<2<3<4>>>>5*1*2*3*4*

P<Q>は、ナップザックPにQ状態が収納されている状態です。
また、数字はナップザック名、*は「ありません」を表します。
数字の若い順がナップザックのRGB値順になるものとします。

ここで、見方を変えて考えてみます。
まず先に、N個の「ありません」を1列に並べて置きます。
あとから、N個のナップザックを列に入れていくものとします。
「ありません」が何処にあっても構わないものとして、RGB値順に「ナップザック」の入れる位置を選んでいきます。

選べる位置は、N個の「ありません」の直前の、
位置[1]〜位置[N] か、
最後の位置[N+1]がある筈です。
最初の「ナップザック」の入る位置は当然(N+1)通りあります。

2番目以降の「ナップザック」も、入ろうとする位置[k]
(kは1≦k≦N+1の整数)に、既に先客の「ナップザック」が幾つあろうが、
同一の位置[k]内では常に最後になるので、やはり(N+1)通りあります。

それ故、「ありません」が何処にあっても構わないものとすると、全報告のあり方は
(N+1)N 通りです。

また、各「ナップザック」が列に入るには、任意の1個の位置[k]
(kは1≦k≦N+1の整数)を選んでいるので、重複して報告されることは起き得ません。

そこで、「ありません」が現実にある得る位置を考えてみます。
何故なら、列の中の「ありません」の位置によっては、全報告が途中で途切れてしまい、全報告から漏れる「ナップザック」もでるため、現実にあり得る全報告とはならないからです。

すべての「ナップザック」が漏れなく告げられるためには、全報告が最後まで途切れない必要があります。

もし、全報告の先頭から数えて、「ありません」と発音した数が「ナップザック」を告げた数を上まわってしまえば、その時点で、自分の色は告げられているのに報告が済んでない「ナップザック」はなくなり、全報告は途切れてしまいます。

元々、「ナップザック」と「ありません」は同数ずつあったのですから、「ありません」が上まわった状態では、必ず全報告から漏れた「ナップザック」がある筈です。

それ故、N個の「ナップザック」とN個の「ありません」とが一緒になって1列になる並び方の内で、先頭から連続して任意の個数を選んでも、常に「ナップザック」の数が「ありません」の数より少なくならない、並び方をする必要があります。

これは、「ナップザック」の色を区別しなければ、N個ずつの「ナップザック」と「ありません」との『金太郎飴整列』に他なりません。

適当な表現がないため出題者が勝手に命名したものですが、[ 同数の2種類が一緒になって1列に並んでいる状態において、先頭から連続していかなる個数を選んでも、常に特定した種類の個数が別の種類の個数より少なくならない並び方 ]を、以下は「金太郎飴整列」と表現します。

この『金太郎飴整列』の仕方の数は、xy平面で考えると、
「ナップザック」を[(+1,0)の移動]に、
「ありません」を[(0,+1)の移動]にすることによって、
点(0,0)から点(N,N)までの、Y=X+1 上の点と接しない最短経路の数の問題に置き換えられます。

点(0,0)から点(N,N)までの、すべての最短経路の数は
2NN

一方、Y=X+1 上の点に接する最短経路の数は、
最後に Y=X+1 上の点に接してからの移動を、X方向とY方向とを入れ替えてやれば、
点(0,0)から点(N-1,N+1)までの最短経路の数と1対1対応になるので
2NN-1

それ故、求める金太郎飴整列の仕方の数は

2NN2NN-1 2NN
N+1

一般に、『金太郎飴整列』を、条件に含めた場合の数は、条件に含めない場合の数の

N+1
になります。

ところで、『金太郎飴整列』の条件がなければ、
(N+1)N なので

(N+1)N
N+1
=(N+1)N-1

いずれのナップザックも、重複して報告されることもなく、全報告からも漏れることもなければ、すべての「全報告のあり方」に対して、必要にして十分に条件を満たしています。

「収納の仕方」に置き直して表現すれば、次のようになります。

いずれのナップザックも、重複して収納されることもなく、ナップザックの持ち主に直接であれ間接であれ所持されるのであれば、すべての「収納の仕方」に対して、必要にして十分に条件を満たしています。

よって、N個のナップザックを収納させる仕方は
(N+1)N-1 通り、あります。

証明は終わりです。

[補足]

2nn
n+1
は、カタラン数(列)とも言われ有名です。

【余談】

パソコン上でN個のフォルダをこれらとは別の1個の特定のフォルダに収納する方法と考えると、この問題もにわかに現実性を帯びてきます。
創作当初は『フォルダの収納』問題でしたが、フォルダはウインドウズでの呼び方だし、ウインドウズもパソコンも知らない方にも良いように『5つのナップザック』問題に改題して出題しました。


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

【まえがき】

(1) 出題者のコメント(Nから...)について

御指摘のとおりです。
ただ、現在の私の興味は問題を解くこと自身から、可能な限り絵と単語程度を用い、言語・記号式を介さず視覚的に証明の内容を伝えられないかに移っています。
この際、一般化したものを絵にするのは難しいところがあり、一般化が容易に推定可能であれば、むしろ特定して描画した方が理解が早いのではと考えています。

(2) 金太郎飴整列問題

 「出題者模範解答」も冒頭の「5角錐の方法」もカタラン数の
1/(n+1)の意味が分かっていない私にとっては 単純構造で多めに数え、条件を満足しないもの
{報告の途切れ 、ループのもの }を差し引く点では同じです。
独立なN−1次元の事象として解釈をつけたいという欲求とは、大幅な程度の差はあれ、異なります。

 以下は数学的には「出題者模範解答」の焼き直しでありカンニングではありますが、自分の中で腑に落ちた解答です。

【洞窟探検の補題】

  【図1】

図1のように、N色の洞窟がループを作らずに端で繋がっていて、入り口が一つの2次元面上の洞窟の探検を考えます。
これは一つの迷路問題であり,ループが無いので右手の法則(右手を右側の壁から離さないで探検する)を用いれば、全ての洞窟を1往復して外に出ることが出来ます。

この時探検家は洞窟の構造の地図を後で作成するために、次のように記録します。

(1)入り口広間(黒)から始め、初めて通る洞窟の場合はその色(R,G,B..)を記録

(2)一度通過した洞窟は「済」の記号:Wを記録

(3)最後に外に出て探検「済」としてWを記録

ここでやめておけば良かったのですが探検家は確認のために何べんも探検し、記録を続けて記入して行きました。
記録は全て正しかったのですが、紙が汚れてどこが最初でどこが最後のWか分からなくなりました。
周期が2N+1であることは分かります。
図2参照。

  【図2】

ところが、実はこの記録からどこが入り口かは分かるのです。
下図参照

(1)まず、仮の1周期を考え、洞窟の深さが最も浅いところが深さ0になるように相対深さを計算します。
すなわち 仮の入り口から Wなら(−1)、色付なら(+1)して計算し最小値が0になるように全体を上下させます。
(上図) 注意)縦軸は通常と逆方向

(2)すると、深さ0のの中で最初のところが出口となります。

∵(2)で決めた出口から後の部分(小部)を前に持ってくると全て、深さが+1されるので,
結局、真の出口より前では深さが1以上であり、洞窟探検結果として矛盾はありません。

一方、真の出口に対応するところ以外を入り口とすると、
そこから−1した深さの広間
(上図の入口出口の関係
に必ず距離で2N+1より早く到達します。

WやRGBを全くでたらめに置いても、(1)(2)の手順は実行可能です。すなわち、

洞窟の構造と 円上にWが(N+1)個、
N色の色(R,G,B,Y,O....)が1個づつ並んだものとが1対1に対応する

のです。
下図参照

従って、洞窟探検の補題の場合の数はWを円上に配置し最初のR洞窟の位置を適当に決めた後、
のこりN−1個をその間間に置いて行く場合の数として計算されます。すなわち

 (N+2)×(N+3)×・・・・×(2N)
2NN−1
2N
N+1

【5つのナップザック】

 「出題者模範解答」と「洞窟探検の補題」とは基本的には同じ構造
(W:=ありません)であり異なるところは、

[ ナップザックの中 | 最も外側 ] のナップザックは順不同である点です。

これはWとWの間の洞窟の順序は区別しないのと同じであり、場合の数は直接以下と計算されます。

 (N+1)×(N+1)×・・・・<N−1個の積>
=(N+1)N-1

【金太郎飴整列問題】

 「洞窟探検の補題」において最後は必ずWであるので、これを除き、
W=−1  RGB=1として置き換えれば、「金太郎飴整列問題」と同じです。

すなわち、「金太郎。。」は洞窟の色の区別がない「洞窟探検の補題」と同じです。

 従って 

 「金太郎飴整列問題」
「洞窟探検の補題」
色数N!
2N
N+1

【感想】

 格言をひとつ
「ループを以ってループを制す」 でした。


【出題者のコメント】

「洞窟探険の捕題」による解法、楽しく拝見させて頂きました。
実にみごとでユニークな解法ですね。
いつもながら、借り物ではない独創的な解法には感心します。
私も出来る限り心掛けてはいるのですが、こういった解法が大好きです!
この解法がヒントになって、『金太郎飴整列』の追加問題を創作しました。


◆宮城県 アンパンマン さんからの解答。

各ナップザックを筋点(node)とし,持ち主も別の筋点として考えると
この問題は(n+1)の完全グラフの全域木(spanning tree)の数を求める問題に変わります。
(各全域木、持ち主の筋点を根にして、できた根付き木は「収納の仕方」と1対1対応になります。)

ここで、完全グラフの全域木の数を求める2つの方法を提案します。

方法1)

定理1)

AはグラフGの隣接行列、DはグラフGの次数行列とし、
B=D-Aとすると、Bの小行列式はグラフGの全域木の数である。

ここで、A={au,v},
au,v = 1 uv∈E(G);
au,v = 0 uv!∈E(G)

D={du,v},
du,v = deg(u) u=vのとき;
du,v = 0 そのほか。

Gが(n+1)完全グラフのとき、A=E-I, D=nI
ここで、Eは全ての成分は1である正方行列、I は単位行列です。

つまりB=(n+1)I-E,

Bの小行列式を計算すると
=(n+1)n-1=パッキングの仕方の数

方法2)

根(持ち主)から木の深さとRGBの順で自分がいくつの子を持っているか報告します。
その数をr0,r1,r2,...,rnとします。
(r0+r1+...rn=n)

ここで、見方を変えて考えてみます。

RGB順なのでr0のときは選び方が nr0 通りあります。
r1のときは n-r0r1 通りあります。...

つまり(r0,r1,...,rn)になる選び方は
n!
r0!r1!...rn
で、

合計
Σ
ri≧0
n!
r0!r1!...rn
=(1+1+...+1)n=(n+1)n通りです。

しかしこの中に全報告が途中で途切れるケースも含まれています。

途中で途切れないためには(r0,r1,...,rn)は条件1を満たさなければいけない。

条件1)
S(s0,s1,s2,...,sn)∈{0,1,2,...}n+1
s0≧1,
s0+s1≧2,
s0+s1+s2≧3
:
s0+s1+...+sn-1≧n
s0+s1+...+sn-1+sn=n

定理2)

R1(r0,r1,...,rn-1,rn)、
R2(r1,r2,r3,...,rn,r0),
R3(r2,r3,...,rn,r0,r1)
:
Rn(rn,r0,r1,...,rn-1)
の中から、条件1を満たすRiは2つ以上存在しません。

証明:WLOG,

R1とRiが条件1を満たすとすると
r0+r1+...+ri-1≧i

ri+ri+1+...+rn≧n-i+1 より
r0+r1+...+rn≧n+1になり、矛盾

証明終わり

定理3)

R0,R1,R2,...,Rnの中から
必ず条件1を満たすR=Riが存在する。

証明:

R0が条件1を満たす場合、R=R0を選びます。

R0が条件1を満たさない場合、
j-(r0+r1+r2+...+rj)が最大になるようなjが一つしかない場合、jより大きい値k、
(r0+r1+...+rk)≧k+1を満たす最小のkをiとすると、
R=Riは条件1)を満たします。

j-(r0+r1+r2+...+rj)が最大になるjが二つ以上存在する場合は、一番小さい値jを選びます。
同じように、jより大きい値k、
(r0+r1+...+rk)≧k+1を満たす最小のkをiとすると、
R=Riは条件1)を満たします。
(グラフで表すとすぐわかると思います)

証明終わり

以上定理2)と3)より、
R(r0,r1,r2,...,rn)のローテーション R0,R1,R2,...,Rnの中から
一つのRiしか全域木を表せない。

つまり(n+1)完全グラフの全域木の数は
(n+1)n
n+1
=(n+1)n-1です。


【出題者のコメント】

完璧です!
完全グラフでのスパニング・ツリーの数と同等だとしたのは流石です。
いろんな解法があるでしょうけど、最も数学的な解法に思えました。


 『5つのナップザック』へ

 数学の部屋へもどる