このブログの更新は Twitterアカウント @m_hiyama で通知されます。
Follow @m_hiyama

メールでのご連絡は hiyama{at}chimaira{dot}org まで。

はじめてのメールはスパムと判定されることがあります。最初は、信頼されているドメインから差し障りのない文面を送っていただけると、スパムと判定されにくいと思います。

参照用 記事

イデアルと論理 (1):2つの升で水を量る

とりあえず書き出してみよう、第1回。

最近、『シンシティ』って映画をみました。ブルース・ウィリスが老いぼれ刑事役。なんか、『ダイハード』の頃と印象が変わってない。若いときからオッサン・キャラだったからなー。

さて、確か『ダイハード 2』だったと思うのですが(記憶がまったく定かでない;[追記]コメント参照[/追記])、キャラハン刑事、じゃなくてマクレーン刑事が、犯人が出したクイズに答えなくてはならない場面があります。そのクイズは次のようなものだったかと(記憶がまったく定かでないが) -- 「4リットル7リットルの升<ます>がある。これを使って9リットルだけの水を大きな桶に入れよ」

考えてみてください。

●水をうまく量れるだろうか

これはできます。やり方は1通りじゃありませんけど。

このクイズを方程式で書くと、「4n + 7m = 9」を満たす整数n, mを求める問題です。(n, mは負でもかまいません。負の整数は、升を使って水を桶からかき出すことを意味します。)別なモデルを持ち出して言うなら、平面上の格子点(n, m)で、「4n + 7m = 9」で定義される直線の上に乗る点を求めることです。あるいは、(n, m) |→ 4n + 7m で定義される線形写像の像に9が含まれるかどうか、って問題だともいえます。

「4n + 7m = 9」は解けますが、「4n + 8m = 9」はどうでしょう。直感的に分かると思いますが、4リットルと8リットルの升を使って量れるのは(4の倍数)リットルに限られるので、9リットルを量るのは無理です。つまり、「4n + 8m = 9」を満たすn, mは存在しません。

●解けるか、解けないか

水を量る問題は解けるケースと解けないケースがあります。もし、「4リットル8リットルの升がある。…(以下同じ)」というクイズだったら、これは絶対に解けません。ダイハードの犯人は解ける問題を出しているから、それほど卑怯ではなかったんですね。

さて、ここでメタ問題を考えましょう。「どんなときに、水を量る問題は解けるか、あるいは解けないか」です。与えられる升の容量をa, b、量るべき量をcだとすると、「n, mを未知数とする方程式 an + bm = c は、a, b, cがどんな条件を満たすとき解けるか/解けないか」となります。

結果を先にいいましょう。

  • cが、aとbの最大公約数の倍数のとき、問題は解ける。そうでないときは解けない。

今までの例だと、a = 4, b = 7, c = 9 のケースでは、4と7の最大公約数は1であり、9はもちろん1の倍数なので解けます。実は、a = 4, b = 7ならcは何でも大丈夫です。別な言い方をすれば、どんな水の量でも量れます。a = 4, b = 6のケースでは、4と6の最大公約数は2なので、偶数リットルしか量れません。そして、a = 4, b = 8なら4の倍数しか量れないわけです。

イデアル登場、いやマダです

先ほどのメタ問題「n, mを未知数とする方程式 an + bm = c は、a, b, cがどんな条件を満たすとき解けるか/解けないか」に対して、ちょっともって回ったアプローチをします。an + bm (a, bは定数だと思う)という一次式の変数n, mを動かしてみて、その全体が作る整数集合の“形”を調べるのです。形と言うのは、整数全体における an + bm 達の分布の仕方、入り込み方の様子です。

a = 4, b = 7 のケースでは、{4n + 7m | nとmはあらゆる整数を動かす}は、実は整数全体に一致します。a = 4, b = 6のケースでは、{4n + 6m | nとmはあらゆる整数を動かす}は偶数全体、そして、a = 4, b = 8 のとき {4n + 8m | nとmはあらゆる整数を動かす}は4の倍数全体です。

事例から推測するに、{an + bm | nとmはあらゆる整数を動かす}は、なんかの倍数全体のようですが、今のところその理由はハッキリしません。理由、あるいは事情をハッキリさせるために「イデアル」概念を導入したいのですけど、まー、それは次にしましょう。