Algorithm 使用距离度量生成完全连通图

Algorithm 使用距离度量生成完全连通图,algorithm,graph,graph-algorithm,Algorithm,Graph,Graph Algorithm,假设我有一系列几千个节点。对于每对节点,我都有一个距离度量。这个距离度量可以是物理距离(比如每个节点的x,y坐标)或其他使节点相似的东西 每个节点最多可以连接到N个其他节点,其中N很小,例如6 如何构造完全连接的图(例如,我可以在图边之后的任意两个节点之间移动),同时最小化所有图节点之间的总距离 也就是说,我不想要任何遍历的总距离最小化的图,但是对于任何节点,所有链接到该节点的总距离最小化 我不需要一个绝对最小值——我认为这可能是NP完全的——而是一个相对有效的方法来获得一个接近真正绝对最小值的

假设我有一系列几千个节点。对于每对节点,我都有一个距离度量。这个距离度量可以是物理距离(比如每个节点的x,y坐标)或其他使节点相似的东西

每个节点最多可以连接到N个其他节点,其中N很小,例如6

如何构造完全连接的图(例如,我可以在图边之后的任意两个节点之间移动),同时最小化所有图节点之间的总距离

也就是说,我不想要任何遍历的总距离最小化的图,但是对于任何节点,所有链接到该节点的总距离最小化


我不需要一个绝对最小值——我认为这可能是NP完全的——而是一个相对有效的方法来获得一个接近真正绝对最小值的图。

我建议一个贪婪的启发式方法,在这里选择边,直到所有顶点都有6个邻居。例如,从最小生成树开始。然后,对于一些随机的顶点对,在它们之间找到一条最短路径,该路径最多使用一条未选边(使用Dijkstra的算法,在两个由未选边连接的具有选定边的图形副本上)。然后选择总距离减少最大的边。

您可以使用内核仅为特定截止距离下的节点创建边

  • 如果您想要非加权边,您可以简单地使用一个基本截止开始。如果d(v1,v2) 可以调整截断R以获得节点之间正确的平均边数

  • 如果您想要一个加权图,首选的核通常是高斯核,带有

    K(x,y)=e^(-d(x,y)^2/d\u 0)

    使用截断以远离值太低的节点。d_0是要调整的参数,以获得最适合您的权重

在寻找参考资料时,我发现了这篇我没有提及的博文,但这篇博文似乎很有说明性,其中包含了更多的细节:

此方法用于基于图形的半监督机器学习任务,例如在图像识别中,您标记对象的一小部分,并使用有效的标签传播来识别整个对象


你可以在谷歌上搜索:半监督学习与图形

我不确定,但如何修改MST?我认为这个错误是可以容忍的。