前一篇文章:无向图:计算亏格(环的孔洞)
首先,判断图中是否存在环。方法,找到联通子图,循环删除度为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;