gists

q

スタートからゴールまで辿るあみだくじが1つなら、誰でも手で辿れます。それが1,000個あっても、コンピューターなら一瞬で計算できます。しかし、もしあみだくじが「1億個」並んでいたらどうでしょう。いくら高速なコンピューターでも、愚直に一つずつ辿っていては膨大な時間がかかってしまいます。

 ここで「数学的な工夫」が登場します。あみだくじの結果をよく観察すると、「AからスタートするとFに行く」「Fに行くとCに行く」「Cに行くとAに戻る」といったサイクル(規則性)が見つかることがあります。この場合、3回ごとに元の位置に戻るわけですから、1億回すべてをシミュレーションする必要はありません。1億を3で割った「余り」だけを考えれば、答えは一瞬で導き出せます。

どういう意味?日本語で平易に解説して。提案は一切しないで。

a

言っていることは、「同じ操作を何回も繰り返すと、途中から“同じ状態の繰り返し”になる(周期=サイクルができる)ので、全部を一個ずつ計算しなくても、最後の結果だけを短く計算できる」という意味です。


1. あみだくじを「操作」として見る

あみだくじを1回たどると、スタート地点(A,B,C…)が別の地点に移ります。

例えば

同様に

という対応があるなら、これは「同じあみだ操作をもう一回やると、また移動する」という意味になります。


2. 何回も繰り返すと「サイクル」ができる

上の例はこうつながっています:

A → F → C → A → F → C → …

つまり、Aから始めてあみだくじを1回やるとF、もう1回やるとC、さらにもう1回やるとAに戻ります。
このように、同じ場所の並びが繰り返される現象を「サイクル(周期)」と言っています。

この例の周期は3です(3回で元に戻る)。


3. 1億回やる必要がない理由

周期が3なら、何回やっても結果は「3で割った余り」で決まります。

つまり「3の倍数回ぶん」は、全部まとめて“変化なし(元に戻る)”と同じ扱いにできます。

だから、1億回についても

1億 ÷ 3 = 33,333,333 余り 1

となり、「3回の繰り返しセットを33,333,333回やったぶん」は全部相殺されて、結局「余りの1回分」だけ考えれば十分、ということになります。


4. この例だと結論はどうなるか

A → F → C → A… の周期3で

1億回は余り1なので、Aからスタートして1億回繰り返した最終地点は F になります。


要するに、「大量に同じあみだを繰り返すとき、途中の規則(周期)を見つければ、全部を順番に追わずに“余り”だけで一瞬で最終結果が分かる」という説明です。

q

本当に?たまたまじゃないの?そんな都合がいいことなんてある?

a

本当です。「たまたま」ではなく、必ずそうなります(条件は「同じあみだくじ=同じ対応」を何回も繰り返すこと)。

ポイントは、あみだくじ1回ぶんの結果は

という “行き先が1つに決まる対応” になっている、ということです。これは数学では「写像」と呼ばれるタイプのものです。


1) なぜ必ずサイクル(周期)ができるのか

スタート地点の候補が有限個(A〜Fなら6個)しかないのに、何回も繰り返すと

A →(1回後)→ どこか →(さらに)→ どこか → …

と無限に続きます。

でも行ける先は6個しかないので、途中で必ず同じ地点に再び来ます(鳩の巣原理:入れ物より玉が多ければ同じ箱に入る、という理屈)。

一度同じ地点に戻ったら、その後の動きは「同じ操作をする」ので必ず同じになり、

… → X → … → X → …

となって、そこから先は同じ並びの繰り返し(サイクル)になります。

これは運ではなく、有限個の状態に対して同じ規則を繰り返す限り必然です。


2) 「A→F、F→C、C→A」が都合よすぎる?について

例が「最初からAに戻る」形だから分かりやすく書いてあるだけで、別にそう“都合よく”なくてもサイクルはできます。

例えば

A → D → E → B → E → B → E → …

