- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
以下伪代码来自算法设计手册在线预览版的第一章(第 7 页来自 this PDF)。
这个例子是一个有缺陷的算法,但我仍然很想理解它:
[...] A different idea might be to repeatedly connect the closest pair of endpoints whose connection will not create a problem, such as premature termination of the cycle. Each vertex begins as its own single vertex chain. After merging everything together, we will end up with a single chain containing all the points in it. Connecting the final two endpoints gives us a cycle. At any step during the execution of this closest-pair heuristic, we will have a set of single vertices and vertex-disjoint chains available to merge. In pseudocode:
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
请注意sm
和tm
应该是s
m
和t
m
.
首先,我不明白“来自不同的顶点链”是什么意思。其次,i
在外层循环中用作计数器,但 i
本身实际上从未在任何地方使用过!比我聪明的人能解释一下这里到底发生了什么吗?
最佳答案
在 Ernest Friedman-Hill 的解释(接受的答案)之后,我是这样看的:
所以来自同一本书的示例(图 1.4)。我已将名称添加到顶点以使其清晰
所以第一步所有的顶点都是单顶点链,所以我们连接 A-D、B-E 和 C-F 对,它们之间的 b/c 距离最小。
在第二步,我们有 3 条链,A-D 和 B-E 之间的距离与 B-E 和 C-F 之间的距离相同,所以我们连接 A-D 和 B-E,剩下两条链 - A-D-E-B 和 C-F
在第三步,连接它们的唯一方法是通过 B 和 C,b/c B-C 比 B-F、A-F 和 A-C 更短(记住我们只考虑链的端点)。所以我们现在有一条链 A-D-E-B-C-F。
在最后一步,我们连接两个端点(A 和 F)以获得一个循环。
关于algorithm - 这个最近邻算法中的 "from distinct vertex chains"是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7216755/
我有以下数据集,包含超过 20,000 行: 我想使用 K 近邻算法使用 A 列到 E 列来预测 X 列。我尝试使用sklearn中的KNeighborsRegressor,如下所示: import
我正在尝试编写一个代码,给定整数矩阵的位置 (x,y),我可以迭代距离 K 的所有邻居(左、右、上、下和对角线),这样: K = 1 01 02 03 04 05 06 07 08 09 10 11
我是一名优秀的程序员,十分优秀!