2017-05-18 16 views
0

これはパラレルチェス検索のためのshared hashtable algorithmに関する概念的な質問です。パラレルチェス検索の共有ハッシュテーブル

私は4つのスレッドを生成するアルファベット検索を実装しました。各スレッドは検索を行い、最良の移動/評価を返します。しかし、私はスレッドが異なる結果を返す検索不安定性を観察しています。リンクで説明されているロックレスハッシュテーブルを使用しているため、一部のエントリが上書きまたは破損する可能性がありますが、破損したデータは実際には使用されません。

検索スレッドが異なる結果を返すのはなぜですか?これは並行検索の期待される結果ですか、それとも問題ですか?予想どおり、どのような選択を選択するのか

答えて

0

パラレル検索は、非確定的であると予想されます。転置テーブル(別名ハッシュテーブル)を介して知識を共有すると、この効果が得られます。

パラレル検索を実行すると、正しい結果が何であるかを簡単に判断する方法がありません。だから、あなたは何をすることができますか? 4つのスレッドがある場合は、多数決を試みることができますが、それを行うエンジンは認識していません。

転置テーブルの使用を開始すると、逐次検索アルゴリズムで検索の安定性が問題になることに注意してください。

転置テーブルで順次検索アルゴリズムを実行し、後で転置テーブルをリセットせずに同じ検索を繰り返すと、同じ結果が得られるとは限りません。パラレル検索の場合も同じですが、パラレル検索は決定的ではありません。

検索の安定性と決定論は同じものではありません:順次検索では

  • 、あなたは(デバッグに便利)決定論を達成することができます。並列検索では、実際にはそれを避けることはできません。
  • 逐次検索も並列検索も、実際には検索の安定性を排除できません。しかしながら、良い探索アルゴリズムでは、それは比較的起こりにくいはずである。

転置テーブルが検索不安定になる理由については、this questionを参照してください。

関連する問題