Algorithm 最小行程路径(N-1)1D点

Algorithm 最小行程路径(N-1)1D点,algorithm,Algorithm,为了到达所有(N-1)点,通常会使用MST/Traveling Sales Man问题,但我发现了一个需要解释的方程式,用于计算1D点的O(1)中的此类问题 min( min(abs(b[0]-a) + b[n-2]-b[0], abs(b[n-2]-a) + b[n-2]-b[0]), min( abs(b[1]-a) + b[n-1]-b[1], abs(b[n-1]-a) + b[n-1] - b[1])) 其中,b[]是给定点的数组,a是起始位置。 问题的根源和方程式来自合力: 我希

为了到达所有(N-1)点,通常会使用MST/Traveling Sales Man问题,但我发现了一个需要解释的方程式,用于计算1D点的O(1)中的此类问题

min( min(abs(b[0]-a) + b[n-2]-b[0], abs(b[n-2]-a) + b[n-2]-b[0]), min( abs(b[1]-a) + b[n-1]-b[1], abs(b[n-1]-a) + b[n-1] - b[1]))
其中,
b[]
是给定点的数组,
a
是起始位置。
问题的根源和方程式来自合力:

我希望您能帮助我解释这一数学操作。

好吧,看看这个,它没有提到点的输入是按某种顺序排序的。
只有首先对输入点进行排序,然后是,通过计算该方程,找到最小路径为O(1),才能使用您给出的方法。不过,总的运行时复杂性将是O(nlogn)

方程解释:
将其视为所有点都在一行中(排序后)。给您一个起点,您需要访问
n-1
点,这意味着您需要访问除一个点之外的所有点。由此可知,最小路径为以下两种路径之一:

  • 除第一点外的所有点
  • 除最后一点外的所有点
  • 你给出的方程式正好计算出了这一点。

    好吧,看看,它没有提到点的输入是按某种顺序排序的。
    只有首先对输入点进行排序,然后是,通过计算该方程,找到最小路径为O(1),才能使用您给出的方法。不过,总的运行时复杂性将是O(nlogn)

    方程解释:
    将其视为所有点都在一行中(排序后)。给您一个起点,您需要访问
    n-1
    点,这意味着您需要访问除一个点之外的所有点。由此可知,最小路径为以下两种路径之一:

  • 除第一点外的所有点
  • 除最后一点外的所有点

  • 您给出的方程式正好计算了这一点。

    您需要更清楚地了解此方程式的作用以及您想了解的内容。请编辑您的问题,以显示您迄今为止所做的尝试。您应该包含一个最小的、完整的、可验证的代码示例,然后我们可以尝试帮助您解决具体问题。您需要更清楚地了解这个等式应该做什么以及您想了解什么。请编辑您的问题,以显示您迄今为止所做的尝试。您应该包含一个最小的、完整的、可验证的代码示例,然后我们可以尝试帮助您解决特定问题。谢谢,但考虑到这段更干净的代码,如果我错了,请纠正我。有四种情况,因为负指数意味着从排序数组的尾部开始。我不完全明白你的意思。为什么有负指数?这个公式适用于每
    n>=2
    .Hey@A.Sarid,负索引是告诉Ruby或Python从数组尾部开始的一种方法。这是最后一个元素,倒数第二个。。等等。感谢您的回复和帮助。谢谢,但考虑到这段代码更简洁,如果我错了,请纠正我。有四种情况,因为负指数意味着从排序数组的尾部开始。我不完全明白你的意思。为什么有负指数?这个公式适用于每
    n>=2
    .Hey@A.Sarid,负索引是告诉Ruby或Python从数组尾部开始的一种方法。这是最后一个元素,倒数第二个。。谢谢你的回复和帮助。