離散数学・組合せ論の問題
ある窓口で 1 枚 500 円の券を売っている。窓口に並んだ 10 人の客のうち、5 人は 500 円硬貨 1 枚で支払い、残りの 5 人は 1000 円札 1 枚で支払う。1000 円札で支払う客には、その場で 500 円硬貨 1 枚のおつりを渡す。窓口のレジには、はじめ硬貨が 1 枚も入っていない。客を区別せず、10 人の支払い方の並び(500 円硬貨を A、1000 円札を B として、A を 5 個、B を 5 個並べた長さ 10 の列)だけを考えるとき、どの客にも必ずおつりを渡せるような並びは何通りあるか求めよ。
この問題で使うもの
- カタラン数(説明と入口の問題)
この問題を解けるようになるまで(6 技能)
読み込み中…
右端(太枠)がこの問題で使う技能です。左へドラッグすると、さらに前の前提をさかのぼれます。技能を押すと、そこまでの道筋が光ります。
ヒント
行き詰まったら、上から順に 1 つずつ開いてください。
ヒント 1
レジの硬貨の枚数の変化を考えて条件を「先頭から見て A の個数が B の個数を下回らない列」と言いかえ、カタラン数(鏡像原理)で数えましょう。
ヒント 2
A 5 個・B 5 個の列全体 から、初めて B が A より 1 個多くなった位置の後ろで A と B を入れかえる対応を使って、条件を満たさない列を引きます。
ヒント 3
条件を満たさない列は、A 4 個・B 6 個の列と 1 対 1 に対応するので 通りです。あとは全体 から引きます。
答えと解説
答えを見る
どこでつまずきましたか?(選ぶと、戻る場所を案内します)
解説を読む
条件の言いかえ
レジの中の 500 円硬貨の枚数は、A の客が来ると 1 枚増え、B の客が来ると 1 枚減る。はじめは 0 枚なので、B の客におつりを渡せるのは、その客の直前までに来た A の人数が B の人数より多いときである。よって、条件は
「列の先頭から何文字目まで見ても、A の個数 B の個数」
と言いかえられる。これは長さ の正しい括弧列(A を「(」、B を「)」とみる)と同じ条件であり、その個数はカタラン数 である。鏡像原理で求める。
全体の個数
A を 5 個、B を 5 個並べる列は、10 か所から A の位置を 5 か所選べばよいので
条件を満たさない列の個数(鏡像原理)
条件を満たさない列では、先頭から見ていって初めて「B の個数 A の個数 」となる位置がある。その位置より後ろの部分で A と B をすべて入れかえる。
その位置までに A が 個、B が 個あるとすると、後ろの部分には A が 個、B が 個ある。入れかえると後ろは A が 個、B が 個になるので、列全体では A が 個、B が 個になる。
逆に、A が 4 個、B が 6 個の列では、必ずどこかで初めて「B の個数 A の個数 」となる位置があり、その後ろを入れかえるともとの列に戻る。したがって、この対応は 1 対 1 であり、条件を満たさない列の個数は
答え
これは と一致する。よって 42 通り である。
別解
A を +1、B を −1 とみなすと、おつりを必ず渡せる条件は、どの接頭部分でも A の個数が B の個数以上であること、つまり部分和が常に 0 以上であることと同値。これは長さ 10 のディック路(バロット列)で、その総数はカタラン数 である。
検算(反射原理):全列 通り。途中で部分和が −1 に達する悪い列は、最初に −1 に達した時点以降を反転すると、A が 4 個、B が 6 個の列と 1 対 1 に対応する。その個数は 。よって 。
なお、B の客が来る直前のレジの硬貨は A の累計個数 − それまでの B の個数であり、B の客に渡すには 1 枚以上必要なので、B を含めた接頭部分で A の個数 ≥ B の個数が必要となる。これは上の条件と一致する。