我想从距离矩阵生成有向网络,其中边连接最近的顶点,或者最小化节点之间距离的顶点。网络上除起点和终点之外的每个点都将具有传入边缘和传出边缘。每个点应该只被击中一次。我还要提一下,我已经定义了START和END点。我相信这类似于解决旅行商问题(TSP)。
距离矩阵:
A B C D E
A 0.000 1975.317 1170.9915 1106.5238 1022.9888
B 1975.317 0.000 1977.8852 1689.8195 1762.5819
C 1170.991 1977.885 0.0000 962.0281 1073.0755
D 1106.524 1689.820 962.0281 0.0000 975.8099
E 1022.989 1762.582 1073.0755 975.8099 0.0000
可以找到相应的树形图here,虽然我不确定这将如何与网络相关,因为我们将定义开始和结束状态。对于这个例子,我们有:
START point:E
结束点:A
最终我想建立一个看起来像这样的网络:
E --(975.8)--> D --(962.0)--> C --(1977.9)--> B --(1975.3)--> A
在括号内描述的边缘权重是两点之间的距离。我认为需要接近的方法是循环遍历每一列,从START点开始,取最小值,将相应的顶点添加到该值,从矩阵中删除该值并继续直到END点到达。如果在结束前到达END点,则跳过它并取第二个最小值。也许有更好的方法来解决这个问题?我已经查看了网络库但没有经验。任何帮助将不胜感激。