欧拉图

欧拉图的判定

欧拉通路和欧拉回路——必须是存在欧拉回路的图才能称为欧拉图,仅仅是存在欧拉通路不称为欧拉图

 

无向图的欧拉通路

1.图连通

可以用dfs去判断图连通或者用高效一点的并查集。用dfs的话其实就是遍历一遍图,并记录图有多少个连通分量,一般来说,在主函数中调用了多少次dfs就是有多少个连通分量。当连通分量数为1时说明图连通,大于1则不连通。用并查集的话,判断p[i]=i是否成立,在一个连通分量重只会有一个p[i]=i,若整个图出现多于一次p[i]=i,那么说明该图不止一个连通分量,即不连通

2.度数为奇数的点称为奇点,在无向图欧拉通路中有且仅有两个奇点,这两个奇点必定一个是起点,一个是终点(显然可以交换)。而且其余的点的度数都是偶数

 

无向图的欧拉回路(即欧拉图)

1.图连通(判定方法一样)

2.所有点的度数都为偶数(从任意一个点出发都能回到自己)

 

有向图的欧拉通路

1.基图连通

即有向图忽略方向当做无向图一样去判定连通性,判定方法一样

2.必须有一个点的出度比入度大1,这个点作为起点;有一个点的入度比出度大1,这个点作为终点;其余所有点的入度和出度相等

 

有向图的欧拉回路(即欧拉图)

1.基图连通

2.所有的点的入度和出度相等,从任意一个点出发都可以回到自己

 

 

关于输出路径

处处路径一般用递归深搜的方法,但是注意是逆序输出,即在递归函数返回后再输出

posted @ 2016-04-26 21:14  Code-dream  阅读(299)  评论(0编辑  收藏  举报