我有一个加权邻接列表,其中权重是顶点之间的距离。我想通过将每个顶点转换为x,y坐标来实现这一点。
是否有算法将此邻接列表和绘图放在2D空间中,使得图形与列表一致(即所有图形线都是距离权重规定的长度)?
答案 0 :(得分:3)
一般来说,答案是否定的,你不能在精确保留距离的情况下在2d中绘制一般图。
原因是为了能够嵌入图形而不失真距离,距离必须具有非常特殊的属性。例如,他们必须满足triangle inequality等等。
为了看到这一点,考虑具有3个顶点A,B,C和距离d(A,B)= 1 d(B,C)= 2 d(A,C)= 5的图。你可以很容易地发现这不起作用。事实上,无论尺寸如何,您都无法将其嵌入 ANY 欧几里德空间!
您可以执行以下操作:尝试使用PCA之类的算法来降低维度(将图形嵌入到2d空间中)。 PCA被广泛使用,您可以轻松地找到您喜欢的任何编程语言的实现。它会给你一些2D表示,但不能保证保持距离。但是,如果您的图形恰好具有与2D嵌入一致的距离,则PCA可以找到它。
BTW,将PCA直接应用于距离有时称为Multidimensional Scaling(MDS)。