我正在尝试解决一个问题,即我有一些现有的点(P)需要移动到某个方法生成的新位置,比如说(P`)。我想知道是否有一种优化算法可以找到最佳的点映射。
我试图通过使用在循环中选择最佳点的点之间的最小距离进行映射,但最后的那些最终得到最差的交易。我们如何确定最佳映射?
我们并没有尝试最佳的时间或空间复杂性,因为我们只有一些要点可以使用。以下就是我们现在所拥有的。
getMapping <- function(originalX, originalY, newX, newY)
{
#Maps original index to new index
dimemsion <- length(originalX)
#this matrix will hold distance of each original point from each of the new points
dist.matrix <- matrix(nrow = dimemsion, ncol= dimemsion)
#this is a brute force method
for(i in 1:dimemsion) # i traverses over original data points
{
for(j in 1:dimemsion) # j traverses over new data points
{
distance <- sqrt((originalY[i] - newY[j])^2 + (originalX[i] - newX[j])^2)
dist.matrix[i,j] = distance
}
}
#Best way to find mapping ?????
..... Not sure how to do it right now
return(dist.matrix)
}
#Use Case 1
originalX = c( 1, 2, 3, 4, 5, 6)
originalY = c( 1, 2, 3, 4, 5, 6)
newX = c( 1, 1, 3, 4, 5, 6)
newY = c( 1, 1, 4, 3, 2, 1)
print(getMapping(originalX, originalY, newX , newY))
如何从summationMatrix中找到最佳组合?或者任何解决此问题的算法/想法将不胜感激。我们在这里使用R作为语言。
由于
答案 0 :(得分:1)
首先,您最好使用dist
函数生成summationMatrix
(名称summationMatrix
是,imho,可怕,我会将其命名为dist.matrix或dist.mat)
其次,您需要的是Hungarian algorithm。