ABC正三角形(勝手呼称)

数学インデックスに戻る

記事作成日:2022/9/23
最終編集日:2022/9/23
ここではABC正三角形という勝手なタイトルをつけて、最近借りたある書籍[1]に載っていた興味深い手続き的振る舞いについて記述している。
それはある初期状態から一定のルールによって変化していくプロセスと最終形を問うもので、ライフゲームのルール30に些か類似している。計算的要素を加えるならコラッツ予想アリコット数列にも通じるものがあり、数学は未だこの種の問題を攻略するための用意ができていないことを P.エルデシュも述べていた。

なお、ABC正三角形という呼称は3種類の異なる状態を保持することに由来する勝手呼称であり、数論の深遠な概念を述べたABC予想とはまったく関係がない。
《 概要 》
まず A,B,C の中から適当に10文字を選んで一列に書き並べる。


計算的手続きは現れないので、区別可能な3つのキャラクタなら何でも構わない。ここでは大量に書くときの手間を省くために、一筆書きできる小文字で書いている。

10文字だから、隣り合った2つの文字を1セットと考えると9セットできる。このセットの下に次のキャラクタを書き込む。そのときのルールは以下の通りである。
(1)2つが同じ文字なら、そのキャラクタをそのまま書く。
(9)2つが異なる文字なら、その2つ以外のキャラクタを書く。
3種類の文字で考えているので、1セットの真下の文字はかならず一意に確定する。更にセットが9個できることから2行目の文字数も9個になる。


ここから先は「以後同様に繰り返す」と書くだけで下の方まで行を伸ばしていけるだろう。
これは6行目まで書いたところ。


下の行へ移るたびに文字が一つ減り、10行目は1文字だけになる。
こうして10行から成る正三角形ができただろう。


さて、この何が特別なのだろうか?
そのポイントは正三角形の頂点部分に現れている。


最下段の1文字は、最初に10文字並べた両端のキャラクタだけを選んで同様の操作をしたのと同じ結果になっているのだ。

他の配置で試してみたところ。


最初の10文字で両端を同じキャラクタにした状態から始めると…
最下段の1文字は、やはり当初の操作と同じ結果になるのだった。


即ち、最初の10文字で両端が異なるキャラクタだったら最下段はかならずそれ以外のキャラクタとなる。最初の10文字の両端が同じキャラクタだったら、最下段のキャラクタもかならずそうなる。最初の10文字で両端以外がどんなキャラクタ配列になっていてもこのことが成立するのである。
【 考察 】
最初の列を10文字から始めたのは意図的である。何故なら、他の文字数ではこの関係が成り立たない場合が多いからである。最初に完成させた例の2行目と3行目(9文字と8文字)では、両端と最下段のキャラクタの関係は成り立っていない。4行目(7文字)のところでは成り立っているが、2つ目に試した事例の4行目(acccbcc)では最下段が a だから法則が成り立っていない。そうなれば、
最初の列を何文字から始めた場合に
この法則が常に成り立つのだろうか?
という考察が可能になる。そして未だ厳密な証明を与えたわけではないが、10文字の場合は反例を見つけることができず常に成り立っているように見える。

初期文字数が1文字のときは操作自体が不要である。2文字のときは操作ルールから自明に成り立つ。3文字では成り立たないことは反例が容易に見つかることから分かる。4文字だと手順は少し増えるが常に成り立つことが厳密に証明できる。そして5〜9文字でも反例が見つかることで成り立たないことが示される。したがって当初から操作が不要である1文字も含めれば、この性質が成り立つ初期の文字数は1,2,4,10…である。

一連の手続きで一辺に10個のキャラクタが並ぶ正三角形ができる。この正三角形から天地を変えないようにして一辺が1,2,4の正三角形を任意に選んだとき、その頂点に来るキャラクタも常に同様の性質を持っていることに注意しよう。のみならずこの正三角形を120度・240度回転させることで、最初に完成させた正三角形とは異なる配置が2つ得られる。そこから天地を保った状態で同様に切り取られた正三角形に対してもなお成り立つ。
【 何故そうなるのか? 】
初期文字数が1,2,4で成り立っているならば、数列の規則性から8文字で成り立ちそうに思うところだ。しかし既に見てきたように次に成り立つ文字数は10である。それも書籍の該当ページ[2] に書かれているだけで、厳密な証明は示されていない。

