見出し画像

小学5年生が理解する「誤り訂正符号」(デジタル社会を支えるテクノロジー:誤り訂正符号って何?その38)

私:「『畳込み符号』で誤り訂正する場合を説明するには、0と1だけで表した方が便利なので、前回は実際の生活の中での例としてレシートを使って話しをしたけど、今日は0と1のデータに対して考えてみよう。」

息子:「簡単な方で良いよ。」

私:「悪いね〜っ!で、本題。元々のデータを01101とする。『畳込み込み符号』の作り方は昨日と同じで、データを縦に並べたとしたら左側には3つの連続したデータの合計、つまり足し算を、右側には3つの連続したデータのうち真ん中を除いた2つの足し算を計算する。ここでは、そうして計算した合計だけを順番並べていく。つまり2つの計算結果だけを2ビットずつ並べて、元のデータは並べない。」

息子:「元のデータを並べないのは『ブロック符号』の時と違うね。それでも大丈夫なの?」

私:「良いところに気付いたね。そうなんだ。『畳込み込み符号』に代表される『木符号』では、元のデータを並べないで使う時が多かったんだ。でも、今は元のデータも並べる使い方が多くなった。」

息子:「昔は元のデータを並べなかった使い方が多かったのに、今は元のデータも並べる使い方が多くなったのは何で?」

私:「今日話しをしようとしていたことから外れるけど、重要なことだから先に話しておこうかな。昔は『畳込み込み符号』を単独で使うのが普通だったんだけど、1990年代後半になってから『畳込み込み符号』を2つ使って『誤り訂正符号』を作る『ターボ符号』が登場したからなんだ。」

息子:「『ターボ符号』ってクルマみたいだね。何か関係あるの?」

私:「誤り訂正をするやり方が、まるでクルマのターボ・エンジンの動きに似てるから、そういう名前になったらしい。と言っても『スーパーチャージャー符号』っていう『誤り訂正符号』は無いけどね。でも、タクムが生まれた頃には、もうスーパーチャージャーのクルマは無かったから知らないかもね。一時期、少しだけ流行ったんだけどね。」

息子:「ターボは知ってるけど、スーパーチャージャーってのは知らない。」

私:「タクムが生まれた頃にババが乗ってたスバルの軽自動車が確かそうだったな。それはさておいて、『ターボ符号』では2つの『畳込み符号』を組み合わせて使う時に同じ元のデータを使うので『符号化』の際に重複、つまり同じデータを送らないようにするために『組織符号化』して元のデータを並べるようにしてる。」

息子:「へー。でも『ターボ符号』の名前の由来になったターボとはどう関係するの?」

私:「それは、受け手の方で『符号語』を受け取って誤り訂正する時に、『符号化』した1つの『畳込み符号』に対して誤り訂正をする『復号』をした時に各ビットの正しさの確率を計算する。そして、その後もう1つの『畳込み符号』に対して『復号』をする際に先に『復号』した『畳込み符号』の『復号』で分かった各ビットの正しさの確率を使って『復号』をして、その時に各ビットの正しさの確率を計算する。そこで終わりしないで、2つ目の『畳込み符号』で計算した各ビットの正しさの確率を使って、また1つ目の『畳込み符号』の『復号』をして各ビットの正しさの確率の計算をして、さらに2つ目の『畳込み符号』の『復号』をして各ビットの正しさの確率の計算をする、といったことを何回か繰り返すんだ。この動作がターボ・エンジンのターボ(過給機)の動きに似てるから、『ターボ符号』と命名されたらしい。」

息子:「へー。でもさー、何回繰り返せば良いの?」

私:「繰り返せば繰り返す程、誤り訂正できるけど、あんまり繰り返し過ぎると時間がかかり過ぎるし、ある程度の繰り返し回数で結果にあまり差が出なくなるので、5回ぐらいの繰り返し回数にとどめることが多い。」


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