问题:我有两个网络文件(比如NET1和NET2(-每个文件都有一组节点,每个节点都有唯一的ID,地理坐标X和Y。NET2中的每个节点都要有到NET1的n连接,n节点的ID将由最小直线距离确定。输出将具有NET1、NET2中节点的三个字段ID以及它们之间的距离。所有文件都采用制表符分隔的格式。
前进的一条路实现这一点的一种方法是,对于NET2中的每个节点,我们循环遍历NET1中的每一个节点,并计算所有NET1-NET2距离组合。按NET2节点id和距离对其进行排序,并为每个节点写出前四条记录。但问题是,在NET1上有近200万个节点,在NET2上有2000个节点,也就是说,在该算法的第一步中,需要计算和写入40亿个距离。。。运行时非常令人生畏!
请求:我很好奇你们当中是否有人面临过类似的问题。我很想听听你们关于任何可以用来加快处理速度的算法和数据结构的意见。我知道这个问题的范围很广,但我希望有人能给我指明正确的方向,因为我在为这种规模的数据优化代码方面的经验非常有限。
语言:我正在尝试C++、Python和R.
请提出想法!非常感谢您的帮助!
另一种可能的数据结构是八叉树(2D的四叉树(,它是更简单的数据结构(很容易实现(,但kd树可能更高效。