回答:
最適なアルゴリズムがわかっているとは思いません。実際、コードワードのセットがどれほど効果的であるかについては大きな推測があります。http://arxiv.org/abs/0709.2598を参照してください (私が接辞コードとして知っていた名前は、修正なしのコードです)。アルゴリズムが最適であることが証明された場合、おそらくそれはこの推測も解決(または否定)するでしょう。
FWIW、このペーパーの基本的な考え方に従って、問題のPTASがあるように思えます。(これはあなたの質問に正確に答えるものではありませんが、コメントに収めるには長すぎるため、ここではPTASを回答セクションで説明します。)
定数修正します。ましょう上の確率分布、すなわち、問題のインスタンスである。p [ n ]
コードの長さが以下のコードワードが別のコードワードの接頭辞または接尾辞でない場合、コード(コードワードのセット)は -fix-freeであると言います。 K
修正します。次のように、時間多項式で、最小コストフィックスフリーコードを計算します。最大での長さの文字列の(常に多くの)サブセットのそれぞれについて、割り当てることによって形成される修正なしのコード考えます最大確率、からのコードワード(小さいコードワードをより大きい確率にマッチング)、次に(長さの昇順で)列挙する 接頭辞または接尾辞がない、より大きい長さの文字列KのP N S K K C (S )| S | p S n − | S | K S n − | S | n − | S | S C (S )C 0