保証された終了と保証された正しさ (リーダーは 1 つだけ) の両方を持つ確率論的 (匿名) リーダー選出アルゴリズムは存在しません。私の記憶が正しければ、分散システムに関する N. Lynch の本にその証拠があります。
ただし、アルゴリズムの実行時間が十分に長いため、非終了の確率限界がゼロのアルゴリズムが存在します。さらに、予想される実行時間はかなり短いです (AFIR、k 個のイニシエーターに対して ln(k) のオーダー)。
このようなアルゴリズムの主なアイデアは、2 番目のアプローチに従います。ただし、複数のリーダーがいる場合は単純にプロセスを再開しないでください。最終ラウンドの勝者のみが次のラウンドの候補になることを許可してください。
編集 1-3:
非匿名のリーダー選挙を要求する場合、終了を保証するいくつかの確率的アルゴリズムがあります。たとえば、通常のリング アルゴリズムを使用して、特定の確率でメッセージを遅延させます。ID が小さいほど、遅延の可能性が高くなります。このようにして、勝つ可能性が低いメッセージが早期に消去され、全体的なメッセージが少なくなります。
非匿名メンバーに対して異なる結果が必要な場合は、たとえば 2 フェーズ アルゴリズムを使用できます。
- 古典的なリーダー選挙を実行 => 最高の ID を持つノード A が勝つ
- A にサイコロを振らせて、実際のリーダーを決定します。
運の要素も分散できます。
- どのノードも ID のセット (S) を知っています (そうでない場合は、フラッディング アルゴリズムを使用して通知します)
- すべてのノードが偶然に ouf S の ID を選択し、それを他のノードに送信します。
- 最も頻繁に名前が付けられた ID が勝ちます。そのような ID が複数ある場合は、決定論的な方法でそのうちの 1 つを選択します (中央値など)。
終了と非決定論的な結果は、両方のアルゴリズムに付与されます。ただし、最初のメッセージの平均複雑度は低く ( n log n対n² ; 最悪の場合の複雑度は同じ)、公平です (つまり、ID が勝つ確率は均等に分散されますが、2 番目には当てはまりません)。アルゴリズム)。少なくとも最後の欠点は、より洗練されたアルゴリズムによって排除できると確信していますが、ここでの問題は、そのようなアルゴリズムの一般的な存在についてでした。