用"E"条边计算所有可能连通的平面图
Calculate all possible connected planar graphs with "E" edge
我正在开发一个 c++ 程序,它计算并绘制所有可能的具有给定 E 数边的连接平面图。像这样:
我的第一个想法是通过执行 递归 找到 (n-1) 的答案后,通过添加一条边来找到 N 条边的所有可能解决方案。
如图所示,问题n=4的解法基本上是n=3解法的改进版,多了一条边
但感觉这不是一个非常有效的解决方案。我在特定算法中找不到这个问题。
有没有其他方法可以找到并绘制所有可能的 E 边连通平面图?
is there any other way of finding and drawing all possible connected planar graphs with E edge?
从完整图 K(E+1) 开始 - 这将有 (E+1)
个顶点和 E(E+1)/2
个边。枚举边 1 .. E(E+1)/2
.
- 对于集合
<1 .. E(E+1)/2>
中 E
个值的每个排列
- 保留
E
条边并删除其余的
- 删除所有未连接的顶点
- 如果图是连通的、平面的并且与之前的图不同构,则
- 这是一个新的唯一图,有 E 条边。
您可以通过考虑完整图的对称性并消除具有旋转 and/or 反射对称与先前排列组合的排列来执行重要的优化。
我正在开发一个 c++ 程序,它计算并绘制所有可能的具有给定 E 数边的连接平面图。像这样:
我的第一个想法是通过执行 递归 找到 (n-1) 的答案后,通过添加一条边来找到 N 条边的所有可能解决方案。
如图所示,问题n=4的解法基本上是n=3解法的改进版,多了一条边
但感觉这不是一个非常有效的解决方案。我在特定算法中找不到这个问题。
有没有其他方法可以找到并绘制所有可能的 E 边连通平面图?
is there any other way of finding and drawing all possible connected planar graphs with E edge?
从完整图 K(E+1) 开始 - 这将有 (E+1)
个顶点和 E(E+1)/2
个边。枚举边 1 .. E(E+1)/2
.
- 对于集合
<1 .. E(E+1)/2>
中E
个值的每个排列- 保留
E
条边并删除其余的 - 删除所有未连接的顶点
- 如果图是连通的、平面的并且与之前的图不同构,则
- 这是一个新的唯一图,有 E 条边。
- 保留
您可以通过考虑完整图的对称性并消除具有旋转 and/or 反射对称与先前排列组合的排列来执行重要的优化。