2019/08/09

不動点パズル02:随伴(問1~問3の解答)

(前回はこちら)

アーニーの機械は記号列を操作する機械で、ある記号列xを入力すると、ある記号列yをもたらす。いま、機械には2つの規則がある。2つの規則、規則Qと規則Cをあらためて見ておこう。
規則Q 任意の記号列xに対して、記号列Qxはxをもたらす。
規則C xがyをもたらすならば、Cxはyの随伴yQyをもたらす。

問題は以下の4問であった。

問1 それ自身をもたらすような記号列を見つけよ。
問2 それ自身の随伴をもたらすような記号列を見つけよ。
問3 それ自身の随伴の随伴をもたらすような記号列を見つけよ。
問4 任意の記号列yに対して、ある記号列xで、yxをもたらすようなものが存在することを証明せよ。たとえば、どのようなxがAxをもたらすだろうか。


ここで、言葉で書いていくと文章が長くなりがちになるので、できるだけ記号を用いて表現したい。たとえば、「xがyをもたらす」というのを「x→y」と書くことにしよう。「もたらす」というのを「→」で表す。「x→y」のように記号で書いた表現を「式」と呼ぶ。そうすると、規則Qと規則Cの式はそれぞれ以下のように書ける。
規則Q Qx→x
(任意の記号列xに対して、記号列Qxはxをもたらす)
規則C x→yならば、Cx→yQy
(xがyをもたらすならば、Cxはyの随伴yQyをもたらす)
わかりやすくなるかどうか若干不安があるが、以降これでいこう。

この書き方は『スマリヤンのゲーデル・パズル』には載っておらず、このブログでの表記だ。また、解答方法もなるべく本の解答方法とは違う書き方(僕が考えた方法)をしていこうと思う。

*****

問1 それ自身をもたらすような記号列を見つけよ。

(解答)
規則Qより、Qx→xであるので、CQx→xQxが成り立つ。
xがCのとき(以下「x = C のとき」と表現する)、CQC→CQCとなる。
∴それ自身をもたらすような記号列はCQC

*****

問2 それ自身の随伴をもたらすような記号列を見つけよ。

(解答)
求める記号列をxとして、
x→xQx ・・・・・①
となるような記号列を探す。
随伴をもたらす記号列だから、xはCからはじまる記号列。そこで、x = Cx1とすると、①は、
Cx1→Cx1QCx1 ・・・・・①’
と書ける。このとき、規則Cの条件より、
x1→Cx1 ・・・・・②
が成り立たなければならない。②の式は規則Qにあてはまらないので、規則Cにあてはめるため、x1 = Cx2とすると、
Cx2→CCx2 ・・・・・②’
と書ける。規則Cの条件を満たすようにするには、x2 = QCC とすればいい(②’の式での出力先の記号列にはQがないので、x2 = Qx3とすると、x3 = CC)。求める記号列はxであるため、
x = Cx1 = CCx2 = CCQCC
∴それ自身の随伴をもたらすような記号列はCCQCC

(考察)
・記号列CCQCCは、CCQCCの随伴CCQCCQCCQCCをもたらす。
・問1の解答途中で、CQx→xQxが成り立つことを確認した。CQx→xQxであるので、規則Cより、CCQx→xQxQxQxとなる。ここでx = CC としたのが問2の答えである。
・以下の規則は、本には載っていない(問題を解くためには使われている)
規則CQ CQx→xQx(xの随伴)
(任意の記号列xに対して、記号列CQxはxの随伴xQxをもたらす)
規則CCQ CCQx→xQxQxQx(xの随伴の随伴)
(任意の記号列xに対して、記号列CCQxはxの随伴の随伴をもたらす)
*****

問3 それ自身の随伴の随伴をもたらすような記号列を見つけよ。

