2日くらいかけて、Rice符号の改良を考えていた。基本となるアイディアは、TAKと同じで、パラメータmの冪以外ののところも使うというもの。しかし、上手くいってない。
- パラメータを2の冪以外にすると、剰余部のbit数が剰余によって変わってくる。
- m=6では剰余として0,1,...,5が出てくるけど、それを3bit符号化してしまうのはあまりにも損。6,7の領域は無駄になる。
- 真のGolomb符号では、上手く場合分けして無駄がないようにしている。けど場合分けのコストを入れたくない。
- m=4/3,8/3,16/3,...とか考えてみたけど状況は一緒で、むしろデコード時に3除算が出るので望ましくない。
- m=6では剰余として0,1,...,5が出てくるけど、それを3bit符号化してしまうのはあまりにも損。6,7の領域は無駄になる。
- グダグダ理屈をこねる前に、Golomb符号を使って効果を見るのが良いかもしれない。Golomb符号で良くなければ採用には入らない。
- やっつけでやってみたが、微妙に悪化した。最適なパラメータ設定がうまく動いていない予感。
- 再帰的でもないGolombを使った場合でも微妙に悪化。
- パラメータの精密化は筋が悪いか?
いやまて、TAKは剰余部の取得が先で、なんかうまいとこ場合分けしてたような気がする。まずlog2(m) bitぶんだけとって、次の1bitが立っているかどうかで処理を分けていたような(違うかも)。