287 : 4分木符号化(シンプルな圧縮アルゴリズム)
最終更新
役に立ちましたか?
最終更新
役に立ちましたか?
4分木による符号化を用いて、の白黒画像を(0と1の)ビット列で表すことができる。このビット列は左から右へ以下のようにして解読する:
最初のビットは全体の領域を表す
"0" は分割を意味する: 対象のの領域を4つのの領域に分割し、続くビット列は左上、右上、左下、右下の順で分割された領域を表す
"10" は対象の領域が黒いピクセルしか含んでいないことを表す
"11" は対象の領域が白いピクセルしか含んでいないことを表す
下の 4×4 の画像について考える(色のついた印はどこで分割が起こるかを表す):
この画像を表すビット列は複数存在する。例えば: "0(R)0(B)101010100(G)10111110110(o)10101010" は長さ 30 であり、または "0(R)100(G)101111101110" は長さ 16 であり、これはこの画像を表す最短のビット列である。
(* 文字に色を付ける代わりに(R)(B)(G)(o)を付記した、それぞれ赤緑青橙の意)
正の整数 N に対し、を次の条件を満たすの画像と定義する:
左下のピクセルを座標 x=0, y=0 とし、
なら(x,y)のピクセルは黒
さもなくば(x,y)のピクセルは白
を表す最短のビット列の長さを求めよ。