みたいに、最初は少し寄り道(前置き)があってから
E ↔ B の2周期に入る、という形も普通にあります。

ただし、あみだくじは「スタートは必ずどれか1つのゴールに一対一で対応する」ので、実はもっと強くて、

という性質になります。

なので「たまたま周期が見つかることがある」ではなく、必ず周期構造になっています


3) だから「1億回を全部やらずに余りで決まる」

ある地点が周期 (k) のサイクルに入っているなら、

となるので、結局 回数の (k) で割った余りだけ見れば、最終位置が決まります。

これは「都合がいいからそう見える」ではなく、同じ対応を有限回の状態に繰り返し適用する限り、必ず起きる数学的事実です。

q

n回やるともとに戻るという表現がよくわかりません。もとに戻るって何?あみだって一方通行だよね?シャトルランみたいに往復してんの?

a

「もとに戻る」は、あみだを“上から下へたどる1回分”という操作を、同じものでもう一度・さらにもう一度…と繰り返したときに、出発点として置いている“位置(ラベル)”が元のラベルに戻る、という意味です。往復しているわけではありません。


1. まず「1回のあみだ」を“対応表”だと思う

1つのあみだくじは、上の入口(A,B,C,…)を1つ選ぶと、下の出口(A,B,C,…のどれか)に必ず1つ決まって着きます。

例:

これは「あみだが一方通行」という感覚と矛盾しません。
一方通行なのは “そのあみだの中を上→下に進む” という意味であって、ここで言っている繰り返しは


2. 「もとに戻る」とは“ラベルが同じになる”こと

「3回やるともとに戻る」というのは、

A → F → C → A

となって、3回後のスタート位置(として扱うラベル)がAに戻る、ということです。

これは

ではありません。

あくまで「毎回、上から下へ一方通行にたどる」を繰り返していて、“何回目の入力がどのラベルになるか”が巡回しているだけです。


3. 直感的なたとえ(往復なし)

「次の行き先が書かれた札をめくる」みたいに考えると近いです。

このとき「3回めくるともとに戻る」は自然ですよね。
あみだを1回たどる=札を1回めくる、みたいなものです。


まとめると、「もとに戻る」は場所を往復する意味ではなく、同じ“あみだ1回分の規則”を繰り返し適用した結果、出発点としてのラベルが元と同じになるという意味です。

q

この例だと A → F → C → A で周期は 3 みたいだね。これで 3 だと確定するものなの?B,D,Eまだ見てないじゃん。4とか2になるかもしれないじゃん。

a

この例で「周期が3」と言っているのは、“Aから出発したときに辿る並び”の周期が3という意味です。全体(A〜F全部)について「周期が3で確定」と言っているわけではありません。


1) まず「周期」には2種類の言い方がある

(a) Aに関する周期(今回わかっているのはこっち)

Aから始めて同じ規則を繰り返すと

A → F → C → A → F → C → …

となる。これは

ので、Aの周期は3で確定です。
ここでの「確定」は、Aから出発する限り、という条件つき。

(b) 全体の周期(全員まとめて何回で元に戻るか)

A〜F全部について「何回やったら全員が元の位置に戻るか」は、B,D,Eがどう動くか次第です。


2) B,D,Eは別の周期を持ちうる(2や4もありうる)

あみだ1回分の対応は「全体としては、いくつかの輪っか(サイクル)に分かれる」と考えられます。

今回すでに

ことだけが分かっています。

残りの B, D, E は例えば

だから 「全体も周期3」とは限らないし、あなたの言う通り 2や4の周期が混ざる可能性はあります


3) じゃあ「余りだけ見ればいい」は嘘になる?

嘘ではありません。ポイントはこうです:

B,D,Eが2周期だろうが4周期だろうが、Aから始める限り一切関係しません(Aの軌道はB,D,Eに飛ばないので)。


まとめると、

という意味です。

q

じゃあ全部の道について計算したければ、A~Fのそれぞれの周期を求めればいいってこと?

