心得经验总结:无向图:计算亏格(环的孔洞)

简介: 心得经验总结:无向图:计算亏格(环的孔洞)

前一篇文章:无向图:计算亏格(环的孔洞)

首先,判断图中是否存在环。方法,找到联通子图,循环删除度为1的节点,同时删除边。直到不存在度为1的边,则联通子图只剩下环或者复杂环。

//代码效果参考:http://www.zidongmutanji.com/zsjx/426541.html

在不需要遍历出环的算法里面,可以通过欧拉公//代码效果参考: http://www.zidongmutanji.com/bxxx/203054.html

式直接计算亏格。孔洞的个数。

公式: //代码效果参考:http://www.zidongmutanji.com/bxxx/181028.html

nGenus = l-p+1; l为边的个数,p为点的个数。

过程:对于所有联通的集合,循环删除度数为1的顶点,同时删除边;计算亏格。

然而,上述过程出现了问题。主要是平面图中若严格按照直线边进行拓扑,出现了复杂图,即立体图。

如图:

改进方法:

使用多边形并差计算,以此寻找孔洞,以此来应对复杂图的特殊情况。

代码段:

import seisw.util.geom.Clip;

import seisw.util.geom.Poly;

import seisw.util.geom.PolyDefault;

相关文章
|
3月前
|
算法 Java
数据结构与算法学习六:单向环形链表应用实例的约瑟夫环问题
这篇文章通过单向环形链表的应用实例,详细讲解了约瑟夫环问题的解决方案,并提供了Java代码实现。
34 0
|
3月前
acwing 848 有向图的拓扑序列
acwing 848 有向图的拓扑序列
34 0
|
7月前
|
存储 算法 C语言
数据结构学习记录——图-最短路径问题(无权图单源最短路径算法、有权图单源最短路径算法、多源最短路径算法、Dijkstra(迪杰斯特拉)算法、Floyd算法)
数据结构学习记录——图-最短路径问题(无权图单源最短路径算法、有权图单源最短路径算法、多源最短路径算法、Dijkstra(迪杰斯特拉)算法、Floyd算法)
120 1
|
存储 索引
树与图中的dfs和bfs—— AcWing 846. 树的重心 AcWing 847. 图中点的层次
树与图中的dfs和bfs—— AcWing 846. 树的重心 AcWing 847. 图中点的层次
84 0
|
算法 C++
算法基础系列第三章——图论之最短路径问题(2)
算法基础系列第三章——图论之最短路径问题(2)
207 0
算法基础系列第三章——图论之最短路径问题(2)
|
存储 人工智能 算法
数据结构学习笔记——图的应用1(最小生成树、最短路径)
数据结构学习笔记——图的应用1(最小生成树、最短路径)
数据结构学习笔记——图的应用1(最小生成树、最短路径)
|
存储 算法 调度
(单源最短路径)一文搞懂dijkstra算法
对于Dijkstra算法,很多人可能感觉熟悉而又陌生,可能大部分人比较了解bfs和dfs,而对dijkstra和floyd算法可能知道大概是图论中的某个算法,但是可能不清楚其中的作用和原理,又或许,你曾经感觉它很难,那么,这个时候正适合你重新认识它。
416 0
(单源最短路径)一文搞懂dijkstra算法
|
算法 C++
算法基础系列第三章——图论之最短路径问题(1)
算法基础系列第三章——图论之最短路径问题(1)
202 0
算法基础系列第三章——图论之最短路径问题(1)
|
存储 算法
邻接表以及其算法应用(优化图的存储)
本文主要讲述了邻接表的原理,以及如何生成邻接表和其在算法方面的引用
邻接表以及其算法应用(优化图的存储)
|
存储 算法
聊一聊利用Dijkstra求有向图的最短路径
我们都知道求最短路径有很多方法,比如Dijkstra算法、Bellman-Ford算法、Floyd-Warshall算法等等,这些算法各有优缺点,其中Floyd-Warshall算法时间复杂度较高,但是编码复杂度较小,而Bellman-Ford算法适用于处理有负权边的情况。至于本文要讲的Dijkstra算法,优点就是时间复杂度较小,但是不能处理有负权边的图。 我们需要根据不同情况选择不同的算法。
771 0