An algorithm to draw graphs without checking all pairs of vertices?
图绘制算法,如这里描述的算法,将所有顶点按两个两个检查,如果两个顶点由一条边连接,则应用附加力。如果我们有一个非常大的图,那么检查所有顶点对将是非常昂贵的。是否有任何图形绘制算法只使用现有边绘制大型图形,而不是通过验证所有可能的对?
编辑通过绘制算法,我指的是一种算法,它为每个顶点指定一个二维或三维位置,从而使球体或圆(或任何其他形状)在其指定位置上呈现为顶点,从而获得整个图形的合理视觉表示。
- 图表必须是平面的吗?
- 不一定。
- 你的问题在于对绘图算法的要求非常不明确-"合理的视觉表示"不是一个明确的客观标准。我可以很容易地为您创建一个非常简单的绘图算法,这将满足条件,但它将创建丑陋的图形。谁来决定什么是丑什么不是?
- 我一直在想,在文献中肯定有一种算法可以满足上述条件。
- 哪些条件?您没有指定明确的条件。返回并再次阅读我以前的评论。
- 算法执行绘图的方式的条件。我在寻找一个先前提出的算法,它不需要对图中的所有顶点进行2乘2的计算。
- 好的,然后给每个顶点指定坐标[0,0]。这是一个符合你的条件的绘图算法。
- 请参阅答案中的链接以获取说明。这就解释了我想要什么。如果我不能在脑海中恰当地表达这个想法,我很抱歉。
检查这个弹簧的电气嵌入它在O(nlog n)中。
- 谢谢。这就是我一直认为的解决方案:将吸引力限制在附近的顶点上。我认为这会增加了解邻居的开销,但这不是无法解决的问题。
- 彭,什么是n?如果你这样表达,你应该总是说什么是n。对@farzad?
- @tomas,n是图中的节点数。这是图论中的常用符号。-)
- 那么,它显然是错误的,因为边缘的数量可以达到n(n-1)/2。您想如何在O(n log n)时间内绘制O(n^2)边?
- 顺便说一句,像这样的答案是不鼓励的,因为它们除了链接之外不包含任何内容——这可能会停止工作。
- @你所指的Tomas是现实世界中没有发生的最糟糕的情况。请看一下快照大型图形数据集。这些大型图是稀疏的,它们可能有数百万个顶点,但没有数千亿个边。另外,这篇文章还有我要找的答案。一个有用的链接比一个长而无用的答案或没有答案要好。
如果有稀疏矩阵,可以考虑将图形创建为相邻点列表或更简单的顶点对(例如(1、3)和1和3是顶点数)。
- 边缘列表是一种表示和存储格式,而不是图形绘图格式。我编辑问题并添加此内容。