グラフで、次のプロセスを実行します。
- 最初、すべてのノードは色付けされていません。
- には色付けされていないノードがありますが、色付けされていない各ノードは次のことを行います。
- ランダムな実数を選択し、それを近隣のすべてに送信します。
- その数を近隣の数と比較します。自分の数が厳密に最小の場合、隣人は自分自身を赤く塗りつぶし、隣人に通知します。
- 隣人が赤くなった場合、このノードは自分自身を黒く塗ります。
例えば:
- グラフがabcdeというパスであるとします。
- 最初のステップの数値が次のとおりであるとします:1-2-0-3-4。
- ノードaとcは赤く塗られています。ノードbとdは黒く塗られています。
- 2番目のステップでは、ノードeのみが未着色のままです。最小限に抑えられているため、赤く塗りつぶされます。
私の質問は:すべてのノードが色付けされる前にこのプロセスが実行する平均ステップ数は何ですか?
私の現在の計算では、推定が導かれますが、これは真実であるにはあまりにも良すぎるようです。ここに計算があります:
d個の隣接ノードを持つノードを考えます。vがその近傍の中で最小になる確率は、1 /(d + 1 )です。これが発生した場合、vとそのすべての近傍が色付けされます。したがって、各ステップで色分けされる頂点の予想数は、(d + 1 )/(d + 1 )= 1ノードあたり1です。したがって、各ステップで色分けされる頂点の予想される総数はO (n )なので、O (1 すべてのノードが色付けされる時間。
この分析が間違っている場合(おそらくそうです)、実際のステップ数はいくつですか?
編集:@JukkaSuomelaによって指摘されているように、上記のアルゴリズムはMetivier et al、2011によるものであり、これらの講義ノートで説明および分析されています。彼らは、実行時間がことを証明します。
しかし、私はまだこの分析がタイトであると確信していません。チェックしたすべてのグラフで、アルゴリズムは予想時間内に完了したようです。
私の質問は今です:このアルゴリズムが実際に平均でステップを必要とする最悪の場合のグラフは何ですか?