10

UTF-8 の優れた特徴の 1 つは、2 つの文字列 (< を使用) をバイト単位で比較すると、コードポイント単位で比較した場合と同じ結果が得られることです。サイズが最適な同様のエンコーディングがあるかどうか疑問に思っていました(たとえば、UTF-8は、コードポイントを表す最初のバイトでない場合、バイトに10xxxxxxのタグを付けてスペースを「無駄にします」)。

ここでの最適性の仮定は、 n < mの場合、負でない数値nは数値mよりも頻繁であるということです。

整数に対して機能する(バイト比較可能な)エンコーディングがあるかどうかを知ることに最も興味があります。n | < | メートル|。

4

3 に答える 3

3

ハフマン符号化の変種を考えたことはありますか? 伝統的に、最も頻度の低い 2 つのシンボルを再帰的にマージしますが、順序を維持するために、代わりに最小の合計を持つ2 つの隣接するシンボルをマージすることができます。

この問題はよく研究されているようです (貪欲なアルゴリズムは最適ではありません)。最適なアルゴリズムは Hu とTuckerによって提供されまし

順序を維持する辞書ベースの圧縮について説明しているこの論文も興味深いようです。

于 2012-06-18T08:25:12.623 に答える
1

標準エンコーディングはほとんどなく、答えはノーです。UTF-8 を超えたさらなる最適化は、「エンコード」ではなく「圧縮」と呼ばれるべきです。辞書編集的に比較可能な圧縮は別の部門です。

現実世界の (純粋に学術的ではない) 問題を解決している場合、私は最も標準的な UTF8 に固執します。utf8everywhere.org で、他の標準エンコーディングと比較した効率について学ぶことができます。

于 2012-05-21T06:20:13.850 に答える
0

その質問に完全に答えるには、資料内のコードポイントの頻度を知る必要があります。UTF-8は、通常の英語のテキストではマルチバイト文字が非常にまれであるため、英語のテキストに最適です。

基本アルゴリズムとしてUTF-8を使用して整数をエンコードするには、最初のn個の整数を1バイトのエンコードにマッピングし、次のmを2バイトのエンコードにマッピングする必要があります。それが最適なエンコーディングであるかどうかは、ディストリビューションによって異なります。最初のn個の数値がより高い数値と比較して非常に頻繁である場合、UTF-8が(ほぼ)最適になります。

于 2012-05-20T10:13:07.993 に答える