グラフをトラバースするためにコンシューマープロデューサーモデルを試すことができますが、純粋なモデルからいくつかの変更を加えます。
- 一度に要素ではなく、ブロック単位でキューの読み取りと書き込みを行い、ブロック単位の
visited
セットも更新します。それはあなたに同期時間を節約するでしょう-それはより少ない頻度で行われる必要があるでしょう。
- キュー(および
visited
セット)を変更する場合は、セットが最後にチェックされてからすでにアクセスされたデータを追加しないように、追加の作業を行う必要があります。
このアプローチでは、いくつかの頂点を数回検索する可能性が高くなりますが、キューとvisited
セットが更新される頻度でバインドできることに注意してください。
それは価値がありますか?これらのことで言うのは難しいです-それは多くのもの(グラフ構造、サイズ、キューの実装など)に依存しています。
いくつかのテストを実行し、「更新の頻度」のパラメーターを微調整して、どちらが経験的に優れているかを確認する必要があります。統計ツールを使用して(通常、ウィルコクソン検定がこれの事実上の標準です)、一方が他方より優れているかどうかを判断する必要があります。