(解答)
求める記号列をxとして、
x→xQxQxQx ・・・・・①
となるような記号列を探す。
随伴をもたらす記号列だから、xはCからはじまる記号列。そこで、x = Cx1とすると、①は、
Cx1→Cx1QCx1QCx1QCx1 ・・・・・①’
と書ける。このとき、規則Cの条件より、
x1→Cx1QCx1 ・・・・・②
が成り立たなければならない。②の式は随伴をもたらすことを意味するので、x1はCからはじまる記号列。x1 = Cx2とすると、
Cx2→CCx2QCCx2 ・・・・・②’
と書ける。このとき、規則Cの条件より、
x2→CCx2 ・・・・・③
が成り立たなければならない。③の式は規則Qにあてはまらないので、規則Cにあてはめるため、x2 = Cx3とすると、
Cx3→CCCx3 ・・・・・③’
規則Cの条件を満たすようにするには、x2 = QCCC とすればいい(③’の式での出力先の記号列にはQがないので、x3 = Qx4とすると、x4 = CCC)。求める記号列はxであるため、
x = Cx1 = CCx2 = CCCx3 = CCCQCCC
∴それ自身の随伴の随伴をもたらすような記号列はCCCQCCC

問4は次回にまわそう。

2019/08/08

不動点パズル01:アーニーの処理系

(プロローグ)

アーニーは人の名前で、この本『スマリヤンのゲーデル・パズル』の著者スマリヤンさんの友人。実在するかどうかは知らない。

で、そのアーニーさんはいろいろな機械を作っていて、ここで紹介されているのは、アルファベットの大文字の記号列を操作する機械。

記号列というのは、アルファベット大文字の文字列のことで、別に意味があるとは限らない。BLPQは記号列だし、ARMも記号列。アルファベットの大文字を並べたものを記号列と呼んでいる。

このアーニーの機械は、ある記号列を入力すると、受け付けられれば、通常別の記号列を出力する。いま、この機械を使った問題(パズル)を解いているところだ。

この機械は規則にそって、ある記号列が入力されると、その記号列を操作して、別の記号列を出力する。まあ、実用性はほとんどない機械だけど、この機械の挙動を確認することで、ゲーデルの不完全性定理の理解が深まるという利点はあるかな。

この機械の規則を説明する前に、ちょっと、記号列の書き方や用語の説明をしておくね。

記号列とは、アルファベット大文字の文字列であるということは説明した。任意の記号列を表すために、x, y, zなどの小文字を使う。数学の方程式での未知数xのようなものだ。xが1文字だからといって、1文字の記号列を表すわけではない。(このブログではx1のように添字をつけたものも使う。)

そして、任意の記号列の対xとyに対して、xyは、記号列xの後に記号列yを続けたものを意味する。たとえば、xが記号列BLDで、yが記号列HIJZだとすると、xyは記号列BLDHIJZになる。

記号列xを入力したときに記号列yが出力されるならば、xはyをもたらすという。

他にも用語は出てくるけど、まずはこれくらいにして、規則を説明していくね。

最初は、2つの規則からはじまっている。ページを進めていくと他の規則が追加されていって、どんどんややこしくなるよ(笑)

まずは1つ目の規則。規則Qだ。
規則Q 任意の記号列xに対して、記号列Qxはxをもたらす。
たとえば、QBLZはBLZをもたらす。記号列QBLZを入力したら、記号列BLZが出力されるということだ。

2つ目の規則は、規則C。
規則C xがyをもたらすならば、Cxはyの随伴yQyをもたらす。
随伴という用語を説明するね。任意の記号列xに対して、記号列xQxはxと特別重要な関係にあるので、xの随伴と呼ばれている。特別重要な関係というのがどのような関係なのかは、まだ僕には読み切れていない。ここでは、記号列xの随伴とは、記号列xQxのことだ、くらいに思っておこう。

で、規則Cなんだけど、これがちょっとややこしい。もう一度規則Cを見てみよう。
規則C xがyをもたらすならば、Cxはyの随伴yQyをもたらす。
規則Qのほうは、任意の記号列に対してQxはxをもたらすけれど、規則Cのほうは、「xがyをもたらすならば」という条件がついている。

規則Cが適用された例を挙げると、CQABはABQABをもたらす。QABはABをもたらすので、CQABはABの随伴であるABQABをもたらすということだ。規則Cと例を比べてみよう。
・xがyをもたらすならば、Cxはyの随伴yQyをもたらす。
・QABはABをもたらすので、CQABはABの随伴であるABQABをもたらす。
本は、まずはこの2つの規則を使った機械で問題を解いていくんだけど、もう少しこの機械を確認しておくね。

