計算理論・ラムダ計算の問題
とし、 を空列 を含む 上の有限列全体、 を列 の長さ、 を長さ 以下の列全体とする。集合 が接頭語なしであるとは、 の相異なる 2 元の一方が他方の接頭語になることがないことをいう。
部分計算可能関数 で、定義域 が接頭語なしであるものを接頭語なし復号器とよぶ。接頭語なし復号器 と に対し
と定める(そのような がなければ )。
を正の整数とする。接頭語なし復号器 で、すべての に対して となるもの全体を考えるとき、
の最小値を の式で求めよ。
この問題で使うもの
- 記述複雑性とカウンティング論法(説明と入口の問題)
この問題を解けるようになるまで(11 技能)
読み込み中…
右端(太枠)がこの問題で使う技能です。左へドラッグすると、さらに前の前提をさかのぼれます。技能を押すと、そこまでの道筋が光ります。
ヒント
行き詰まったら、上から順に 1 つずつ開いてください。
ヒント 1
最短の記述 たちは互いに異なり、接頭語なし集合をなします。クラフトの不等式 と、その逆(長さがこれを満たせば接頭語なし集合が作れる)を使って、整数の長さの最適化問題に言い換えましょう。
ヒント 2
長さが 2 以上違う 2 つの記述があれば、長いほうを 1 縮め短いほうを 1 伸ばしても長さの和は変わらず、クラフトの不等式も保たれます。したがって長さが と の 2 種類だけの場合を調べれば十分です。
ヒント 3
記述の個数は で です。 のとき、長さ が 個・長さ が 個とすると , となります。
答えと解説
答えを見る
どこでつまずきましたか?(選ぶと、戻る場所を案内します)
解説を読む
とおく。 より で、 である。
長さの組への言い換え. 各 について となる を 1 つ選ぶ。 は関数なので、 なら である。 は接頭語なし集合 の部分集合なので接頭語なしであり、クラフトの不等式より
が成り立つ。逆に、非負整数の組 がこの不等式を満たせば、長さ の列からなる接頭語なし集合 がとれ(クラフトの不等式の逆)、有限表 (それ以外では未定義)は接頭語なし復号器で、 となる。よって求める最小値は
である( 個の非負整数についての最小化)。
長さの差を 1 以下にしてよい. ある で のとき、 を 減らし を 増やすと、和 は変わらず、クラフト和の変化は
なので不等式は保たれる。この操作を繰り返すと( が真に減るので有限回で止まる)、最小値を与える組で、すべての長さが か であるもの(長さ が 個、 が 個、)があるとしてよい。クラフトの条件は 、すなわち である。
の決定. ( をみたす整数)とする。
- なら となり、等号から となって に反する。
- なら和は 。
- なら、和は で、 と から 、よって 。 はクラフト和がちょうど となり実現できるので、このときの最小は 。
より なので、全体の最小値は である。
計算. を代入して
(このとき長さ の記述が 個、長さ の記述が 個。たとえば なら で長さ 、和 。)
よって最小値は である。
別解
。 より各 に符号語 ()が選べ、 は関数なので異なる に対する は相異なる。 は接頭語なしだから、 は接頭語なしな 個の語の集合で、 である。
逆に、接頭語なしな有限集合 () と全単射 を任意に与えれば、有限の表なので は計算可能で、定義域 は接頭語なしであり、 かつ接頭語なしで他の は に写らないので 。よって最小値は「 葉の二分木の外部路長(葉の深さの総和)の最小値」に等しい。
葉の二分木の外部路長の最小は、深さが と の葉だけからなる完全な木(Huffman 符号、重み均等)で達成される。 なので 。深さ の葉の数を 、深さ の葉の数を とすると、、 すなわち 。よって 、。
。
検算: のとき 、。符号語長は で合計 5。式は で一致。 のとき 、長さ で合計 20、式は で一致。