以优化的方式将现有2D点移动到新生成的2D点

时间:2016-06-29 19:29:33

标签: r algorithm optimization

我正在尝试解决一个问题,即我有一些现有的点(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作为语言。

由于

1 个答案:

答案 0 :(得分:1)

首先,您最好使用dist函数生成summationMatrix(名称summationMatrix是,imho,可怕,我会将其命名为dist.matrix或dist.mat)

其次,您需要的是Hungarian algorithm