不要从“算法设计手册”中理解最近对启发式

时间:2013-05-31 05:22:19

标签: algorithm

我一直在阅读算法设计手册。

一个不同的想法可能是重复连接最接近的一对端点,这些端点的连接不会产生问题,例如过早终止循环。每个顶点都以其自己的单个顶点链开始。在将所有内容合并在一起之后,我们将最终得到一个包含其中所有点的链。连接最后两个端点为我们提供了一个循环。在执行此最近对启发式过程中的任何步骤中,我们将有一组可用于合并的单顶点和顶点不相交链。在伪代码中:  ClosestPair(P)     设n是集合P中的点数。     对于i = 1到n - 1         d =∞         对于来自不同顶点链的每对端点(s,t)             如果dist(s,t)≤d则sm = s,tm = t,d = dist(s,t)         通过边连接(sm,tm)     通过边缘连接两个端点 请注意,sm和tm应为sm和tm。

为什么d =∞ ? Coluld任何一个请解释最近邻游览吗? 在阅读本书之前,我应该阅读哪本书?

1 个答案:

答案 0 :(得分:2)

算法设置d = ∞,以便第一次比较始终成功:if dist(s, t) ≤ d then ...

另一种方法是将d设置为第一对之间的距离,然后尝试所有剩余的对,但就代码行而言,这是更多的代码。在编程中,您通常使用给定算术类型可能的最大值,并且通常在语言中作为常量提供,例如, Int.MaxValue