Java 一种简单平面图的生成算法
我想知道有什么算法可以把一个图变成平面图? 我在谷歌上搜索了一下,没有找到什么可以帮助我的Java 一种简单平面图的生成算法,java,algorithm,graph,planar-graph,Java,Algorithm,Graph,Planar Graph,我想知道有什么算法可以把一个图变成平面图? 我在谷歌上搜索了一下,没有找到什么可以帮助我的 有一个适用于每个平面图的欧勒定理 定义:平面图是可以在平面上绘制的图形,这样边就不会相互交叉。任何平面图都将平面划分为许多不相交的区域,称为图的面 欧拉定理:V-E+F=2 其中: –V是顶点数 –E是边的数量 –F是面数 然而,我不能用java提供解决方案,因为它不清楚您想要实现它的方式。例如,如果要将图形转换为平面图形;在视觉上,您可能需要重新排列画布和元素,这将有点复杂。一般来说,从算法角度考虑,首
有一个适用于每个平面图的欧勒定理 定义:平面图是可以在平面上绘制的图形,这样边就不会相互交叉。任何平面图都将平面划分为许多不相交的区域,称为图的面 欧拉定理:V-E+F=2 其中:
- 确定顶点是什么
- 确定边缘是什么
- 确定这些面是什么
- 找到一种计算顶点的方法
- 找到一种计算边数的方法
- 想办法数一数脸
- 重新排列画布中的所有内容
- 测试定理,如果它适用,那么你的图形是平面的,否则,重新排列
- 请注意,通过使用坐标,您可以从一开始就确定图形是否可以绘制为平面,但是,在绘制图形时,不应允许任何线边交叉
- 这篇评论太长了。所以请原谅我提供一个答案
你的问题我不清楚。图形是否平面是图形本身的函数,而不是它的绘制方式。“在图论中,平面图是一种可以嵌入平面的图,也就是说,它可以在平面上绘制,使其边只在端点相交。”摘自)
你需要计算/检查图表是否为平面图吗
你需要画平面图吗
在您提供的示例中,为什么第二个图形比第一个图形更正确?只是因为它们没有相交的边吗
假设您需要对其他图执行此操作,那么使用什么规则来确定某些表示是否优于其他表示,您的图如何推广到其他图
你为什么这么做?重点是什么?如果是家庭作业,问题陈述是什么?如果是现实生活,也许解释一下你真正想做的事情会有所帮助。你说的“使”它平面化到底是什么意思?我更新了我的问题“图形可视化”图片日志。你要找的是平面图的平面嵌入。如果可以在平面上绘制图形而不需要任何边交叉,则图形是平面的。有检查平面度的方法。一旦保证它是平面的,就有线性时间算法来找到这样的图形(称为平面嵌入)。请改写你的问题,以便人们能给出答案。:)谢谢你的帮助,但我不知道我将如何重新排列顶点,如果你看图片,你可以理解问题,是的,我必须用Java编写算法。欢迎你,如果你的程序如图片所示,那么它工作正常,因为两个图都是平面的。它们看起来的样子并不影响规则,请检查以下解释:!谢谢你的照片我现在明白了你在解释。对于代码,我将很快更新我的问题,但是我的代码生成的图形不是平面的,这是图片中的一个错误,我很抱歉,我不认为你可以使用Euler公式来确定图形是否是平面的,因为唯一可以计算面的方法是首先生成平面表示。你需要对Kuratowski的定理进行编码,看看图是否是平面的(即问题是否可以解决)。天真的暴力很容易,但效率却极低。我怀疑高中作业是否需要这种编码/算法知识。正如我在回答中所说,我不清楚实际的问题是什么。如果你知道如何确定什么是什么,并且在你实际绘制之前证明一个图形可以以平面的方式绘制,你可以使用欧拉公式。关于解决这个问题的简单方法,它应该是随机的,直到您生成可以存储的案例,然后直接得出结果。例如,如果您发现一个具有4个顶点、6条边和4个面的图形是如何绘制成平面的,那么您所要做的就是存储它。因为它将适用于所有具有相似特征的图表。很抱歉,我知道我解释得不太好(我的英语很差,但我理解答案),因为我给出的第一个示例是一个错误,您可以查看更新,我想画一个简单的图形(使用邻接矩阵)并将其转换为平面图(边只在端点相交)。这不是一个家庭作业,而是学校的一个完整项目。再次,我很抱歉我的解释不好,非常感谢你的回答。请发布项目的要求。(希望翻译成英语)。这其中的一部分是困难的。计算出一个图是否是平面图是困难的。(我不认为你可以简单地使用欧拉公式,因为当你计算出面数时,你必须已经有了一个平面表示)。绘制任意图形时,使其“看起来漂亮”也很难。一般的问题比我预期的高中项目要难得多。他们到底要你做什么?我不是高中生这是我必须做的:我的程序必须以边缘相交的方式绘制平面图