本には明言されていないけれど、このアーニーの機械に、規則の適用できない記号列が入力された場合、入力を受け付けないようにしておこう。たとえば、記号列ABを入力しようとした場合、この記号列ABは規則Qも規則Cも適用できない。そんなときは、受け付けられないとする。となると、入力できる記号列は、QかCからはじまる記号列となる。

規則Qは、任意の記号列に対してQx(Qからはじまる記号列)はxをもたらすけれども、規則Cには「xがyをもたらすならば」という条件があるので、Cからはじまる記号列すべてを受け付けできるわけではない。たとえば、CABは受け付けられない(ABは記号列をもたらさないため)。CQxならば、Qxはxをもたらすので、CQxはxQxをもたらす。

では、やっと問題に取り掛かろう。問題は4問ある。

問1 それ自身をもたらす(つまり、xを入力すると、xが出力される)ような記号列を見つけよ。

問2 それ自身の随伴をもたらすような記号列を見つけよ。

問3 それ自身の随伴の随伴をもたらすような記号列を見つけよ。

問4 任意の記号列yに対して、ある記号列xで、yxをもたらすようなものが存在することを証明せよ。たとえば、どのようなxがAxをもたらすだろうか。

(つづく)

2019/08/07

不動点パズル00:プロローグ

「アーニーの処理系の問題がよくわからない」

「いきなり何?」

「うん、この本の問題なんだけど――」

僕は読んでいた本を見せた。本のタイトルは『スマリヤンのゲーデル・パズル』。「論理パズルから不完全性定理へ」という副題がついている。

この本は副題のとおり、論理パズルなどの問題を解きながら、ゲーデルの不完全性定理のイメージや本質を理解しようという類をみない本だ。

以前に1度読んだことがあるが、問題を解かずに読んだだけであったためほとんど頭には入っておらず、今回は問題を解いていきながら読み進めていこうと思っている。いま読んでいたところは第9章で、「不動点パズル」という章題がついていた。

「――解答ページをみると、なるほどと思うんだけど、解き方というか、考え方がいまひとつつかめていない感じがするんだよね」

「答えがわかって納得できていれば、それでいいんじゃない?」

「うーん、それでもいいんだけど、納得できてもまだ理解できていない感じが強いんだよ。たとえば、キミに説明することができるかどうかあやしいし、次にもう一度同じ問題に取り組んだとしても解けるかどうかわからない。まあ、それができたとしても人生の役には立たないのかもしれないけど――」

人生の役には立たないのかもしれない――と、役に立つ可能性を否定はしなかったが、役に立つ可能性は極めて少ないと僕は思っている。不動点パズルが解けたところで、誰がどうなるわけではない。解答がわかっている問題であるので、何か新しいものを発見するというわけでもない。

ただ、僕にとっては少しだけ意味がある。理解することができれば、僕のなかにあるモヤモヤを少し消すことになる。「不動点パズル」もそうだが、その先にある「ゲーデルの不完全性定理」も、わかるようでわかっていないもののひとつであり、少しずつでもいいから理解を深めていきたいと思っている。

「――だから、ちょっとキミに聞いてもらいながら、このアーニーの処理系の問題、不動点パズルについて考えてみたいと思ったんだけど、いいかな?」

僕はキミの反応を待った。

(つづく)

盗人算より

ある数学読み物で、方程式の紹介をする導入部分において、「盗人算」について書かれていた。吉田光由の『塵劫記』に出ているものだという。そこには以下の問題が記載されていた。
盗賊団の会話が、橋の下から聞こえる。盗んできた反物を分配しようとしているようだ。「7反ずつ分けると8反余るし、8反ずつ分けると7反足りない。どうしたものかなあ」
さて、盗賊は何人で、反物は何反あるか。
『塵劫記』にはこれ1問しか出ておらず、答えも次の1行があるだけで、これ以上は書かれていないらしい。
盗賊は8足す7で15人、反物は15人掛ける8反に7反足りないから113反
盗賊の人数がわかれば反物が何反あるのかもわかるので、答えの後半はわかるとして、前半の盗賊の人数を求める部分、「8足す7で15人」というところの説明がほしい。