成り立つ文字数のサンプルがもう少しなければ、推測を元に証明するのも困難である。適当に長い初期文字列を用意して1文字になるまで延々と書き込んだ後で各行を点検すれば良いように見えて、この方法には罠がある。考察のはじめのところでも見たように、ある初期配列に対しては法則が成り立っても初期配列を変えると成り立たなくなる例がかなりあるからだ。手続きが明確で簡単だからプログラム処理すれば速いようにも思える。当面は逆から辿って解析する方法を考えた。

かならず成り立つという証明を与えるのが困難でも、成り立たないことを示すのは反例が一つあれば足りる。既に作成した一辺に10個のキャラクタが並ぶ正三角形を元にして、この10個の並びを生成するプレイメージとなる11個の文字列を探すことを考える。

10文字あるうちの左端が a であるとしよう。すぐ上の11文字から成る文字列の左端は任意に決められる。ただしそれが a ならばその右隣りもかならず a となり、b か c なら右隣は c か b となる。更にその右隣りも前のキャラクタから一意に決まるので、結局与えられた10文字に対応する11文字列は3通りしかない。12文字列、13文字列…も同様に直前の文字列から3通りに分岐する。

実際に文字列を伸張させていくと、法則が成り立たないことの方が多い。左端を a, b, c の3通りで作成すれば多くの場合で反例が見つかる。もし見つからない場合、一つ前の文字列で左端を異なる文字に変えたもので再度作り直す。かなり面倒な手作業によって、30文字以下の初期文字列で同様の性質が成り立つ可能性があるのは16文字列と28文字列だけであることが分かった。したがって今のところ法則が成り立つかも知れない初期文字数の数列は 1, 2, 4, 10, 16, 28 …である。

手作業での検証だから、書き込み手続きのミスによる抜け落ちがあったり性質が満たされないものが含まれるかも知れない。それでも法則が成り立つ初期文字数はおそらく無限に存在し、n2のオーダーで増加するように思える。かなりシンプルな問題なので、恐らく既に答えが出ていることだろう。
《 類似する考察 》
3種類のキャラクタから所定の文字列に変換する手続きとしてすぐに思い付いたのは、一般に行われているじゃんけんである。これを10人の初期配列に適用してみた。ただし全員が一堂に会して行うのではなく横一列に並び、じゃんけんの手を出して隣り合った人同士で勝敗を判定して一段下の列へ移るのである。じゃんけんのルールに沿って、一段下へ移るとき以下の法則を適用する。
(1)2人が同じものを出した(あいこ)なら、どちらか一人が下へ移る。
(9)2つが異なるものを出したなら、勝った方が下へ移る。
したがって両端にいる人以外は両隣の人との結果が反映される。このプロセスで一人減るのだが、下の段へ降りても最初に出した手をいっさい変更することはできない。隣りにいる人との結果だけを参照して下の段へ移り、最後に一人になるまで続ける。即ち最初に出した手と隣り合った人の状態だけで最終結果に向かう奇特なサバイバルじゃんけんである。

実際に書いてみた例。
abcではさすがに分かりにくいので GTP で表現している。


見ての通り何らの法則もみられなかった。あいこになると同じ手がすぐ下の行へ移るので、縦に同じ手が並びがちになり先の例に比べてシャッフル度が小さい。充分に多人数でのじゃんけんから始めた場合、両端の手が永らく残り続けながらも時に突然に他の手へ入れ替わることがある辺りは、セル・オートマトンのルール110のパターンに似ている。
出典および編集追記:

1.「FBタイムライン|数学マニアックス?

2.「Number Freak - From 1 to 200 the hidden language of numbers revealed」(Derrik Niederman)p.206〜207
なお、該当ページには最初の文字列が4で割ると2余る偶数であるとき成り立つと書かれているが、既に検証したように誤りである。

ホームに戻る