(22)できるだけ少ない知識で解きたい人用「出現頻度の異なるA,B,C,D,Eの5文字で構成される通信データを,ハフマン符号化を使って圧縮するために,符号表を作成した。aに入る符号として,適切なものはどれか。」

#基本情報技術者試験 #平成30年 #秋期 #問4 #ハフマン符号化 #暗号

出現頻度の異なるA,B,C,D,Eの5文字で構成される通信データを,ハフマン符号化を使って圧縮するために,符号表を作成した。aに入る符号として,適切なものはどれか。

ア 001   イ 010   ウ 101   エ 110

ハフマン符号化という何かのお名前は、とりあえずスルーする。
この表は何かな?と眺めてみると、
「Aの出現頻度は全体の26%で、00という符号であらわすよ」ということを、同じくB~Eまであらわしている。

00とか01とかを、AやBの代わりに、暗号みたいに使う。

Aはよく登場するから、一番簡単な00であらわすことにている。
BやCも頻度は高めなので、2ケタで、00と見分けがつくやつにしている。

ここで、解答群を見ると、すべて3ケタなので、Dは3ケタであらわすつもりらしい。Eも見てのとおり。
じゃあ、ア~エが使えそうかどうかチェックしていく。他の符号と見分けがつかないとダメ。
 ア 001 ---> 00で始まってるから、Aと見分けがつかないのでダメ
 イ 010 ---> 01で始まってるから、Bと見分けがつかないのでダメ
 ウ 101 ---> 10で始まってるから、Cと見分けがつかないのでダメ
で、エの110が残った。

少しモヤモヤするので、暗号として使ってみる。
たとえば、DACという文字列を、この暗号にすると、1100010になるのだ!その1100010を解読するには・・・

「1ではじまったぞ」
『1はじまりは、10のCか、110のDか、111のEだな?』
「次の数字を見てみよう・・・また1だ!」
『ってことは、110のDか、111のEだな?』
「さらに次の数字を見てみよう・・・次は0だ!」
『110ということだから、最初の文字はDで決まりだ』

『110の次はなんだ?』
「0だ。さらにその次も0だ」
『じゃあ2番目の文字はAだな』

『110はDだった、次の00はAだ、次の数字は?』
「1だ。1で始まるのはCかDだから、次の数字も見てみよう」
「0だ。ということは、10だからCだな」
『よし、この暗号はDACだった!解読成功だ』


 

この記事が気に入ったらサポートをしてみませんか?