うさぎとかめでル`プしているか登僅する?コンピュ`タ尖垢僥(CS)の中易さ #1

はじめに

こんにちは^鎮纏聞斂縒_司酵怎白曳蛍-‐VIP廨炒渦ァ森ぱР織灰鵐團紿`タ尖垢僥親4定の直uです。僥伏綣仝椽磐綣々に廖んでいます。
書指はCS┘灰鵐團紿`タ尖垢僥の蛍勸をごB初します。
CSというと恷除はAI繁垢岑嬬ばかりが廣朕されがちですが、AIに岷俊はvSしないところでも中易い弊順はレがっているのです。

ところで、峻さんは參和の方塀をて採か櫃鼎ことはありますか

1/7=0.142857142857…
5/108=0.04629629…

gはこれらは、揖じ方忖のKびがo泙棒Rり卦される仝儉h弌方々になる護り麻です。
繁gがこれをみたr、岷湖議にル`プしているなと登僅するのはgです。
では、コンピュ`タにこのル`プをつけさせるには、どうすれば措いでしょうか

匯つの圭隈は、竃てきた方忖をすべてhしておくことです。
^肇のhと曳^すればいつかル`プはつかります。
しかし、この圭隈は方忖が採嵐蓐もAく栽、hするためのメモリが湯寄になり、_Jにもrgがかかってしまいます。

アルゴリズムのB初

そこで鞠するのが、書指ごB初する仝うさぎとかめのアルゴリズム々[1]です。
ここでイソップ國の仝うさぎとかめ々を房い竃してください。怎の堀いうさぎと、Wいかめが尸するおです。
このアルゴリズムでは、その蒙罿鬚Δ泙旋喘します。

箭として、參和のように方忖がMむコ`スを深えます。 1 ★ 2 ★ 3 ★ 4 ★ 5 ★ 6 ★ 4 ★ 5 ★ 6 … 1, 2, 3とMんだ瘁、4, 5, 6のgをぐるぐると指りAけます
このコ`スに、うさぎとかめを恠らせてみましょう。
參和のル`ルに惄辰董△Δ気とかめは咾ます。

  • かめ
    • 1指に仝1つ々Mむ
  • うさぎ
    • 1指に仝2つ々Mむ┐めの2蔚の堀さ

それでは、}を盾いていきます。
1.兜豚了崔
 うさぎとかめは揖rに仝1々の仇泣からスタ`トします。

2.恷兜の卞
 かめは仝2々へ、うさぎは2つMんで仝3々へ佩きます。

3.肝の卞
 かめは仝3々へ、うさぎは仝3々から4★5とMんで仝5々へ佩きます。

4.その肝の卞
 かめは仝4々へ秘ります。 うさぎは仝5々から6★4とMんで、なんと仝4々へってきます。

お櫃鼎でしょうか
ここで2繁は仝4々の仇泣でばったり竃氏いました。

もしコ`スが匯岷でル`プしていなければ、怎の堀いうさぎはかめを崔いてきぼりにして、屈業と氏うことはありません。
しかし、コ`スがル`プしている栽、枠^を恠るうさぎが巓指Wれになって、瘁ろから栖るかめに弖いついてしまうのです。
つまり、仝2繁が竃氏った愁覃`プが贋壓する々と登協できるわけです。

これがCSの中易いところです。
仝すべての荷恬をする々という薦室ではなく、仝堀業の`う2つのポインタ々を喘吭する々という垢健だけで、富ないメモリで互堀に}を盾Qできるのです。
參和にRust冱Zでg廾した箭を幣します。?

g佩したY惚が參和の宥りです。

貭擇縫覃`プがあるかどうかが奮できますね!

まとめ

書指はうさぎとかめのアルゴリズムで、ル`プが貭擇砲△襪どうかを奮する圭隈についてB初しました。
このアルゴリズム參翌でもCS蛍勸には中易い坪否が謹蛍に根まれます。
書瘁もこのなCS蛍勸の坪否をB初していきたいと房います。

歌深猟
[1] Educative.io, “Why does Floyd’s cycle detection algorithm work?,” Educative. [オンライン]. URL<https://www.educative.io/answers/why-does-floyds-cycle-detection-algorithm-work>. [E晩:2025-12-07].