我只是无法理解这个搜索算法的一行伪代码。
C(S, j) = min{C(S − {j},i) + dij : i ∈ S, i ≠ j}
在python中,C是一个'数组',S是一个列表,j是一个数字或一个数字的单个元素,我不确定。但是我和dij第一次出现在这条线上。我不明白这是怎么回事,或世界上什么是S - {j}的意思?
我应该将其转换为python脚本,但伪代码没有意义。我对python也没有多少经验。
答案 0 :(得分:1)
C(S, j)
是S
中以顶点j
结尾的最短哈密顿路径的长度。哈密尔顿路径是通过S
中的顶点的路径,其通过每个点恰好一次。 C
由递归关系定义,当您在代码中表达它时,它将转换为Python函数。
以j
结尾的最短哈密尔顿路径,在访问i
之前访问了一些j
。 i
最小化通过S
的顶点的最短哈密顿路径,不包括j
加上i
到j
的距离。
那是:
C(S, j) = min(C(S-{j}, i) + dist(i, j) for i in S if i!=j))
此处(以及您的文档中)S-{j}
表示设置减法 - 即S
没有元素j
。
您在文档中的内容只是编写此递归关系的另一种方式。
你也错过了基本情况:当你只有一个顶点时,最短路径从那个顶点开始,长度为零:
C({j}, j) = 0