(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だった!解読成功だ』