小さい整数ほど頻繁に現れるときの簡略符号化。 予測誤差の符号化に便利。
11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 |
31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 |
int n = 1; // 個数のカウンタ int a = 0; // 予測誤差の絶対値の和 while (予測誤差 e を読む) { for (k = 0; (n << k) < a; k++); m = (e >= 0) ? 2*e : -2*e-1; (m >> k) ビットの 0 を出力; 1 ビットの 1 を出力; m の最後の k ビットを出力; a += abs(e); if (++n >= 64) { a /= 2; n /= 2; } }
例(k=0)
誤差 | 出力 |
---|---|
0 | 1 |
-1 | 01 |
1 | 001 |
-2 | 0001 |
2 | 00001 |
-3 | 000001 |
3 | 0000001 |
例(k=1)
誤差 | 出力 |
---|---|
0 | 10 |
-1 | 11 |
1 | 010 |
-2 | 011 |
2 | 0010 |
-3 | 0011 |
3 | 00010 |
Solomon W. Golomb はペントミノの考案者でもある。
Optimal Golomb Rulers(最適ゴロム定規/最短ゴロム定規)
1 | 3 | 5 | 2 |
Last modified: 2004-12-17 22:58:21