107.情報送信の効率化
第 29 回で、情報量のエントロピーについて備忘した。情報量として、Yes or No、または 1 と 0 を考えると、スイッチの on と off で表せる。「情報量」はどれだけ「情報量のエントロピー」を減らせるかで数えればよい。情報量のエントロピーは底が 2 の対数で表した。
log 2 X
Yes or No だと状態の数は 2 なので、X=2 として、情報量は 1。この情報量を単位を作って 1 bit (ビット)と数えよう。0、1、2、3 と状態の数が 4 つあれば、X=4 = 22 なので、log 2 4 = 2 だから、2 bit だ。
数字は0から 9 まで 10 個あるので、これらを 0 と 1 だけで表そうとすると
log 2 10 = 3.32・・・
だから、3 bit ではたりず、4 bit 必要だ。3 bit だと 8つの状態しか表せない。log 2 8 = 3 だから。
ローマ字は 24 個、大文字小文字で 48 個。あと、「?」とか「!」とかの記号もいるので 100 個くらいを区別できれば良いとすると
log 2 100 = 6.63・・・
なので、7 bit で足りそうな気もするが、余裕をもって8 bit 使う。要するに、8 このスイッチ、あるいは 8 桁の 0、1 の並びで英文の一文字は表せるというわけだ。
8 bit を1 byte (バイト)と呼ぼう。
8 bit = 1 byte
漢字は 10000 個くらいあるのだろうか。そうであれば
log 2 10000 = 13.28・・・
14 bit で足りそうだが、余裕をもって 16 bit、つまり 2 byte あれば十分だろう。
文字を符号化したものが、コードと呼ばれる。Shift-JIS とか ASCII コードといったやつだ。American Standard Code for Information Interchange の頭文字をとって、ASCII。
全人口は 77 億人くらいだそうだ。自分以外の一人を選ぶためには
log 2 7000000000 = 32.70・・・
33 bit の情報があれば選べる。4 byte ちょっとだ。意外と少ない。今では、パソコンのハードディスクの容量はテラバイト、1 テラバイトは 1,099,511,627,776 バイト。なんと容量が大きいことか。
さて、情報を送信することを考えてみる。たとえば、文字が 16 種類のみしかないとしよう。log 2 16 = log 2 24 = 4 だから、4 bit で符号化できる。4 桁の 2 進数だ。ここで、1 秒間に 1000 bit 送信できる能力をもった情報回線を使うと、1 秒間に何文字送信できるかというと
1000 (bit / 秒) / 4 (bit / 1文字) = 250 ( 文字/ 秒)
となるので、1 秒間に 250 文字送ることができる。1 秒間に 1000 bit 送ることができるとき、送信能力を 1000 bps (ボーレート)と言う。bps は、bit per second の略。
上の例を一般化すると、1 文字を N bit で符号化できているとして、回線が C bps、つまり C [ bit / 秒] 送ることができるとき、
『通信文の情報量が N [ bit / 1文字] のとき、通信回線の能力が C [ bit / 秒] とす
ると、1 秒当たり、最大、C / N 文字しか送ることはできない』
と言える。いや、C / N 文字まで送ることができるはずなのだ。
たとえば。
数字だけでできている文章を、1000 bps ( = 1000 bit / 秒)の能力を持つ通信回線で送ることを考えよう。数字は 10 個あったので、先ほど見たように log 2 10 = 3.3219・・・bit 必要だ。1 文字 4 bit でコード化できる。そこで、1 秒間に何文字送れるかというと
1000 ( bit / 秒) / 4 ( bit / 1文字) = 250 ( 文字/ 秒)
だ。さっきと同じ 250 文字。
しかし。
先ほどの『 』の言明では、N = log 2 10 [bit / 文字]、C=1000 [bps] だから、
C / N = 1000 / log 2 10 = 301.0・・・
なので、301 文字くらいは「最大」送れるはずだ。どこかで無駄をしている。
では、どうやればよいか。
たとえば、文字として考えた数字を 3 文字、つまり 3 つの数字ずつ区切ってみる。そして 1 文字ずつコード化するのではなく、3 文字( 3 桁の数字)ずつコード化していく。3 桁の数は( 001 や 013 なども 3 桁の数として)1000 個あるので、3 桁の数字は、情報量として
log 2 1000 = 9.965・・・
だから、10 bit あればコード化できる。先ほどは 1 文字を 4 bit でコード化したが、今度は 3 桁、3 文字を 10 bit でコード化したので、結果的に 1 文字あたり、10 / 3 = 3.33・・ bit でコード化できたことになった。4 bit から無駄が削減できたというわけだ。だって、4 bit あれば本来 16 の状態量を区別できるのに、0 から 9 までの 10 個の状態量の区別にしか使っていなかったから 6 個無駄にしていたというわけだ。また、1文字 3.33 bit でコード化できているということは、10個の状態量、log 2 10 = 3.3219・・・bit に極めて近いので、無駄がなくなって いる。
こうして、3 文字ずつコード化したから、3N = log 2 1000 = 9.965・・・より、一文字当たり
N = ( log 2 1000 ) / 3 = 3.3219・・・
通信回線の能力は同じく 1000 bps なので、
C = 1000 [ bit / 秒]
より、今度は 1 秒当たり送ることのできる文字数は
C / N = 301.0・・・
と、1 秒当たり 300 文字送ることができ、理論上の上限値に近くなった。
符号化の方法で通信できる情報量が増えた。『 』の言明は当たり前に過ぎるが、工夫の余地の有無を教えてくれる。ちょっと簡単化した「シャノンの定理」だ。
もう、25 年近く前に、High Intelligence City の大学に集中講義で来てくださった坂東昌子先生に、集中講義の合間に個人的に教わった話だ。集中講義では学生さん向けに素粒子論の講義をして頂いた。また、大統一理論のお話もしていただいた。
財務省の政策で予算を切られ、今では地方大学に集中講義の先生を呼んで、学生に普段聞いている教員以外の研究分野の話を聞かせて、目を開かせることもできなくなった。
地方切り捨て政策の一環である。