この数学の読み物では、このあとに方程式を立てて問題を解いている。盗賊の人数をx人として、「7反ずつ分けると8反余る」から反物は7x+8反ある。また「8反ずつ分けると7反足りない」ので、8x-7反とも表せる。7x+8反と8x-7反は同じ数であるので、
7x + 8 = 8x - 7
と方程式を立て、それを解いてx=15、つまり盗賊の人数は15人であることを確認していた。

そして、『塵劫記』には1問しか出ていないので、盗賊の人数や盗品の数が違った場合どうなるか、ということで、読み物では別の問題を作って確認していた。
盗賊団の会話が、橋の下から聞こえる。盗んできた反物を分配しようとしているようだ。「7反ずつ分けると6反余るし、9反ずつ分けると4反足りない。どうしたものかなあ」
さて、盗賊は何人で、反物は何反あるか。
同様に方程式を立てて解いてみると、
7x + 6 = 9x - 4
∴x = 5
盗賊の人数は5人で、反物は41反となる。

ここでふと思ったことは、問題の作り方にも注意が必要であるということだ。盗賊が5人であれば、「7反ずつ分けると6反余る」ということは言えないのではないか。6反余るのならば、「8反ずつ分けると1反余る」と言わないといけないのではないか。問題が間違っているとは言い切れないが、「余り」が盗賊の人数より少ないのは違和感を感じる(畳語?)。もっとも盗人の発話自体、実際にありそうな発話とは思えないけれど……。

読み物の方は盗人算を導入として、1次方程式、2次方程式、3次方程式、……という話につなげていて、盗人算がメインではなく、これ以上盗人算に触れることはなかったが、私の方はこの違和感のために、盗人算について少し考えさせられた。

『塵劫記』での盗人算の問題と解答は以下であった。
問:盗賊団の会話が、橋の下から聞こえる。盗んできた反物を分配しようとしているようだ。「7反ずつ分けると8反余るし、8反ずつ分けると7反足りない。どうしたものかなあ」
さて、盗賊は何人で、反物は何反あるか。
答:盗賊は8足す7で15人、反物は15人掛ける8反に7反足りないから113反
この答えにある「盗賊は8足す7で15人」というのはどこから来たのか。「8足す7で15人」として答えは合っているが、たとえば、「8足す7」の「8」は、7反ずつ分けたときの余りの「8」なのか、「8」反ずつ分けると7反足りない方の「8」なのかについては何の言及もない。盗人算とはどのようなものなのかを考えてみたい。

そこで、読み物にあった別の例を、違和感のないような問題に作り直し、『塵劫記』での問題と解答の形式にして比べてみる。
問:盗賊団の会話が、橋の下から聞こえる。盗んできた反物を分配しようとしているようだ。「8反ずつ分けると1反余るし、9反ずつ分けると4反足りない。どうしたものかなあ」
さて、盗賊は何人で、反物は何反あるか。
答:盗賊は1足す4で5人、反物は5人掛ける9反に4反足りないから41反
どうやら盗賊の人数の求め方は、「○反ずつ分けて余った反数+(○+1)反ずつ分けて足りない反数」であるようだ。

少し一般化してみる。

割り算(除法)、余りについては次のように表現されることが多い。
m = qn + r
mは「割られる数」、nは「割る数」、qは「商」、rは「余り」と呼ばれる。盗人算に合わせられるように、自然数での除法を考える。r<nとする。

上記を盗人算に対応させてみると、割られる数mは反物の総数、割る数nは盗賊の人数、商qは盗賊一人あたりの反数、余りrが余った反数となり、盗人算の問題は次のように表現できる。
q反ずつ分けるとr反余るし、q+1反ずつ分けるとa反足りない。盗賊はn人で、反物はm ( = qn + r ) 反とするとき、nを求めよ。
q+1反ずつ分けたときに足りない数をaとした。

もう少しこなれた感じで、盗人算の解答を含めて定理っぽく表現してみると、
m = qn + r で、m = (q + 1)n - a であるとき、n = r + a が成り立つ。
(m, n, q, r, a は自然数。r<n, a<n)
あるいはmodを使って、
m mod n = r で、m mod n = - a のとき、n = r + a
ともいえる。

証明は略。

