算法使一个简单的图形平面

时间:2014-01-02 20:35:31

标签: java algorithm graph planar-graph

我想知道有一些算法可以将图形转换成平面图吗? 我在谷歌搜索过我找不到可以帮助我的东西 enter image description here

2 个答案:

答案 0 :(得分:3)

有一个欧拉定理适用于每个平面图。

定义:平面图是可以在平面上绘制的图形,以便边缘不会相互交叉。任何平面图将平面划分为多个不相交的区域,称为图形的面。

欧拉定理:V-E + F = 2 其中:

  1. - V是顶点数
  2. - E是边数
  3. - F是面数
  4. 但是,我无法在java中提供解决方案,因为它不清楚你想要实现的方式。例如,如果要将图形转换为平面图形;在视觉上,您可能需要画布和元素重新排列,这将是一种复杂的实现。通常认为算法明智,首先在伪代码中创建解决方案。

    例如,由于我们的欧拉定理适用于每个平面图,因此您需要找到一种方法将此定理应用于现有的非平面图,然后对其进行测试。

    步骤:(可能其中一些需要坐标)

    • 确定顶点是什么
    • 确定边缘是什么
    • 确定面孔是什么
    • 找到一种计算顶点的方法
    • 找到计算边数的方法
    • 找一种计算面孔的方法
    • 重新排列画布中的所有内容
    • 测试定理,如果适用,则图形为平面,否则重新排列。
    • 请注意,通过使用坐标,您可以从头开始确定图形是否可以绘制为平面,但是,当您绘制它时,不应允许任何线边穿过。

答案 1 :(得分:3)

评论太长了。请原谅我提供答案。

我的问题不清楚。图形是否是平面的是图形本身的函数,而不是图形的绘制方式。 “在图论中,平面图是可以嵌入平面中的图形,即,它可以在平面上绘制,使得其边缘仅在它们的端点处相交。”来自http://en.wikipedia.org/wiki/Planar_graph)。

您是否需要计算/检查图表是否为平面?

你需要以平面形式绘制它吗?

在您提供的示例中,为什么第二张图形比第一张图纸更正确?是因为它们没有相交的边缘吗?

假设您需要对其他图表执行此操作,使用什么规则来确定某些表示是否优于其他图表,您的图表如何推广到其他图表?

你为什么要这样做?有什么意义?如果它的功课,究竟是什么问题陈述?如果它的现实生活,也许对你真正想做的事情的解释会有所帮助。