R ^ 3中图的优雅表示

时间:2011-02-15 02:16:02

标签: optimization graph computational-geometry

如果我有一个合理大小的图形(例如~100个节点,每个节点出现~40个边缘),我想在R ^ 3中表示它(即将每个节点映射到R ^ 3中的一个点,在原始图形中连接的任意两个节点之间绘制一条直线,这样可以很容易地理解它的结构,你认为什么会成为一个好的绘图标准?

我知道这个问题是不合适的;这不客观。在极端情况下,它背后的想法更容易理解。假设您有一个连接图,其中每个节点连接到两个且只有两个其他节点,除了两个仅连接到另一个节点的节点。不难看出,当在R ^ 3中绘制时,该图可以绘制为直线(节点洒在线上)。然而,有可能以一种几乎不可能看到其非常简单的结构的方式绘制它,例如,通过在R ^ 3中的某个固定点周围尽可能“扭转”它。因此,对于这个简单的情况,很明显简单的 3D表示是直线的。但是,在一般情况下,不清楚这个简单属性是什么。

所以,问题是:你如何定义这个简单属性

我对任何答案感到满意,无论是对图形可计算的“简单”的定义,还是贪婪的近似算法,它可以转换图形并收敛到“更简单”的3D表示。

谢谢!

EDITED

与此同时,我将答案中提出的force-based graph drawing ideas付诸实践,并编写了一个OCaml / openGL程序,以模拟如何在节点之间施加电排斥力(库仑定律)和类似弹簧的行为。结果是边缘(胡克定律)。我发布了video on youtube。视频以100个节点的初始图形开始,每个节点具有大约1-2个输出边缘,并将节点随机放置在3D空间中。然后我提到的所有力量都被放置到位,系统就会受到这些力量的影响。在一开始,图表是一团糟,很难看到结构。接近结束,很明显图表几乎是线性的。我也经历过大尺寸的图形,但有时图形的几何形状只是一团糟,无论你如何绘制它,你都无法想象任何东西。这里还有一个extreme example with 500 nodes

1 个答案:

答案 0 :(得分:1)

描述了一种简单的方法,例如http://en.wikipedia.org/wiki/Force-based_algorithms_%28graph_drawing%29。 “简单”的基本概念就像“最小的潜在能量”,它在任何有用的意义上并不真正对应于简单性,但在实践中可能足够好。

(如果你有100个40度的节点,我有一些疑问,是否有任何绘制它们的方式将揭示人类可访问结构的方式。这是很多边缘。但是,祝你好运! )