いものやま。

雑多な知識の寄せ集め

『数学ガールの秘密ノート/ビットとバイナリー』を読んでみた。

結城浩先生の新刊、『数学ガールの秘密ノート/ビットとバイナリー』をさっそく読んでみたので、感想など。

概要

数学ガール』シリーズでは、主人公の「僕」と、彼を取り巻く女の子たちによる数学トークが語られている。
クールで数学が得意なミルカさん、元気で数学の疑問にしっかりと向き合っていくテトラちゃんなど、キャラクターも魅力的。

数学ガール』シリーズの中でも、今回読んだ『秘密のノート』シリーズは難易度がやさしめになっていて、中学生から楽しめるものになっている。
今回テーマとして取り上げられたのは、「ビットとバイナリー」ということで、2進数やその周りの数学。
コンピュータ関連というということで、赤髪のコンピュータ好き少女、リサも再登場している。

内容は2進数のおさらいから始まり、ビット操作の話、さらにはブール代数にまで及んでいる。

ビット操作に関しては、画像をスキャナで読み込んでプリンタに出力する、というテーマで話を展開させていて、とても面白かった。
そういうテーマにすると、ビット操作を画像のフィルタ処理と結びつけて話すことが出来るのか・・・

フリップ・トリップとルーラー関数

そんな中でも、個人的にすごく面白かったのが、「フリップ・トリップ」という問題。

フリップ・トリップ N Nは正の整数)は、以下のような問題:

盤面に N個の石(表が白、裏が黒)が並べられている。
石には 0, 1, \ldots , (N-1)と番号がついている。
石に対応して、 0, 1, \ldots , (N-1)と番号のついた反転ボタンがあり、ボタンを押すと対応する石の表裏が入れ替わる。
開始時に石はすべて表(白)になっていて、反転ボタンを押していくことで、同じパターンを出すことなく全てのパターンを出し切るには、どうすればいいか。

具体的な例を見た方が分かりやすそう:

例えば、フリップ・トリップ2なら、以下のような感じ:

init
    0: W [ ]
    1: W [ ]

turn0
    0: W [X]
    1: W [ ]

turn1
    0: B [ ]
    1: W [X]

turn2
    0: B [X]
    1: B [ ]

turn3 <done>
    0: W [ ]
    1: B [ ]

Wは白、Bは黒、[X]はそのボタンを押したということ。

フリップ・トリップ3だと、以下のような感じ:

init
    0: W [ ]
    1: W [ ]
    2: W [ ]

turn0
    0: W [X]
    1: W [ ]
    2: W [ ]

turn1
    0: B [ ]
    1: W [X]
    2: W [ ]

turn2
    0: B [X]
    1: B [ ]
    2: W [ ]

turn3
    0: W [ ]
    1: B [ ]
    2: W [X]

turn4
    0: W [X]
    1: B [ ]
    2: B [ ]

turn5
    0: B [ ]
    1: B [X]
    2: B [ ]

turn6
    0: B [X]
    1: W [ ]
    2: B [ ]

turn7 <done>
    0: W [ ]
    1: W [ ]
    2: B [ ]

この問題を解くために使われるのが、ルーラー関数
「ルーラー」というのは、「定規」という意味。

どうやってルーラー関数を使うのかや、ルーラー関数に関連する話は面白いので、ぜひ本で読んでみてほしい。

超立方体

ところで、この「フリップ・トリップ」問題を読んで自分がまず思ったのは、超立方体の頂点を辺に沿って全部周ればいいんだろうなぁ、ということ。
エピローグで軽く触れられてるんだけど、明示的には書かれていなかったので、ちょっと書いておきたい。

まず、2進数の0と1を頂点において辺でつなぐと、こんな線分になる:

f:id:yamaimo0625:20190731155332p:plain

フリップ・トリップの「白」を「0」、「黒」を「1」と考えると、この頂点はフリップ・トリップ1で出てくるすべてのパターンに対応し、辺は反転ボタン0を押した時の状態変化に対応している:

f:id:yamaimo0625:20190731160034p:plain

なので、フリップ・トリップ1で「1. 初期が白」「2. 反転ボタン0を押す」「3. 黒になる」というのは、この図で以下のように解釈できる:

f:id:yamaimo0625:20190731161059p:plain

これは一次元だったけど、これを横に引き伸ばすと二次元になり、フリップ・トリップ2に対応することになる:

f:id:yamaimo0625:20190731162611p:plain

以下のように辺に沿って移動していく(=反転ボタンを押していく)ことで、すべての頂点(=パターン)を巡っていくことが出来る:

f:id:yamaimo0625:20190731163358p:plain

これをさらに奥に引き伸ばせば三次元になり、フリップ・トリップ3に対応し、以下のように辺を辿っていくと、すべての頂点を巡れる:

f:id:yamaimo0625:20190731165936p:plain

同様に引き伸ばしていくことで、四次元、五次元、さらには N次元と考えていくことが出来る。
四次元についてはエピローグにも出てたり。

そして、このような引き伸ばして作っていった図形を、超立方体と言う。

そして、これまでの例を見てもらえば分かる通り、超立方体の辺に沿ってすべての頂点を巡るというのが、フリップ・トリップ問題の解答に対応している。

ハッセ図

ちなみに、この超立方体、見方を少し変えてみると、面白いことが見えてくる。

まず、一次元。

f:id:yamaimo0625:20190731173356p:plain

次に二次元。

f:id:yamaimo0625:20190731173416p:plain

そして、三次元。

f:id:yamaimo0625:20190731175045p:plain

そう、超立方体は、半順序関係を図示したハッセ図になっている!

ハッセ図については本を読んでほしいんだけど、本でハッセ図が出てきたので、「おぉ、ここから超立方体に繋げて、超立方体の頂点を巡るという話にするのかな?」と思ったら、そうじゃなかった(^^;
このあたりの繋がりについても言及があると、もっとよかったなぁ。

何はともあれ、非常に面白かったので、オススメ!

今日はここまで!