Algorithm 测量项目与已知项目的匹配算法

Algorithm 测量项目与已知项目的匹配算法,algorithm,matching,Algorithm,Matching,我有一组测量项目(m1、m2、m3…)和一组实际项目(r1、r2、r3…)。真实项目的集合大于测量的项目(并非所有项目都被测量),我正在寻找一种算法,将测量的项目与最近的真实项目配对。我有一个函数错误(meas,real),它将计算一个测量项目与实际项目的接近程度(返回一个浮点数,越低越接近) 我已经实现了一个贪婪算法,该算法将获得误差最小的对,也就是说,我计算每个可能对的误差,并获得误差最小的对,将它们从集合中移除,然后重复,直到我匹配了每个测量项目 这种方法是可行的,但我正在寻找一种算法,它

我有一组测量项目(m1、m2、m3…)和一组实际项目(r1、r2、r3…)。真实项目的集合大于测量的项目(并非所有项目都被测量),我正在寻找一种算法,将测量的项目与最近的真实项目配对。我有一个函数错误(meas,real),它将计算一个测量项目与实际项目的接近程度(返回一个浮点数,越低越接近)

我已经实现了一个贪婪算法,该算法将获得误差最小的对,也就是说,我计算每个可能对的误差,并获得误差最小的对,将它们从集合中移除,然后重复,直到我匹配了每个测量项目

这种方法是可行的,但我正在寻找一种算法,它可以最小化每对的所有error()之和

我想这是一个常见的问题,可能有几种解决方法。如果是这样的话,如果你能提供链接或名称在互联网上查找它,那就太好了。

在我看来,这个问题类似于空间分割问题,在平面上给定一组点(通常你可以解决k维度空间的问题),你必须找到一个到查询点的闭合点

编辑

我可以将这个问题与以下问题联系起来:

最小成本流问题是找到通过流网络发送一定量流的最便宜的方法

因此,用两组不同的节点构造一个图(去掉一些不必要的部分)。M中的每个节点连接到R中的每个节点。顶点的权重由
error
函数计算

任务是将d值从s传输到t,使传输值尽可能低。您必须修改原始问题以满足您的需要。例如,在传输d、e.t.c时,应使用从s到M的每个顶点


我不确定这是否正确,但值得考虑

是的,对于欧几里德空间中的贪婪算法,可以使用kd树,而不是计算每对的距离。但是,在本例中,error()函数相当复杂,既不是线性的,也不是几何的,我正在寻找一种使总误差最小化的解决方案。集合有多大?大约50个测量值与大约5000个项目的集合配对。感谢您的努力!我不确定这是否是解决问题的最佳方法,这是相当不同的,因为这里的值d被划分在不同的分支中,就像电阻网络中的电流一样。@siritinga您需要一个积分最小成本流(这是可行的,因为LP是完全单模的),但是对于这个网络,你应该使用匈牙利算法。一个真实的项目只能与一个测量项目匹配吗?如果是这样的话,那么我建议你看一个测量的项目只能链接到一个真实的项目,但一些真实的项目将保持不成对,因为它们更丰富。感谢链接,它看起来很有趣,但我必须检查是否可以不分配任务(或人员)(以维基百科为例)。一个可能的解决方法是添加额外的假测量项目,任何匹配的成本为零。我想这是一个非常高的成本,因此它们总是被丢弃。问题是度量值的数量比实际项目的数量少100或1000倍,但我认为我可以做一个预过滤器来丢弃大部分度量值。@siritinga有一些更有效但不太方便的方法来扩展匈牙利算法。总存储量将根据测量和实际项目的数量进行排序。