正整数のユニバーサル符号化において、任意の正整数nを符号化した場合のnに対する符号語長の上界のオーダーを抑えるために、理論的な符号語長関数にShannon符号化を適用した机上の符号は従来から考えられていた。しかし、Shannon符号化を効率よく実現する一般的な方法は未だ知られておらず、もし正攻法でShannon符号化を用いると、符号化したい正整数nに対する計算量がn×log nのオーダーを下回ることはない。これは極度に大きい計算量である。実用的には計算量をnの桁数と同じのlog nのオーダーに抑える必要がある。 本研究では、符号化したい正整数nに対してそのままShannon符号化を用いるのではなく、nとそれから再帰的に定義される長さ情報とを一定個数だけ通常の2進数表現で前置しながら表すことにして、最後の長さ情報の符号化にShannon符号化を用い、Shannon符号化の符号語を先頭に配置することを考案した。Shannon符号化を適用する値は符号化したい正整数nに対数を一定回数適用したごく小さな値になるため、通常の2進数表現で表す個数を2個以上にすれば、正攻法でShannon符号化を行ったにも関わらず全体に対するShannon符号化の部分の計算量の影響は無視できるオーダーになる。全体の符号化の計算量はオーダーlog nである。この符号の符号語長は、対数スター関数と定数との和も可能であるが、更にそれよりも一ランク小さいオーダーを実現していることを確認した。この符号は漸近的に最適という性質を持ち、また、充分大きなnでは計算量がオーダーlog nの既存のどんな符号よりも符号語長が短くなる。
|