計算理論・ラムダ計算の問題
とし、 を空列 を含む 上の有限列全体、 を列 の長さとする。
部分関数 (「記述方式」と呼ぶ。 は計算可能でなくてもよい)に対し、 の複雑性を
で定める。ただし となる が存在しないときは とする。 を満たす を( に関して)圧縮不可能という。
長さが 以下の列(空列を含む)全体の集合を とする。記述方式 をあらゆる部分関数にわたって動かすとき、 に含まれる圧縮不可能な列の個数の最小値を求めよ。
この問題で使うもの
- 記述複雑性とカウンティング論法(説明と入口の問題)
この問題を解けるようになるまで(11 技能)
読み込み中…
右端(太枠)がこの問題で使う技能です。左へドラッグすると、さらに前の前提をさかのぼれます。技能を押すと、そこまでの道筋が光ります。
ヒント
行き詰まったら、上から順に 1 つずつ開いてください。
ヒント 1
圧縮可能な列 には、長さが より短い記述 が対応する。この対応が単射であることを使って、圧縮可能な列の個数を記述の候補の個数で抑える。
ヒント 2
長さ 以下の列は 個、圧縮可能な列の記述になりうる長さ 以下の列は 個ある。
ヒント 3
どの でも圧縮不可能な列は 個以上ある。あとは、長さ 以下の記述をすべて長さ の相異なる列に割り当てる を考えて、この個数がちょうど実現できるか確かめる。
答えと解説
答えを見る
どこでつまずきましたか?(選ぶと、戻る場所を案内します)
解説を読む
集合 の大きさ
長さ の列は 個あるので
圧縮可能な列の個数の上界(カウンティング論法)
が圧縮可能、すなわち であるとする。このとき かつ となる が存在するので、 である。 は関数なので、異なる に対する は互いに異なる( なら )。したがって、圧縮可能な の個数は、長さ 以下の列の個数
以下である。よってどの に対しても、 の中の圧縮不可能な列は少なくとも
個ある。
下界が達成されること
長さ 以下の列全体( 個)を、長さ の列全体( 個)のうちの 個へ単射で写す関数を とし、それ以外の では を未定義とする。このとき、像となった長さ の列 は長さ 以下の記述をもつので となり圧縮可能である。一方、長さ 以下の列はどれも の像に入らないので で圧縮不可能、像に入らなかった長さ の列 個も圧縮不可能である。よって圧縮不可能な列はちょうど
個となり、下界が達成される。
以上より、求める最小値は である。
別解
の元の個数は 。
が圧縮可能(圧縮不可能でない)とは 、すなわち かつ となる が存在すること。 なので、そのような の長さは 以下である。
(上界) は(部分)関数なので、各 は高々 1 つの にしか対応しない。長さ 以下の列 は 個だから、圧縮可能な は高々 個。したがって圧縮不可能な列は少なくとも 個。
(達成) 長さ () の各 に対し (長さ )と定め、それ以外では未定義とする。 は単射で、 なので像はすべて に含まれ、 より像の 個はすべて圧縮可能。よって圧縮不可能な列は 個(空列・長さ 1 の列の一部など、像に入らないもの)となり、下界と一致する。
検算: 圧縮不可能な列は、 の形でない列、すなわち末尾が の列と空列。長さ で末尾が のものは 個なので 。
最小値は 。