問題: 2 つのネットワーク ファイル (たとえば、NET1 と NET2) があります。それぞれに、各ノードの一意の ID と地理座標 X と Y を持つ一連のノードがあります。NET2 の各ノードには、 NET1 へのn接続と ID n 個のノードは、最小直線距離によって決定されます。出力には、NET1、NET2 のノードの 3 つのフィールド ID、およびそれらの間の距離が含まれます。すべてのファイルはタブ区切り形式です。
これを実装する 1 つの方法 は、NET2 の各ノードに対して、NET1 の各ノードをループし、すべての NET1-NET2 距離の組み合わせを計算することです。NET2 ノード ID と距離で並べ替え、各ノードの最初の 4 つのレコードを書き出します。しかし問題は、NET1 に 200 万近くのノード、NET2 に 2000 のノードがあることです。これは、このアルゴリズムの最初のステップで 40 億の距離を計算して書き込む必要があることです...そしてランタイムは非常に厳しいものです!
リクエスト: 同じような問題に直面した人がいるかどうか知りたいです。処理を高速化するために使用できるアルゴリズムとデータ構造について皆さんから聞いてみたいです。この質問の範囲が非常に広いことは知っていますが、この規模のデータのコードを最適化する経験が非常に限られているため、誰かが正しい方法を教えてくれることを願っています.
言語: C++、Python、R で試しています。
アイデアをどんどん出してください!大変助かります!