【问题标题】:draw a graph where the distance between vertices correspond to the edge weights绘制一个图,其中顶点之间的距离对应于边权重
【发布时间】:2011-03-31 08:52:21
【问题描述】:

当我给他一个加权图并且顶点之间的边权重指向顶点之间的距离时,是否有一种算法可以为我提供图中顶点的坐标?

类似:

public _ArrayOfCoordinatesForVertices_ **super_hyper_algorithm**(weighted_graph){  
     return _foo_;  
}

【问题讨论】:

    标签: algorithm graph drawing euclidean-distance


    【解决方案1】:

    这通常是不可能的:想象一个具有 3 个节点 n1、n2 和 n3 的图。

    现在考虑以下距离:

    n1-n2: 4
    n1-n3: 1
    n2-n3: 1
    

    (这违反了三角形不等式)。

    【讨论】:

      【解决方案2】:

      您所指的称为Multidimensional scaling (MDS),现在您知道如何搜索它,您应该会找到很多实现。

      正如其他人所说,在某种程度上,如果不违反您的某些约束(点之间的距离),就不可能绘制出完美的图形。 MDS 算法专门针对减少此类违规行为。

      【讨论】:

        【解决方案3】:

        如果图表是在Euclidean Space 中绘制的,则不能这样做,因为正如this answer 中指出的那样,您可能会违反Triangle Inequality

        通常,您可以通过使用不同的颜色(即通过将权重映射到颜色图)或通过使用不同的边缘厚度(即通过将权重映射到厚度比例)来直观地表示边缘的权重。

        【讨论】:

          【解决方案4】:

          好的,我为 python 找到了一个library,它为我创建了一个图形图像:) 我可以为边缘赋予权重,例如属性:边缘的权重。在dot中,重量越重,边缘越短、越直、越垂直。

          【讨论】:

            猜你喜欢
            • 2013-07-19
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2019-07-29
            • 2013-11-02
            • 2018-05-20
            • 1970-01-01
            相关资源
            最近更新 更多