[解決済み] サイクルリンクリストのサイクル開始ノードを見つけるにはどうしたらいいのでしょうか?
2022-04-19 13:21:51
質問
カメとウサギが出会うことでループが成立することはわかったが、カメをリンクリストの先頭に移動させ、ウサギを出会いの場にとどめ、その後両者を1歩ずつ移動させると、どのようにしてサイクルの始点で出会うことができるのだろうか?
解決方法は?
これは Floydの周期検出アルゴリズム . このアルゴリズムの第2段階について質問しているのですが、サイクルの一部であるノードを見つけた後、どのようにして 開始 ということでしょうか?
フロイドのアルゴリズムの最初の部分では、ウサギはカメの1歩につき2歩移動します。 もし亀とウサギが出会うことがあれば、サイクルが存在し、会合点はサイクルの一部であるが、必ずしもサイクルの最初のノードとは限らない。
亀とうさぎが出会ったとき、Xを満たす最小のi(亀が歩いた数)を求めました。 <サブ i = X <サブ 2i . を得るためのステップ数をmuとすると、X <サブ 0 からサイクルの開始点までを表し、サイクルの長さをλとする。 すると、i = mu + a ラムダ、2i = mu + b ここで、aとbは亀とうさぎが何周したかを表す整数である。引き算をすると となり、i は整数の倍数である。 のラムダを使用する。 したがって、X <サブ i + mu = X <サブ μ . X <サブ i は、亀とウサギの会合点を表しています。 亀を出発点のノード X <サブ 0 そして、亀とウサギを同じ速度で走らせると、さらにmu歩で亀はXに到達します。 μ に到達し、ウサギはX <サブ i + mu = X <サブ μ ということで、2つ目の会合点はサイクルの開始を意味する。
関連
-
[解決済み] 円周率の計算が正確かどうかを判断するにはどうしたらよいですか?
-
[解決済み] GenerativeアルゴリズムとDiscriminativeアルゴリズムの違いは何ですか?[クローズド]
-
[解決済み] Googleの "Did you mean? "はどうなっているのか?アルゴリズムの仕組みとは?[クローズド]
-
[解決済み】広さ優先と深さ優先の比較
-
[解決済み] 数の素因数分解の最大値を求めるアルゴリズム
-
[解決済み] フラットな構造から効率的にツリーを構築する方法とは?
-
[解決済み] 幅優先探索を再帰的に実行する
-
[解決済み] 高次元データにおけるニアレストネイバー?
-
[解決済み] 2つの矩形の交差を検出するアルゴリズム?
-
[解決済み] 短い文字列のための効率的な圧縮アルゴリズム[closed]。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
その他 - 等差数列はいくつあるか?(ジャワ)
-
[解決済み] 2つの緯度経度点間の距離を計算する?(ハバーシンの公式)
-
[解決済み] クレジットカードの番号からカードの種類を判別する方法は?
-
[解決済み] 地図上のA地点からB地点への道順を計算するアルゴリズムは?
-
[解決済み] Big-O表記とLittle-O表記の違いについて
-
[解決済み】このゲームの数学的/計算原理は何ですか?
-
[解決済み] 任意の二分木における2つのノードの最小公倍数の先祖を見つけるには?
-
[解決済み] 高次元データにおけるニアレストネイバー?
-
[解決済み] 行または列に 0 が含まれる場合、行列のすべてのセルに 0 を設定します。
-
[解決済み] 緯度・経度・kmの簡単な計算方法は?