NISHIO Hirokazu[Translate]
ダブリングではなくループ検出
ループ検出で解くのが素直な問題を「これはダブリングだな」と勘違いすることが2回あったのでページにした

頂点数VのグラフでN個先を読む時
O(VlogN)の前処理で、本処理をO(logN)にできる
本処理をV回以上繰り返すなら得
logNが大きすぎるとこれでも無理
単一始点なら最悪O(V)で前処理できる
任意始点の時にどうすれば良いか?素朴にやればO(V^2)
Nがループに入るくらい大きい場合には、ループに入るまでの距離を引いて、ループ長で剰余を取る
O(1)
比較
任意始点でNが高々Vならダブリングの方が前処理が軽い
単一始点ならループ検出の方が有利
任意始点でもNがやたら大きいならループ検出

"Engineer's way of creating knowledge" the English version of my book is now available on [Engineer's way of creating knowledge]

(C)NISHIO Hirokazu / Converted from [Scrapbox] at [Edit]