最適な接辞コードを作成するにはどうすればよいですか?


8

接辞コードを同時に接頭辞と接尾コードであるコードです。つまり、コードワードは、他のコードワードのプレフィックスでもサフィックスでもありません。接辞コードは、両方向(順方向と逆方向)で瞬時にデコードできます。

出力シンボルのセットが与えられた場合、与えられた入力シンボル分布を最適に圧縮するものを作成したいと思います。

接頭辞コードを作成するハフマンアルゴリズムが最も近くなりますが、その貪欲な戦略のため、この目的の変更には適していないと思われます。

どのようにして最適な接辞コードを見つけることができますか?

回答:


4

最適なアルゴリズムがわかっているとは思いません。実際、コードワードのセットがどれほど効果的であるかについては大きな推測があります。http//arxiv.org/abs/0709.2598を参照してください (私が接辞コードとして知っていた名前は、修正なしのコードです)。アルゴリズムが最適であることが証明された場合、おそらくそれはこの推測も解決(または否定)するでしょう。


これらの回答は、ハフマンアルゴリズムが妥当な条件下で最適なコードを生成することを示唆しているようです。
Anko

これらの回答があなたの問題にどのように関連しているかはわかりません。アルゴリズムが1つだけの場合は、huffmanを使用して、いくつかの悪い単語を拡張できます。
domotorp 2013年

私は、いくつかのコードが最適であると証明できるということを指摘しているだけです。ハフマンコードのコードワードを拡張すると、すべての拡張でブロックコーディングに近づくため、最適ではなくなる可能性があります。これは出発点かもしれません!
Anko

1
しかし、ハフマンは、クラフト不等式(en.wikipedia.org/wiki/Kraft%27s_inequality)を知っている接頭辞なしのものです。最適性の証明がある場合、クラフトのような不等式が続きます。しかし、修正なしのコードの場合は、不平等は推測であり、証拠はありません。
domotorp 2013年

8ページの下に、英語のいくつかの修正なしのコードが記載されており、それらを構築するために使用されるアルゴリズムのいずれも最適であることが証明されていないことが言及されています。したがって、おそらく効率的なアルゴリズムはわかっていません。
Yuval Filmus 2013年

2

FWIW、このペーパーの基本的な考え方に従って、問題のPTASがあるように思えます。(これはあなたの質問に正確に答えるものではありませんが、コメントに収めるには長すぎるため、ここではPTASを回答セクションで説明します。)

定数修正します。ましょう上の確率分布、すなわち、問題のインスタンスである。p [ n ]ϵ>0p[n]

コードの長さが以下のコードワードが別のコードワードの接頭辞または接尾辞でない場合、コード(コードワードのセット)は -fix-freeであると言います。 KKK

修正します。次のように、時間多項式で、最小コストフィックスフリーコードを計算します。最大での長さの文字列の(常に多くの)サブセットのそれぞれについて、割り当てることによって形成される修正なしのコード考えます最大確率、からのコードワード(小さいコードワードをより大きい確率にマッチング)、次に(長さの昇順で)列挙する 接頭辞または接尾辞がない、より大きい長さの文字列KのP N S K K C S | S | p S n | S | K S n | S | n | S | S C S C 0K=1/ϵ2KpnSKKC(S)|S|pSn|S|KSn|S|n|S|SC(S)C0SC0Kp

C0pK

C0(1+O(ϵ))

C0K=1/ϵ(1+ϵ)KKC0KKK1+O(ϵ)C1

C1(1+O(ϵ))C0C0C1(1+O(ϵ))

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.