3

グラフとグラフ トラバーサルについてもう少し学習する方法として、Flame クラスタリング アルゴリズムを実装しています。最初のステップの 1 つは、K 最近傍グラフを作成することです。ノードのリストを介して、各ノードを接続すると、最も近い 5 つの隣接ノードになります。ノードから開始し、他のノードのリストを反復処理し、配列内で最も近いノードを保持して、上位 n を超えるすべてが破棄されるようにすることを考えました。さて、リストを並べ替えて上位 n 個のエントリを保持するだけでこれを行うことができますが、メモリに保持するものを少なくしたいので、最終的な配列を取得してその配列を次のように更新する方法があるかどうか疑問に思っていました。私は繰り返し、

また、これはK-Nearest Neighbor Implementation in Javaの複製ではないことに注意してください。KNNG は KNN とは異なります。

4

2 に答える 2

1

最も効率的な方法は、 https://github.com/tdebatty/java-graphs#bounded-priority-queueのようなバインドされた優先度キューを使用することだと思い ます

于 2015-04-09T19:43:08.743 に答える
1

リストにソートされた最初の n ノードを配置します。次に、残りのノードを反復し、現在のリストに収まる場合 (つまり、上位 n ノード)、リスト内の対応する位置に配置し、最後の上位 n ノードを破棄します。上位 n リストに収まらない場合は、破棄します。

for each neighborNode
 for(int i = 0; i < topNList.size(); i++){
       if((dist = distanceMetric(neighborNode,currentNode)) > topNList.get(i).distance){
             topNList.remove(topNList.size()-1)
             neighborNode.setDistance(dist);
             topNList.add(i, neighborNode);
       }
于 2012-08-06T14:47:28.683 に答える