2019/08/06

3次方程式の解の公式の導出

3次方程式の解の公式(カルダノの公式)の導出についての覚え書き。(Webでの数式表記を詳しく調べていないので、分数やルートなどの表記部分がわかりにくくなっています。)

3次方程式は一般的に以下のように表される。
ax3 + bx2 + cx + d = 0 (a ≠ 0)

変数変換
x = y - b / 3a を代入して、
a(y - b / 3a)3 + b(y - b / 3a)2 + c(y - b / 3a) + d = 0
式を整理すると、
y3 - ((b2 - 3ac) / 3a2)x + (2b3 - 9abc + 27a2d) / 27a3 = 0
となる。ここで、
p = - (b2 - 3ac) / 3a2  ・・・①
q = (2b3 - 9abc + 27a2d) / 27a3  ・・・②
とすると、以下のyに関する3次方程式が得られる。
y3 + py + q = 0  ・・・③
  • 変換後の3次方程式の左辺y3 + py + qには、2次の項がない(y2の係数が0)。3次方程式をより簡単な形に変換し、変換後の3次方程式の解を導くことで、変換前の3次方程式の解も導くことができる。
  • この変換について、「立体完成」や「チルンハウス変換」「フェラーリの方法」などと呼ばれている。それぞれの変換名の詳細は調べていない。

y = u + vの導入
y = u + vとし、式③に代入する。
(u + v)3 + p(u + v) + q = 0
整理すると、以下になる。
(u3 + v3 + q) + (u + v) (3uv + p) = 0  ・・・④
ここで、以下の連立方程式、
u3 + v3 + q = 0  ・・・⑤
3uv + p = 0  ・・・⑥
を満たすu、vがあれば、y = u + vより、yを求めることができる。
  • y = u + vの導入は、唐突な感がある。どのような意図でこのような変換をおこなったのかについては未確認。自分では思いつきそうにない。
  • 方程式④から、連立方程式(⑤⑥)を立てることについても思いつきそうにない。
  • 連立方程式の表記としては括弧({)があったほうがいいが、勉強不足。

連立方程式を解く
u3 + v3 + q = 0  ・・・⑤
3uv + p = 0  ・・・⑥
⑥より、
u= - p/3v
⑤に代入して、
(- p/3v)3 + v3 + q = 0
これを整理すると、
v6 + qv3 - (p/3)3 = 0
ここで、V = v3とすると、
V2 + qV - (p/3)3 = 0
と、Vに関する2次方程式となる。
2次方程式の解の公式より、
V = - q ± √(q2 + 4(p/3)3) = -(q / 2)±√((q/2)2 + (p/3)3)
∴ v3 = -(q/2)±√((q/2)2 + (p/3)3)
同様に、u3 = -(q/2)±√((q/2)2 + (p/3)3)となる。u3とv3は対称であり、また、式⑤よりu3 + v3 = - qであるため、u3とv3の平方根の前にある±の符号は、片方が+(プラス)であれば、もう片方は-(マイナス)である。よって、
u3 = -(q/2) + √((q/2)2 + (p/3)3)
v3 = -(q/2) - √((q/2)2 + (p/3)3)
よって、
u = 3√{-(q/2) + √((q/2)2 + (p/3)3)}
v = 3√{-(q/2) - √((q/2)2 + (p/3)3)}
y = u + vより、
y = 3√{-(q/2) + √((q/2)2 + (p/3)3)} + 3√{-(q/2) - √((q/2)2 + (p/3)3)}
  • u3から三乗根をとるとき、3つの解が出てくる。三乗すると1となる3つ数を、1, ω, ω2)とすると、uの値は上記の他に、ωを掛けたものと、ω2を掛けたものの2つが存在する。
  • WEBでの三乗根の表記のしかたは勉強不足。
  • ここに挙げた公式、
    y = 3√{-(q/2) + √((q/2)2 + (p/3)3)} + 3√{-(q/2) - √((q/2)2 + (p/3)3)}
    は、式③のかたちの3次方程式についての解の公式であり、3次方程式の一般形についての解の公式ではない。しかし、変数変換で使ったx = y - b/3aや、式①②を使って一般形の解の公式を導くことができる。

ブログ アーカイブ