1000本の毒ワインは10人で見抜ける?
この回は、レンさんが出したクイズから始まります。1000本のワインのうち1本だけに毒が入っているとき、毒ワインを見つけるには最低何人が必要か、という問題です。
エマさんの答えは「1000人が1本ずつ一斉に飲み、ダメだった人で知る」というものでした。レンさんは「何のクイズにもなってない」と笑いつつ、正解は10人だと明かします。
これ正解だけ言うと、これ10人でできるんですよね。これは二進法っていうものを使えばわかります。
なお、エピソード説明によると、このクイズには「即効性の毒ではない」という条件があります。1人が何本でも飲めて、後から答え合わせをする前提です。
レンさんがこのクイズを出したのは、コンピューターが二進法で動く理由を話したかったからです。最近の番組ではAIやノーベル賞の話題が続いていましたが、AIの根っこをたどるとコンピューター、さらに二進法にたどり着くといいます。
コンピューターって二進法で動いてるって聞いたことあるじゃないですか。あれって何でですかっていう話なんですよ。だって十進法の方が分かりやすくない?
二進法を体系化した人物は17世紀、ニュートンの時代に現れます。今回は二進法そのものとコンピューターでの役割を扱い、次回はそれを作った人の話をするという2回構成の予告もありました。
十進法と二進法、桁はどこで上がる?
レンさんはまず、普段使っている十進法の定義をエマさんに確認します。エマさんの説明は、0から9までの10種類の数字で1桁を表す数え方、というものでした。
十進法では9の次で桁が上がり、10になります。レンさんは、人間の指が10本あって数えやすいことが、大昔から10という数が重要だった理由ではないかと話します。
もし私たちの指がさ、4本4本だったらさ、八進法になってたかな。
一方の二進法は、2になった時点で桁が上がる数え方です。使う数字は0と1だけで、2は「10」、3は「11」、4になるとまた桁が増えて「100」になります。
| 十進法 | 二進法 | 桁の動き |
|---|---|---|
| 1 | 1 | 1桁 |
| 2 | 10 | 二進法では2で桁が上がる |
| 3 | 11 | 2桁のまま |
| 4 | 100 | 二進法ではさらに桁が増える |
十進法のコンピューターはなぜ廃れた?
ここでレンさんは、コンピューターを十進法で作れないのかと問いかけます。今のパソコンは、例えば「0001ならアルファベットのA」といった対応表で数字を文字に変えているので、0から9の数字で同じことをしてもよさそうに見えます。
実際、1940年代には0から9の数字を入力するタイプのコンピューター、ENIAC ── 1940年代にアメリカで作られた初期の電子計算機。大量の真空管を使い、十進法で計算していたことで知られていますがありました。エマさんも、十進法のほうが人間には直感的にわかりやすいと応じます。
それでも0と1になった理由について、レンさんは回路の仕組みから説明します。十進法で表すなら、電気を流さなければ0、1ボルトなら1、2ボルトなら2というように、10種類の電圧の状態を作る必要がある、というたとえです。
二進法なら、1つの装置に必要なのは「電気を流すか流さないか」の2つの状態だけです。装置を2つ並べれば2×2で4種類、4つ並べれば16種類、つまり0から15までを表せます。
10個の機械で0から9まで表示するのと、4つの機械だけで0から15まで数えれるって考えると、二進法の方が少ない機械の数で数えられる数字が多いんですよね。
流す・流さないの装置を10個並べると、二進法では0から1023までを表せます。同じ10個の部品で、十進法との差は100倍以上になるというのがレンさんの説明です。
電圧の違いで0〜9を表すため、10個の部品で表せるのは10通り
流す・流さないの装置を10個並べて、0〜1023の1024通りを表せる
当時の十進法のコンピューターは、桁が増えるたびに部品も増え、部品が多すぎてどこかの修理がしょっちゅう必要だったそうです。レンさんによれば、真空管が1.8万本も使われていたといいます。
さらに電圧で数字を区別する方式は、電圧が少しずれるだけで値が変わり、エラーが起きやすくなります。流すか流さないかだけの二進法は、部品が少なくエラーも起きにくい、シンプルな仕組みだとまとめられました。
4K画像も声も0と1でできている?
話題はスマホでおなじみのデータ量の単位に移ります。0か1を入れる1つの単位がビット ── 情報量の最小単位。0か1のどちらかを表し、英語のbinary digitを略した言葉ですで、それが8個集まると1バイトになります。
レンさんの説明では、1ギガバイトは80億ビット、つまり0か1が入る箱が80億個ある量の情報です。8ビットで1文字を表すとすれば、10億文字分にあたるといいます。
こうした電気の流れる・流れないを、とても小さな単位で大量にこなしているのが集積回路 ── 多数のトランジスタなどの電子部品を1つの小さなチップにまとめた回路。ICとも呼ばれますです。巨大なスイッチでやっていては、画像1枚を数値にするだけで膨大なスイッチが必要になってしまいます。
レンさんは、黒いパーツから銀色のピンが生えている部品を例に、1本のピンに電気が流れるかどうかが1つの箱にあたると話します。実際にはさらに「もしこうなら0、こうなら1」という論理構造も重なり、仕組みはもっと複雑だそうです。
写真の場合は、画面上のドットの位置と、そのドットの色が二進数で表されています。4K画質なら、縦横を2160×3840に区切り、それぞれの点を約1677万色の中の1色で塗った集まりだといいます。
動画はそれをパラパラ漫画のように高速で並べたもので、ポッドキャストの声も音の波の情報が0と1になって配信されています。レンさんは、何でも0と1で表せること自体がデジタルだと説明します。
うん、すごいね。01。何の情報にもなっちゃうね。
ただし、写真も細かく見ればドットの四角に区切られているため、目で見た景色と100%一致するわけではありません。レンさんは、アナログを完全にデジタルで再現することはできないと補足します。
味や匂いは送れないのでは、という話にもなりましたが、レンさんは化学構造式も文字で記述できるので、数値化できれば二進法にできるだろうと話していました。
毒ワイン問題はどう解く?
二進法の小ネタとして、レンさんはプログラマーが指で二進数を数えることがあると紹介します。十進法で指を折って数えると両手で頑張っても100程度ですが、指1本を1桁の0か1にすると、両手で1023まで数えられるそうです。
中指立てると4になるらしいです。親指立てたら1みたいな。
ここで冒頭の毒ワインのクイズに戻ります。1000本から1本を見つけるには、まず1000本すべてに個別の番号をつける必要があります。10桁の二進数なら0から1023まで表せるので、1000本に別々の番号を振れます。
次に10人を集め、それぞれに二進数の1桁ずつを担当してもらいます。各自は、ワインの番号で自分の桁が1になっているものだけを飲みます。
例えば1番のワインはAさんだけ、2番はBさんだけ、3番はAさんとBさんが飲みます。もし3番が毒なら、AさんとBさんだけが亡くなり、残りが生きていれば3番だと特定できます。
エマさんは、この方法では複数人が亡くなる可能性があると指摘します。全員が生き残るのは0番に設定したワインが毒だった場合だけで、最悪の場合は9人が亡くなる、と2人は確認しました。
レンさんが「王様の毒味役なのでは」と言うと、エマさんは1000人雇って1人だけ犠牲にするほうがいいのでは、と返します。
人命を最優先したら、やっぱ1000人雇った方がいいですね。
あ、俺ちょっとその発想はなかったね。だいぶ帝王学な感じだね、それ。
エマさんは「部下のためだから部下視点」と反論し、番号を間違えそうだという話や、10人が飲むワインの量がえぐいという話でひとしきり笑いが起きます。それでもレンさんは、1000人必要に見える問題を100分の1の人数で解けるのが、二進法の効率のよさを示すいい例だと締めました。
0と1の世界を考えたのは誰?
レンさんは、今のパソコン、スマホ、AIの基礎はすべて二進法であり、非常に偉大な発明だと話します。0から9の10個の数字で表しているものを、0と1だけで表せると最初に言った人がいるわけです。
エマさんは、時計やダースのように十二進法などの数え方は身近にあると指摘します。そのうえで、十進法以外があると気づくことはできても、0と1だけにする発想は難しそうだと感心します。
十進法以外もあるっていうことは、結構みんなすぐ気づきそうではあるけど、それを何か01だけの二進法にするっていう発想が初めは難しそう。
しかも二進法の理論は、コンピューターの効率が問題になるずっと前に作られていました。当時はほとんど関心を持たれず、「へー」という程度の受け止めだったとレンさんは話します。
同様の考え方は中国やインドでも昔からあったものの、現代につながる形にしたのは、ニュートンのライバルであるライプニッツ ── 17〜18世紀のドイツの哲学者・数学者。ニュートンとは別に微分積分を確立し、二進法の研究でも知られていますです。ライプニッツは微分積分も作った人物です。
次回はライプニッツの人生を取り上げる予定です。レンさんは、ガリレオ、ニュートン、パスカル、フェルマー、デカルトなどの過去回にもライプニッツの話は出てくるので、気になる人はさかのぼって聞いてほしいと呼びかけていました。
まとめ
コンピューターが二進法を使うのは、流すか流さないかだけで済む単純さが、部品の少なさとエラーの少なさにつながるからです。その効率は毒ワイン問題にも表れ、次回はこの0と1の世界を体系化したライプニッツへと話が進みます。
- 二進法は2で桁が上がる数え方で、使う数字は0と1だけ
- 10個の部品で十進法は10通り、二進法は1024通りを表せる
- 十進法のENIACは真空管1.8万本を使い、故障やエラーが起きやすかった
- 写真も動画も声も、位置や色などを数値化すれば0と1で表せる
- 1000本の毒ワインは、10桁の二進数を10人で分担すれば特定できる