a

はい、「全部(A〜Fそれぞれが、何回後にどこにいるか)」を知りたいなら、各スタートが属するサイクル(輪っか)を全部見つければいい、ということになります。

ただし「周期をそれぞれ求める」という言い方を、もう少し正確にするとこうです。


1) あみだ1回分は、全体として「いくつかの輪っか」に分解される

あみだを1回たどる操作は、A〜Fを別の文字に写す“対応”です。あみだくじの場合は出口が重ならないので、A〜Fは

という形に必ずなります。

例:すでに分かっているのは
(A F C) という3個の輪っか(3周期)。

残りの (B D E) も、例えば


2) 「全部の道」を知るのに必要なのは、各文字の“行き先の列”ではなく「サイクル分解」

A〜Fそれぞれについて別々に延々追うのではなく、

を全部押さえれば、任意の回数 n 回後の位置が一気に分かります。


3) どう使うか(概念として)

たとえば (A F C) のサイクルなら、n回後は
n を 3 で割った余りで決まります。

同様に、(B D) みたいな2周期のサイクルにいるなら、n を 2 で割った余りで決まります。

つまり「全体について知りたい」=「全サイクルについて、長さと並びを知りたい」です。


結論:方向性は合っています。ただ「A〜Fそれぞれの周期をバラバラに求める」というより、全体をサイクル(輪っか)の集合として求めると考えるのが本質です。

q

1億回すべてをシミュレーションする必要はありません。1億を3で割った「余り」だけを考えれば、答えは一瞬で導き出せます。

結局1億回分のシミュレーションが必要じゃないです?

それとも A → C → F → A であれば A を調べるだけで C と F も調べたことになるから手数を節約できるって話?

a

必要ありません。ここで言っている「一瞬で導ける」は、“1億回ぶんの逐次計算(A→…を1回ずつ1億回)をしないで済む”という意味です。

ポイントは次の2つです。


1) 「余りだけ見ればいい」=1億回を全部なぞらない、ということ

たとえば A が長さ3のサイクル

A → F → C → A → …

に入っているなら、3回やると状態(ラベル)が元に戻るので、

という理屈です。

ここで計算しているのは

であって、1億回のシミュレーションではありません


2) 「Aを調べるだけでCとFも調べたことになる」は“別の節約”として正しい

あなたの言う後半もその通りで、これは別の意味での節約です。

A を辿ってサイクルが

(A F C)

だと分かった瞬間に、

も、同じ輪っかの中の「位置がずれているだけ」だと分かります。なので A, F, C を別々に延々追う必要はないです。

ただし、元の文章の主旨の節約はまず

というほう(計算回数を1億→高々k程度に落とす)です。


まとめると:

q

Aからシミュレーションを開始して、A→F→C→Aとわかったとします。この時点であみだでの移動量はたったの 3 回であり、AとFとCについて確定した。

こういうことですか?

a

はい、その理解で合っています(ただし「確定した」の中身を正確に言うとよりクリアになります)。

この結果として「確定する」のは次の内容です。

1) Aについては n回後が全部決まる

Aからスタートして同じあみだを n 回繰り返した結果は、n を 3 で割った余りで決まります。

だから 1億回でも、3で割った余り(=1)を見るだけで Aの最終到達先はFと出ます。
ここで必要な「辿る作業」は最大でも 2回分だけで、1億回分は不要です。

2) FとCについても「同じ輪の中として」全部決まる

サイクルが (A F C) と確定したので、

も自動的に確定します。
つまり Aを辿って3回で輪が分かった時点で、A/F/Cそれぞれの “n回後” が全部決まった、と言ってよいです。

※ただし、B・D・Eがどうなるかは、この時点ではまだ分かりません(別の輪にいるかもしれないので)。

q

あまりってなんなの?比喩的に使ってます?

a

「余り」は比喩ではなく、割り算の“余り”(remainder)そのものです。

