各ノードにが含まれるようなグラフ表現があります(int id, String categoryName)
。また、約500,000ノードで構成されています。ここで、categoryName"computing"
がグラフに存在するかどうかを確認したいとします。つまり、BSFメソッドを使用するように、グラフ全体をトラバースする必要がありますか?(私がここで間違っている場合は私を訂正してください)。そのcategoryNameが存在するかどうかを確認するのは今ではかなり遅いです(最大約3分かかります)。文字列値の検索と比較の速度を向上させる方法についてアドバイスはありますか?
質問する
121 次
1 に答える
2
他にデータがない場合は、はい、グラフを検索する必要があります。
ただし、文字列から実際のノードにマップするMap<String,Node>
(ノード クラスの場所)を前処理して使用し、特定のノードに関連するノードがあるかどうかをすばやく見つけることができます。Node
String
以下を使用して、文字列からノードを取得できます。map.get(string)
TreeMap
(O(logn)のシークと挿入時間があり、順序付けられている)とHashMap
(ハッシュテーブルを実装し、O(1)
平均ケースのシークと挿入時間がある)を使用できます
注: これは、重複がないことを前提としています。つまり、2 つの異なるノードを表す文字列はありません。
この仮定が正しくない場合は、Guava Multimapなどを使用できます
于 2012-10-28T16:22:13.173 に答える