欧拉(通)回路
欧拉道路:
概念:
从无向图中的一个结点出发走出一条道路,每条边恰好经过一次。这样的路线称为欧拉道路,也可形象的称为“一笔画”。
性质:
除了起点和终点以外,其他点的“进出”次数应该相等。换句话说,除了起点和终点以外,其他点的度数应该是偶数;
这也就引出了欧拉道路的充分条件:如果一个无向图是连通的,且最多只有两个奇点,则一定是欧拉道路。且必须从一个奇点出发,另一个奇点终止;如果没有奇点,那么可以从任意点出发,最终会回到起点,这也就是欧拉回路
这个性质也可以用到有向图中:
最多只有两个点的入度不等于出度,而且必须是其中一个点的出度恰好比入度大1,另一个的入度比出度大1,前提是这个图连通;
伪代码实现:
void dfs(int u){
for(int v=1;v<=n;v++){
if(ma[u][v]&&!vis[u][v]){
vis[u][v]=vis[v][u]=1;
dfs(v);
cout<<u<<" "<<v<<endl;//这里是倒序打印路径,如果要正序,入栈就行
}
}
}
本文详细介绍了无向图与有向图中欧拉道路和欧拉回路的概念,阐述了其充分条件及性质,并提供了伪代码实现。在无向图中,若最多只有两个奇点且图连通,则存在欧拉道路;若有向图中最多两个点的入度不等于出度且连通,则存在欧拉道路。
395

被折叠的 条评论
为什么被折叠?



