10

はっきりさせておきますが、これは、任意のソース マテリアルを圧縮できるアルゴリズムという意味での完全な圧縮について話しているのではありません。それは不可能だと認識しています。私が取得しようとしているのは、シャノンエントロピーによって決定されるように、ビットのソース文字列を絶対最大圧縮状態にエンコードできるアルゴリズムです。

ハフマン符号化はある意味で最適であると聞いたことがあると思うので、この暗号化スキームはそれに基づいている可能性があると思いますが、ここに私の問題があります:

ビット文字列を考えてみましょう: a = "101010101010", b = "110100011010".

単純なシャノン エントロピーを使用すると、ビット文字列を 0 と 1 の単純な記号と見なした場合、これらのビット文字列はまったく同じエントロピーを持つはずですが、このアプローチには欠陥があります。単純に 10 の繰り返しのパターンです。これを念頭に置いて、複合シンボル 00、10、01、および 11 のシャノン エントロピーを計算することで、ソースの実際のエントロピーをより正確に把握できます。

これは単なる私の理解であり、私は完全にベースから外れている可能性がありますが、私が理解していることから、エルゴード ソースが真にランダムであるためには、長さ n のエルゴード ソースに対してです。長さ n のシンボル グループすべての統計的確率は、同じ確率である必要があります。

タイトルの質問よりも具体的だと思いますが、主な質問が 3 つあります。

シンボルとして単一ビットを使用するハフマン エンコーディングは、2 ビット シンボルのレベルで文字列を分析したときに発生する明らかなパターンがあっても、最適にビット文字列を圧縮しますか? そうでない場合、最適な圧縮率が見つかるまで、ハフマン コーディングのさまざまな「レベル」(ここで用語を乱用している場合は申し訳ありません) を循環させることで、ソースを最適に圧縮できますか? ハフマンコーディングのさまざまな「ラウンド」を経ることで、場合によっては圧縮率がさらに向上する可能性がありますか? (最初に 5 ビット長のシンボルでハフマン コーディングを行い、次に 4 ビット長のシンボルでハフマン コーディングを行いますか? huff_4bits(huff_5bits(bitstring)))

4

2 に答える 2

10

マークが述べたように、コルモゴロフの複雑さのため、一般的な答えは「いいえ」です。それについて少し詳しく説明します。

圧縮は基本的に 2 つのステップです: 1) モデル 2) エントロピー

モデルの役割は、次に来るバイトまたはフィールドを「推測」することです。モデルはどんな形にもなり得、その有効性に制限はありません。些細な例は、乱数ジェネレーター関数です。外部の観点からは、ノイズのように見えるため、圧縮できません。しかし、生成関数を知っていれば、無限に長いシーケンスをジェネレータ関数という小さなコード セットに圧縮できます。

それが「制限がない」理由であり、コルモゴロフの複雑さは次のように述べています。データを「モデル化」するためのより良い方法がないことを保証することはできません。

2番目の部分は計算可能です.エントロピーは「シャノン限界」を見つける場所です. アルファベットの一部である一連のシンボル (通常は、モデルからの出力シンボル) が与えられると、最適なコストを計算し、実証済みの最終的な圧縮限界 (シャノン限界) に到達する方法を見つけることができます。

各シンボルは整数ビット数を使用してエンコードする必要があるという制限を受け入れる場合、シャノン制限に関してハフマンが最適です。これは近似ですが、不完全な近似です。より良い圧縮は、算術コーダーが提供する小数ビットを使用するか、より最近の ANS ベースの有限状態エントロピー コーダーを使用することで実現できます。どちらもシャノン限界にかなり近づきます。

シャノン制限は、一連のシンボルを「個別に」扱う場合にのみ適用されます。「それらを組み合わせる」、またはシンボル間の相関関係を見つけようとするとすぐに、「モデリング」になります。そして、これは計算不可能なコルモゴロフ複雑度の領域です。

于 2014-02-05T09:37:13.433 に答える
6

いいえ。完璧なコンプレッサーがどれだけうまく機能するかを判断するアルゴリズムさえ存在しないことは証明できます。コルモゴロフの複雑さを参照してください。

ハフマン符号化 (または算術符号化) だけでは、最適な圧縮には近づきません。データの高次冗長性を利用するには、他の手法を使用する必要があります。

于 2014-01-20T03:38:16.547 に答える