给定平面上的一组点,找到由这两个点中的任何两个点形成的最短线段.
我怎样才能做到这一点?琐碎的方法显然是计算每个距离,但我需要另一种算法进行比较.
我在二维网格上有很多点.我想将点分组成对,同时最小化对之间的欧几里德距离的总和.
例:
Given the points:
p1: (1,1)
p2: (5,5)
p3: (1,3)
p4: (6,6)
Best solution:
pair1 = (p1,p3), distance = 2
pair2 = (p2,p4), distance = 1
Minimized total distance: 1+2 = 3
Run Code Online (Sandbox Code Playgroud)
我怀疑这个问题可以通过匈牙利算法的变体解决吗?
解决问题的最快方法是什么?
(小评论:我总是应该少于12分.)
algorithm mathematical-optimization linear-programming computational-geometry