スタートからゴールまで辿るあみだくじが1つなら、誰でも手で辿れます。それが1,000個あっても、コンピューターなら一瞬で計算できます。しかし、もしあみだくじが「1億個」並んでいたらどうでしょう。いくら高速なコンピューターでも、愚直に一つずつ辿っていては膨大な時間がかかってしまいます。
ここで「数学的な工夫」が登場します。あみだくじの結果をよく観察すると、「AからスタートするとFに行く」「Fに行くとCに行く」「Cに行くとAに戻る」といったサイクル(規則性)が見つかることがあります。この場合、3回ごとに元の位置に戻るわけですから、1億回すべてをシミュレーションする必要はありません。1億を3で割った「余り」だけを考えれば、答えは一瞬で導き出せます。
どういう意味?日本語で平易に解説して。提案は一切しないで。
言っていることは、「同じ操作を何回も繰り返すと、途中から“同じ状態の繰り返し”になる(周期=サイクルができる)ので、全部を一個ずつ計算しなくても、最後の結果だけを短く計算できる」という意味です。
あみだくじを1回たどると、スタート地点(A,B,C…)が別の地点に移ります。
例えば
同様に
という対応があるなら、これは「同じあみだ操作をもう一回やると、また移動する」という意味になります。
上の例はこうつながっています:
A → F → C → A → F → C → …
つまり、Aから始めてあみだくじを1回やるとF、もう1回やるとC、さらにもう1回やるとAに戻ります。
このように、同じ場所の並びが繰り返される現象を「サイクル(周期)」と言っています。
この例の周期は3です(3回で元に戻る)。
周期が3なら、何回やっても結果は「3で割った余り」で決まります。
つまり「3の倍数回ぶん」は、全部まとめて“変化なし(元に戻る)”と同じ扱いにできます。
だから、1億回についても
1億 ÷ 3 = 33,333,333 余り 1
となり、「3回の繰り返しセットを33,333,333回やったぶん」は全部相殺されて、結局「余りの1回分」だけ考えれば十分、ということになります。
A → F → C → A… の周期3で
1億回は余り1なので、Aからスタートして1億回繰り返した最終地点は F になります。
要するに、「大量に同じあみだを繰り返すとき、途中の規則(周期)を見つければ、全部を順番に追わずに“余り”だけで一瞬で最終結果が分かる」という説明です。
本当に?たまたまじゃないの?そんな都合がいいことなんてある?
本当です。「たまたま」ではなく、必ずそうなります(条件は「同じあみだくじ=同じ対応」を何回も繰り返すこと)。
ポイントは、あみだくじ1回ぶんの結果は
という “行き先が1つに決まる対応” になっている、ということです。これは数学では「写像」と呼ばれるタイプのものです。
スタート地点の候補が有限個(A〜Fなら6個)しかないのに、何回も繰り返すと
A →(1回後)→ どこか →(さらに)→ どこか → …
と無限に続きます。
でも行ける先は6個しかないので、途中で必ず同じ地点に再び来ます(鳩の巣原理:入れ物より玉が多ければ同じ箱に入る、という理屈)。
一度同じ地点に戻ったら、その後の動きは「同じ操作をする」ので必ず同じになり、
… → X → … → X → …
となって、そこから先は同じ並びの繰り返し(サイクル)になります。
これは運ではなく、有限個の状態に対して同じ規則を繰り返す限り必然です。
例が「最初からAに戻る」形だから分かりやすく書いてあるだけで、別にそう“都合よく”なくてもサイクルはできます。
例えば
A → D → E → B → E → B → E → …
みたいに、最初は少し寄り道(前置き)があってから
E ↔ B の2周期に入る、という形も普通にあります。
ただし、あみだくじは「スタートは必ずどれか1つのゴールに一対一で対応する」ので、実はもっと強くて、
という性質になります。
なので「たまたま周期が見つかることがある」ではなく、必ず周期構造になっています。
ある地点が周期 (k) のサイクルに入っているなら、
となるので、結局 回数の (k) で割った余りだけ見れば、最終位置が決まります。
これは「都合がいいからそう見える」ではなく、同じ対応を有限回の状態に繰り返し適用する限り、必ず起きる数学的事実です。
n回やるともとに戻るという表現がよくわかりません。もとに戻るって何?あみだって一方通行だよね?シャトルランみたいに往復してんの?
「もとに戻る」は、あみだを“上から下へたどる1回分”という操作を、同じものでもう一度・さらにもう一度…と繰り返したときに、出発点として置いている“位置(ラベル)”が元のラベルに戻る、という意味です。往復しているわけではありません。
1つのあみだくじは、上の入口(A,B,C,…)を1つ選ぶと、下の出口(A,B,C,…のどれか)に必ず1つ決まって着きます。
例:
これは「あみだが一方通行」という感覚と矛盾しません。
一方通行なのは “そのあみだの中を上→下に進む” という意味であって、ここで言っている繰り返しは
「3回やるともとに戻る」というのは、
A → F → C → A
となって、3回後のスタート位置(として扱うラベル)がAに戻る、ということです。
これは
ではありません。
あくまで「毎回、上から下へ一方通行にたどる」を繰り返していて、“何回目の入力がどのラベルになるか”が巡回しているだけです。
「次の行き先が書かれた札をめくる」みたいに考えると近いです。
このとき「3回めくるともとに戻る」は自然ですよね。
あみだを1回たどる=札を1回めくる、みたいなものです。
まとめると、「もとに戻る」は場所を往復する意味ではなく、同じ“あみだ1回分の規則”を繰り返し適用した結果、出発点としてのラベルが元と同じになるという意味です。
この例だと A → F → C → A で周期は 3 みたいだね。これで 3 だと確定するものなの?B,D,Eまだ見てないじゃん。4とか2になるかもしれないじゃん。
この例で「周期が3」と言っているのは、“Aから出発したときに辿る並び”の周期が3という意味です。全体(A〜F全部)について「周期が3で確定」と言っているわけではありません。
Aから始めて同じ規則を繰り返すと
A → F → C → A → F → C → …
となる。これは
ので、Aの周期は3で確定です。
ここでの「確定」は、Aから出発する限り、という条件つき。
A〜F全部について「何回やったら全員が元の位置に戻るか」は、B,D,Eがどう動くか次第です。
あみだ1回分の対応は「全体としては、いくつかの輪っか(サイクル)に分かれる」と考えられます。
今回すでに
ことだけが分かっています。
残りの B, D, E は例えば
だから 「全体も周期3」とは限らないし、あなたの言う通り 2や4の周期が混ざる可能性はあります。
嘘ではありません。ポイントはこうです:
B,D,Eが2周期だろうが4周期だろうが、Aから始める限り一切関係しません(Aの軌道はB,D,Eに飛ばないので)。
まとめると、
という意味です。
じゃあ全部の道について計算したければ、A~Fのそれぞれの周期を求めればいいってこと?
はい、「全部(A〜Fそれぞれが、何回後にどこにいるか)」を知りたいなら、各スタートが属するサイクル(輪っか)を全部見つければいい、ということになります。
ただし「周期をそれぞれ求める」という言い方を、もう少し正確にするとこうです。
あみだを1回たどる操作は、A〜Fを別の文字に写す“対応”です。あみだくじの場合は出口が重ならないので、A〜Fは
という形に必ずなります。
例:すでに分かっているのは
(A F C) という3個の輪っか(3周期)。
残りの (B D E) も、例えば
A〜Fそれぞれについて別々に延々追うのではなく、
を全部押さえれば、任意の回数 n 回後の位置が一気に分かります。
たとえば (A F C) のサイクルなら、n回後は
n を 3 で割った余りで決まります。
同様に、(B D) みたいな2周期のサイクルにいるなら、n を 2 で割った余りで決まります。
つまり「全体について知りたい」=「全サイクルについて、長さと並びを知りたい」です。
結論:方向性は合っています。ただ「A〜Fそれぞれの周期をバラバラに求める」というより、全体をサイクル(輪っか)の集合として求めると考えるのが本質です。
1億回すべてをシミュレーションする必要はありません。1億を3で割った「余り」だけを考えれば、答えは一瞬で導き出せます。
結局1億回分のシミュレーションが必要じゃないです?
それとも A → C → F → A であれば A を調べるだけで C と F も調べたことになるから手数を節約できるって話?
必要ありません。ここで言っている「一瞬で導ける」は、“1億回ぶんの逐次計算(A→…を1回ずつ1億回)をしないで済む”という意味です。
ポイントは次の2つです。
たとえば A が長さ3のサイクル
A → F → C → A → …
に入っているなら、3回やると状態(ラベル)が元に戻るので、
という理屈です。
ここで計算しているのは
であって、1億回のシミュレーションではありません。
あなたの言う後半もその通りで、これは別の意味での節約です。
A を辿ってサイクルが
(A F C)
だと分かった瞬間に、
も、同じ輪っかの中の「位置がずれているだけ」だと分かります。なので A, F, C を別々に延々追う必要はないです。
ただし、元の文章の主旨の節約はまず
というほう(計算回数を1億→高々k程度に落とす)です。
まとめると:
Aからシミュレーションを開始して、A→F→C→Aとわかったとします。この時点であみだでの移動量はたったの 3 回であり、AとFとCについて確定した。
こういうことですか?
はい、その理解で合っています(ただし「確定した」の中身を正確に言うとよりクリアになります)。
この結果として「確定する」のは次の内容です。
Aからスタートして同じあみだを n 回繰り返した結果は、n を 3 で割った余りで決まります。
だから 1億回でも、3で割った余り(=1)を見るだけで Aの最終到達先はFと出ます。
ここで必要な「辿る作業」は最大でも 2回分だけで、1億回分は不要です。
サイクルが (A F C) と確定したので、
も自動的に確定します。
つまり Aを辿って3回で輪が分かった時点で、A/F/Cそれぞれの “n回後” が全部決まった、と言ってよいです。
※ただし、B・D・Eがどうなるかは、この時点ではまだ分かりません(別の輪にいるかもしれないので)。
あまりってなんなの?比喩的に使ってます?
「余り」は比喩ではなく、割り算の“余り”(remainder)そのものです。
たとえば周期が3(3回で同じ位置に戻る)なら、
…というふうに、3回ぶんを何セットやったかは最終結果に影響しません。
影響するのは、3回セットを全部取り除いたあとに 最後に残る 0回/1回/2回だけです。これが「余り」です。
1億回を「3回セット」でまとめると
という意味は、
ということです。
だから「1億回後」を知りたいなら、「余りの1回だけ」見ればよくなります。
周期3なので、
1億回の余りは1なので、Aから始めた最終位置はF、という具合です。
要するに「余りだけ見ればいい」は、“周期の回数で割った余りが、最後の位置を決める”という、文字通りの割り算の話です。
- 3回やる:元に戻る(=1セット完了)
n回やるってどういう意味?
--->
A ------------- A
| | | |
B ------------- B
| | |
C ------------- C
たとえばこんなあみだくじがあるとして、普通にシミュレーションするとしたら、 A は 5 回、B も 5 回、C は 4 回移動するよね。全体としては 3 回(A,B,C)シミュレーションをしている。
ここで言う 「n回やる」 は、
“あみだくじ1枚ぶんを、同じルールとして何回適用したか” という意味です。
あみだくじ1枚は、上の入口(A,B,C…)を入れると、下の出口(A,B,C…)が1つに決まります。
たとえばそのあみだが
という対応になっているとします(※図の横棒の数とは別)。
この「A→C という結果」そのものを 1回ぶんの結果 と呼びます。
「2回やる」はこういう意味です:
つまり「同じあみだ(同じ対応表)を繰り返し使う」操作です。
一般に
[ x \xrightarrow{1回} f(x) \xrightarrow{2回} f(f(x)) \xrightarrow{3回} f(f(f(x))) \dots ]
みたいに、「同じ規則 f を何回重ねたか」を言っています。
あなたが数えている
というのは、あみだ1枚を“1回たどる”ための内部の手数(横棒の本数や通過回数)です。
でも話題の「周期」「余り」は、内部の横棒の回数ではなく、
を扱っています。
たとえば対応が
A → F → C → A
になっているときの「3回」は
という意味で、あみだの中を逆走したり往復したりしているわけではありません。
毎回「上から下へ1枚たどり切る」を3回繰り返したら、入口ラベルがAに戻る、という意味です。
要するに:
この2つを別のものとして分けると混乱が解けます。
あまりが何の役に立つのかまだわからない。
続きを計算すると、
ということだよね。これを一般化するのにあまりを使ってる?
そうです。「余り」は、この“繰り返しの一般化”にそのまま使います。役に立つ点は、n回目の結果を、1回ずつ数え上げなくても決められることです。
あなたが書いた通り
なので、Aから始めたときの並びは
A → F → C → A → F → C → A → …
となって、3個(A,F,C)で同じ並びが繰り返されます。
ここで「3回で1周して元に戻る」というのは、
n回目がどれかを知りたいとき、nを3で割って
と書けます。
このとき
だから「n回後の位置」は余り (r) だけで決まります。
具体的には(Aから開始):
(100000000 ÷ 3) の余りは 1 なので、
と、1回ずつ数えずに決まります。
使っています。あなたが列挙した
という規則性を、
という短いルールに圧縮しているのが「余り」の役割です。