我一直在阅读算法设计手册。我有同样的问题,在这个最近邻算法中“来自不同的顶点链”是什么意思?但我无法遵循那里的答案。
一个不同的想法可能是重复连接最近的一对端点,它们的连接不会产生问题,例如循环的提前终止。每个顶点都从它自己的单个顶点链开始。将所有内容合并在一起后,我们将最终得到一个包含其中所有点的链。连接最后两个端点给了我们一个循环。在执行此最近对启发式的任何步骤中,我们将有一组可用于合并的单个顶点和顶点不相交的链。在伪代码中:
ClosestPair(P)
Let n be the number of points in set P.
For i = 1 to n − 1 do
d = ∞
For each pair of endpoints (s, t) from distinct vertex chains
if dist(s, t) ≤ d then sm = s, tm = t, and d = dist(s, t)
Connect (sm, tm) by an edge
Connect the two endpoints by an edge
Please note that sm and tm should be sm and tm.
我无法遵循上述逻辑。请演示书中给出的简单示例的计算:-21, -5, -1, 0, 1, 3, and 11
。逐步显示计算,以便您可以轻松地遵循上面的代码。