
小学5年生が理解する「誤り訂正符号」(デジタル社会を支えるテクノロジー:誤り訂正符号って何?その12)
『ハミング符号』もレシートから考えられる!?
昨日はレシートの一部が黒くなって値段が分からなくなった商品の値段を合計金額から、他の値段が分かる商品の値段を引いて分かる、原理と『パリティ検査符号』と『全パリティ検査ビット』と関係がある事を紹介した。今日はどんな話になるかな?
息子:「ただいま。」
私:「元気が無いなー、どうした?」
息子:「体育で縄跳びやったんだけど、2重跳びがうまく跳べなくてさー。」
私:「えっ!5年生になって2重跳びができないの?そういや、タクムには教えて無かったな。次の休みの日に教えてやろうか?後ろ2重あや跳びもできるぞ!マサに!!今流行りのNiziu!!」
息子:「無理にいいでぇーす!!自分が縄跳びうまいの自慢したいだけでしょ!それにパパはNiziuじゃなくて歳がGoziu(50)でしょ!!」
私:「うっ!うまい…。」
息子:「でさ、昨日の話しの続きは?」
私:「おっ!?タクムじゃないみたい!気持ち悪い。」
息子:「失礼ねっ!何かレシートの例え話しを聞いたら面白くなってきてさ。」
私:「そうか。それは良かった。興味が持てるきっかけになって良かったよ。何でも学習するには興味が持てるきっかけが有ると良いよね。前置きが長くなってしまった…。では、今日もレシートの例え話しを使って、『ハミング符号』を見直してみよう。』
息子:「『ハミング符号』もレシートの例え話しでできるの?」
私:「そうだね。ちょっと変則だけどね。まずは『ハミング符号』を思い出してみよう。『ハミング符号』を書いた紙は残ってるかな?」
息子:「あっ!あった。『ハミング符号』を書いた紙。元々の4ビットのデータの数を◯、△、□、そして♢とおいた時に、4ビットのうちの3ビットの組合せを3つ考えてその3ビットの組合せで足して2で割った余りを元々の4ビットの後ろに付け足す。つまり、◯+△+□、△+□+♢、◯+△+♢の結果を2で割った余りを◯、△、□、♢の後ろに付け足すんだったね。こんな風に。
◯△□♢(◯+△+□)(△+□+♢)(◯+△+♢)
。」
私:「この後ろに付け足した3ビットの式をよく見てごらん。昨日のレシートの例え話しを思い出さないかな?」
息子:「あっ!!3つの合計金額だ!!」
私:「そうっ!!『ハミング符号』で付け足すビットもレシートで例えると合計金額なんだ。但し、全部の合計金額でなくて4つ買った商品のうちの3つの商品だけの合計金額だけどね。自分でレシートの例を考えてみて。」
息子:「うん。昨日のレシートだと商品が3つだから1つ増やして…
お弁当 650円
肉まん 120円
お茶 150円
ガム 100円
合計 1020円
」
私:「『ハミング符号』に当てはめてみるとどうなるかな?」
息子:「うん。最初の3つは、お弁当 650円、肉まん 120円、お茶 150円だから、
650+120+150=920
後ろ3つは肉まん 120円、お茶 150円、ガム 100円だから、
120+150+100=370
3番目を抜かした3つはお弁当 650円、肉まん 120、円、ガム 100円だから
650+120+100=870
だね。」
私:「よかろう!並べると
650,120,150,100,920,370,870
となるね。ここで、3つ目の150が160に誤った場合を考えてみよう。
650,120,160,100,920,370,870
となる。この時に、元々の4つの商品の値段の位置の数字で、『ハミング符号』と同じ3つの数の付け足し方の式で数値を求めるとどうなるかな?」
息子:「
650+120+160=930、
120+160+100=380、
650+120+100=870
だね。最初の2つは付け足した最初の2つと違う合計金額になって、最後の1つだけ、付け足した最後の1つと同じ合計金額になった。ってことは1番目と2番目と4番目の商品の値段は誤り無しってことだよね!最初の2つはどちらも3番目の商品の値段が入ってるから3番目の商品の値段が誤ってる!!それで、3番目の商品の値段は…えーっと…」
私:「頑張れ!!そこまで分かればもうちょっとだ!」
息子:「1番目と2番目の商品の値段は正しいことが最後に付け足した合計金額との比較で分かったから…受け取った数字の3番目の商品の値段を受け取った数字の5番目、つまり付け足した数字の最初の合計金額920円から引いて
920一650一120=150
だ!!そして、もうひとつ3番目の商品の値段が入ってる合計金額の6番目の数字、つまり付け足した数字の2番目の合計金額370円から正しいと分かってる2番目と4番目の商品の値段を引いて
370一120一100=150
だ!!」
私:「おおーっ!正解!!良く自分で考えたね。」
息子:「だいぶ分かってきた気がする。」
私:「自分で考えてできるとスッキリするよね。このレシートの例え話しで『ハミング符号』の考え方もも理解できたことになる。ちなみに『ハミング符号』のように1ビットの誤りを訂正できる『誤り訂正符号』を『単一誤り訂正符号』と言う。そして…」
息子:「そして?…何?」
私:「2ビットまでの誤りを訂正できる『誤り訂正符号』を…」
息子:「何?何っ!?」
私:「(Niziuの縄跳びダンスをしながら)『二重(Niziu)誤り訂正符号』と言う!!」
息子:「何だよっそれ!!それがやりたかっだけじゃんかっ!!Goziu(50)のオッサンのくせにっ!!」
私:「それ言うなっ!!俺も気にしてるんだからっ!!…ちなみに『五重誤り訂正符号』ももちろん作れるぞ。」