図を画素で表す手法を考える。図1の場合,3×3個の画素を左上から1行ずつ右方向へ1画素ずつ読み取り,黒なら B,白なら W と書くと“BWBBBBBWB”(9文字)となる。次に,B や W が n 文字連続する場合を“Bn”,“Wn”と表す(n は2以上の整数)と,図1は“BWB5WB”(6文字)と表現でき,このときの圧縮率を 6/9=66.7% であると定義する。図2の5×5の図形について同じ手法で表現すると,圧縮率は何%か。
平成22年度 秋期 ITパスポート試験 問85
这道题的解析和你的作答记录。
問 85
错误ア
48.0% 是用 100−52 求出的值,也就是通过压缩「减少掉的部分」所占的比例。本题在图 1 的例子中给出 6÷9 = 66.7%,即把压缩率定义为压缩后的字符数÷压缩前的字符数。它不是减少率(削减掉的比例),所以 13 个字符÷25 个字符 = 52.0% 本身就是答案。弄错定义、回答剩下的那部分,就会选到 ア。
- イ
正解 正确答案是 イ(52.0%)。首先按题目所述,从左上角开始逐行向右读取图 2 的 25 个像素。第 1 行 5 个全是黑色,为 BBBBB;第 2 行只有最左端是黑色,为 BWWWW;第 3 行从左数 4 个是黑色,为 BBBBW;第 4 行和第 5 行都是 BWWWW。连接起来就是「BBBBBBWWWWBBBBWBWWWWBWWWW」这 25 个字符。这里最重要的一点是,连续的计数不会在行的分界处中断。第 1 行的 5 个黑色和第 2 行开头的 1 个黑色相连,所以开头是连续 6 个黑色。按每一段连续(游程)划分,就是 B 6 个、W 4 个、B 4 个、W 1 个、B 1 个、W 4 个、B 1 个、W 4 个,共 8 段。只有连续 2 个字符以上的段才会被替换成「B6」「W4」这样的 2 字符表示,只有 1 个字符的段不做替换,仍按 1 个字符计数(因为 n 被定义为 2 以上的整数)。因此压缩后是 2+2+2+1+1+2+1+2 = 13 个字符。压缩率按题目的定义是压缩后÷压缩前,所以 13÷25 = 0.52,即 52.0%。
错误ウ
76.0% 相当于 19÷25,是读取顺序弄错时得出的值。例如从左上角开始逐列向下纵向读取,就会得到 BBBBB / BWBWW / BWBWW / BWBWW / BWWWW,黑白各 1 个交替出现的地方增多,无法替换的单字符游程频繁出现,压缩后就变成了 19 个字符。题目指定的扫描顺序是逐行向右,按这个顺序长的游程会聚在一起,可以缩短到 13 个字符。
错误エ
88.0% 相当于 22÷25,是只对一部分游程做了压缩时得到的数字。例如只把显眼的第 1 行的 5 个黑色替换成 B5、其余仍按原样计数,就是 25−5+2 = 22 个字符,即 88%。实际上连续 2 个字符以上的游程全都是替换对象,而图 2 中连续 4 个以上的游程有 5 处(黑 6 个、黑 4 个,以及 3 处白 4 个),所以可以缩短到 13 个字符。为了不漏掉替换,必须把游程数到最后。
- 游程编码法(行程长度编码)的基础 —— 把相同值连续出现的部分替换为「符号 + 连续个数」的组合的无损压缩。必须遵守题目指定的扫描顺序(本题是从左上角逐行向右),并且在行的分界处如果同色仍在延续,就要作为一个游程连起来数。漏看这个跨行相连,字符数就会数错。
- 压缩率的定义要遵从题目给出的那个 —— 本题是压缩后的字符数÷压缩前的字符数,值越小表示压缩得越好(图 1 的 6÷9 = 66.7% 就是范例)。另外,由于规定了 n 为 2 以上,只有 1 个字符的游程不做替换。因为一旦替换反而会增加到 2 个字符。