余り=「何周分(何セット分)を除いたら、最後に何回残るか」

たとえば周期が3(3回で同じ位置に戻る)なら、

…というふうに、3回ぶんを何セットやったかは最終結果に影響しません。
影響するのは、3回セットを全部取り除いたあとに 最後に残る 0回/1回/2回だけです。これが「余り」です。

具体例:1億回 ÷ 3 の余り

1億回を「3回セット」でまとめると

という意味は、

ということです。

だから「1億回後」を知りたいなら、「余りの1回だけ」見ればよくなります。

この例(A→F→C→A)だと

周期3なので、

1億回の余りは1なので、Aから始めた最終位置はF、という具合です。

要するに「余りだけ見ればいい」は、“周期の回数で割った余りが、最後の位置を決める”という、文字通りの割り算の話です。

q

n回やるってどういう意味?

 --->

 A ------------- A
    |   | |   |
 B ------------- B
      |  |   |
 C ------------- C

たとえばこんなあみだくじがあるとして、普通にシミュレーションするとしたら、 A は 5 回、B も 5 回、C は 4 回移動するよね。全体としては 3 回(A,B,C)シミュレーションをしている。

a

ここで言う 「n回やる」 は、

“あみだくじ1枚ぶんを、同じルールとして何回適用したか” という意味です。


1) 「1回やる」=“Aを入れたらどこに出るか”という対応を1回適用

あみだくじ1枚は、上の入口(A,B,C…)を入れると、下の出口(A,B,C…)が1つに決まります。

たとえばそのあみだが

という対応になっているとします(※図の横棒の数とは別)。

この「A→C という結果」そのものを 1回ぶんの結果 と呼びます。


2) 「n回やる」=“出た出口を次の回の入口にして”同じあみだをもう一度

「2回やる」はこういう意味です:

つまり「同じあみだ(同じ対応表)を繰り返し使う」操作です。

一般に

[ x \xrightarrow{1回} f(x) \xrightarrow{2回} f(f(x)) \xrightarrow{3回} f(f(f(x))) \dots ]

みたいに、「同じ規則 f を何回重ねたか」を言っています。


3) あなたの言う「Aは5回、Bも5回…横棒を移動」は別物

あなたが数えている

というのは、あみだ1枚を“1回たどる”ための内部の手数(横棒の本数や通過回数)です。

でも話題の「周期」「余り」は、内部の横棒の回数ではなく、

を扱っています。


4) 「3回やると元に戻る」の“3回”は「横棒3本」ではない

たとえば対応が

A → F → C → A

になっているときの「3回」は

という意味で、あみだの中を逆走したり往復したりしているわけではありません
毎回「上から下へ1枚たどり切る」を3回繰り返したら、入口ラベルがAに戻る、という意味です。


要するに:

この2つを別のものとして分けると混乱が解けます。

q

あまりが何の役に立つのかまだわからない。

続きを計算すると、

ということだよね。これを一般化するのにあまりを使ってる?

a

そうです。「余り」は、この“繰り返しの一般化”にそのまま使います。役に立つ点は、n回目の結果を、1回ずつ数え上げなくても決められることです。


1) 今起きていることを整理

あなたが書いた通り

なので、Aから始めたときの並びは

A → F → C → A → F → C → A → …

となって、3個(A,F,C)で同じ並びが繰り返されます

ここで「3回で1周して元に戻る」というのは、


2) 「余り」が効く理由(n回目を即決できる)

n回目がどれかを知りたいとき、nを3で割って

と書けます。

このとき

だから「n回後の位置」は余り (r) だけで決まります。

具体的には(Aから開始):


3) 例:1億回後は?

(100000000 ÷ 3) の余りは 1 なので、

と、1回ずつ数えずに決まります。


4) 「一般化に余りを使ってる?」への答え

使っています。あなたが列挙した

という規則性を、

という短いルールに圧縮しているのが「余り」の役割です。