ゴシッププロトコル

分散システムにおいて、ゴシッププロトコル（gossip-protocol, ゴシッピング、ゴシップアルゴリズム、エピデミックアルゴリズム、epidemic algorithms, epidemic protocol）とは、システムの参加者間で繰り返し確率的に情報を交換する手法であり、情報の拡散や統計値の計算などに利用される。
ゴシッププロトコルではランダムに選んだ相手と情報を交換し、自身が持つデータの更新を繰り返す。システムの参加者が不定期的に増減して全体を把握できない状況や、一時的に通信できない場合でも情報を伝搬できる。病気が伝染する様子に似ていることから、エピデミックアルゴリズムとも呼ばれる。
歴史.
1970年代初頭、グラフ理論の分野において「ゴシップ問題 (gossip problem)」あるいは「電話病 (telephone disease)」と呼ばれる問題が議論された。この問題は、n人がそれぞれ持つ異なる情報を電話を使って交換する場合、全員がすべての情報を得るには何回の通話が必要かという問題である。
その後、1987年にゼロックスのパロアルト研究所において、大規模ネットワークにおけるデータベースの複製方法としてゴシッププロトコルが提案された。
分類.
ゴシッププロトコルは以下の2種類の変種がある。
アンチエントロピーでは各参加者が繰り返しランダムに選んだ相手と通信し、互いが持つ情報を比較して新しい情報を交換する。一方、ルーモアモンガリングでは新しい情報を得た参加者がランダムに選んだ相手にその情報を伝える処理を繰り返す。そして、相手がその情報をすでに知っていたという状況が繰り返されると、情報の伝達を停止する。このとき、一定回数を越えた際に止める方法と、確率的に停止する方法がある。
ルーモアモンガリングでは一部の参加者に情報が伝わらないことがあるが、効率は良い。一方、アンチエントロピーでは時間が経てば確実にすべての参加者に情報が行き渡るものの、その時点で互いが知っている情報を比較する処理のコストが高い。ブロードキャストやルーモアモンガリングでおおまかに情報を拡散した後、補助的に低い頻度でアンチエントロピーを使う方法も提案されている。
データベース複製以外の応用.
データベースの複製以外の応用としては、各参加者が持つ値の平均値など、統計値の計算がある。
各参加者はまず自分が持つ値を暫定的な平均値とする。そして各参加者と暫定値を交換し、自分の暫定値と相手の暫定値の平均を新しい暫定値とする。これを繰り返すと、各参加者が持つ値は平均値に近付いていく。同様の方法で、最大値や最小値なども計算できる。