计算最小距离 一个dataTable里面的第一列为x坐标,第二列为y坐标,有若干条记录,计算每个点到其他点最小距离放在第三列,怎样让计算速度跟快?现在10000条数据7分多钟。要求控制在30秒内。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 可以参考下最短路径算法。Dijkstra算法 有几个想法,也许可以帮助提升搜索速度1.这些点一定是成对出现的,A点的最近点是B的话,B点的最近点也是A。 然后A和B就一定不是C点的最近点。可以利用这个特点排除掉已经配对的,这样数据就越来越少2.不需要遍历整个集合,首先将数据按第一顺序x坐标,第二顺序y坐标排序。对第一个点A点,从第二个点B点开始计算,由于A点到B点的距离是斜边,所以AB间的距离小于两点X坐标差和Y坐标差之和,AB < ∆x + ∆y. 同理,点C,AC之间的距离大于A点和C点X坐标差并且大于Y坐标差。AC > ∆x` and AC > ∆y` .如果AC之间的X坐标差大于已知最近点的X坐标差Y坐标差之和,即 ∆x` > ∆x + ∆y . 那么从C点之后就不用查找了,那些肯定不是。所以,由算法2找到第一个点的匹配点后,将这对点从数据源移除,然后继续 首先将数据排序,按X升序排序,X相同的按Y升序排序。计算的时候,先查找范围(X+/-Z,Y+/-Z)内是否有点,有的话,计算距离。如果距离D小于Z,那距离D就是最小的距离,如果距离D大于Z则将查找范围扩大一倍(X+/-2*Z,Y+/-2*Z)。范围Z根据这些无序值的范围合理设置。 难道你任务再多的线程也只是用到一个核。系统还得给你的线程分配单元片。你以为还真的快了。这个是指在一台机器上的。当然你的线程去调用其他的资源。比如sql,网络,串口等 结果你懂的。 什么是两点间的距离? 欧式距离吗?如果是,感觉是典型的floyd算法应用。速度很快。http://www.cnblogs.com/davidluo/articles/1799811.html 怎么给出的结果不正确? datagridview 的数据显示(winform) 关于邮件群发问题 序列化将两个数组分次保存进一个文件。读取出问题。希望高手解答。 C# winform中DataGridView中有一个ContextMenuScript 怎么样实现右键对本行数据的修改 删除 c# 字符串比较,哪里可以了解到字符串池机制的概念 C#:如何在csv文件里再加一列。 水晶报表的两个问题 这个效果是用什么控件实现的 求助:关于ado.net中连接问题???? |ZYCWCF| 如何给Windows的Closed事件进行绑定命令 谢谢 HttpWebRequest post 提交重复数据
。Dijkstra算法
可以利用这个特点排除掉已经配对的,这样数据就越来越少2.不需要遍历整个集合,首先将数据按第一顺序x坐标,第二顺序y坐标排序。
对第一个点A点,从第二个点B点开始计算,由于A点到B点的距离是斜边,所以AB间的距离小于两点X坐标差和Y坐标差之和,AB < ∆x + ∆y. 同理,点C,AC之间的距离大于A点和C点X坐标差并且大于Y坐标差。AC > ∆x` and AC > ∆y` .如果AC之间的X坐标差大于已知最近点的X坐标差Y坐标差之和,即 ∆x` > ∆x + ∆y . 那么从C点之后就不用查找了,那些肯定不是。所以,由算法2找到第一个点的匹配点后,将这对点从数据源移除,然后继续
再多的线程也只是用到一个核。系统还得给你的线程分配单元片。你以为还真的快了。这个是指在一台机器上的。当然你的线程去调用其他的资源。比如sql,网络,串口等 结果你懂的。
如果是,感觉是典型的floyd算法应用。
速度很快。
http://www.cnblogs.com/davidluo/articles/1799811.html