情報理論と符号の基礎
40文字の文字列 AAAAAAAAAAAABBBBCCCCCCCCCCCCCCCCCCCCDDDD(Aが12個、Bが4個、Cが20個、Dが4個)を、同じ文字の連続を「文字(1バイト)と個数(1バイト)」の組で表すランレングス符号化で圧縮する。元の文字列は1文字1バイトとし、圧縮率を「圧縮後の大きさ ÷ 圧縮前の大きさ」とするとき、圧縮率はどれか。
- A10%
- B20%
- C80%
答えと解説を見る
正解:B. 20%
同じ文字の連続(ラン)はA、B、C、Dの4つなので、圧縮後は 4 × 2 = 8 バイトになります。圧縮前は40バイトなので、圧縮率は 8 ÷ 40 = 0.2、つまり20%です。ランレングス符号化は、同じ値が長く続くデータほどよく縮みます。
- A. 10%は 4 ÷ 40 で、各ランの個数を表すバイトを数えていません。
- B. 正しい。8 ÷ 40 = 20% です。
- C. 80%は、圧縮で減った分の割合(1 − 0.2)で、この問題で定義した圧縮率ではありません。