計算理論・ラムダ計算の問題
とし、 を空列を含む 上の有限列全体、 を列 の長さ、 を長さ の列全体とする。部分計算可能関数 に対して、 の に関する記述複雑性を
で定める(そのような がなければ とする)。
部分計算可能関数 を一つ定めるごとに、集合
の要素の個数 が決まる。 がすべての部分計算可能関数を動くときの の最小値を求めよ。
この問題で使うもの
- 記述複雑性とカウンティング論法(説明と入口の問題)
- 等差・等比数列の和と Σ(説明と入口の問題)
この問題を解けるようになるまで(11 技能)
読み込み中…
右端(太枠)がこの問題で使う技能です。左へドラッグすると、さらに前の前提をさかのぼれます。技能を押すと、そこまでの道筋が光ります。
ヒント
行き詰まったら、上から順に 1 つずつ開いてください。
ヒント 1
に属さない長さ の列、すなわち となる列の個数の上限を考えましょう。
ヒント 2
となる には、それを出力する長さ 以下のプログラム が少なくとも 1 つあります。 は関数なので、異なる には異なる が対応します。
ヒント 3
長さ 以下の列は 個です。この上限を実際に達成する が作れるかを確かめましょう。
答えと解説
答えを見る
どこでつまずきましたか?(選ぶと、戻る場所を案内します)
解説を読む
下からの評価(カウンティング論法). が に属さないことは 、すなわち長さ 以下のある で となることと同値である。長さ 以下の列の個数は
であり、 は関数なので各 は高々 つの しか記述しない。したがって となる は高々 個であり、
等号が成り立つ の存在. 長さ 以下の 個の列 と、長さ の相異なる 個の列 を選び、()、それ以外の入力では未定義とする。これは有限の表で与えられるので(部分)計算可能関数である。このとき がちょうど 個の で成り立ち、 となる。
よって最小値は である。
別解
。 となる は、長さ 6 以下の列 の像 として書ける である。長さ 6 以下の列は 個(空列を含む)なので、 となる は高々 127 個。よって任意の について 。
等号の達成: 長さ 6 以下の 127 個の列に、互いに異なる 127 個の長さ 10 の列を割り当てる有限の表をつくり、 をその表を引く関数(表にない入力では未定義)とする。有限の表で与えられる関数は計算可能なので は部分計算可能関数である。このとき長さ 10 の列のうちちょうど 127 個が となり、。
最小値は 。