欧拉回路(Eulerian Path)

news2024/9/22 13:46:31

1.定义

如果图 G G G(有向图或者无向图)中所有边一次仅且一次行遍所有顶点的通路称作欧拉通路。

如果图 G G G中所有边一次仅且一次行遍所有顶点的回路称作欧拉回路。

具有欧拉回路的图成为欧拉图(简称 E E E图)。具有欧拉通路但不具有欧拉回路的图成为半欧拉图。
顶点可以经过多次
画个图分辨一下:

  • 欧拉通路:
    image
  • 欧拉回路
    image
    简单来讲就是欧拉通路能够从起点到终点,欧拉回路能够回到起点

2.定理及推论

欧拉通路和欧拉回路的判定是很简单的
无向图 G G G存在欧拉通路的充要条件是:
G G G为连通图,并且 G G G仅有两个奇度节点(度数为奇数的顶点)或者无奇度节点
推论1:

  1. G G G是仅有两个奇度节点的连通图时, G G G的欧拉通路必以此两个节点为端点
  2. G G G是无奇度节点的连通图时, G G G必有欧拉回路
  3. G G G为欧拉图(存在欧拉回路)的充分必要条件是 G G G为无奇度节点的连通图

有向图 D D D存在欧拉通路的充要条件是:
D D D为有向图, D D D的基图联通,并且所有顶点的出度与入度都相等;或者除两个顶点外,其余顶点的出度与入度都相等,而在这两个顶点中一个顶点的出度与入度只为 1 1 1,另一个顶点的出度与入度之差为 − 1 −1 1
推论2:

  1. 当 D 除出、入度之差为 1 , − 1 的两个顶点之外,其余顶点的出度与入度都相等时, D 的有向欧拉通路必以出、入度之差为 1 的顶点作为始点,以出、入度之差为 − 1 的顶点作为终点 当D除出、入度之差为1,−1的两个顶点之外,其余顶点的出度与入度都相等时,D的有向欧拉通路必以出、入度之差为1的顶点作为始点,以出、入度之差为−1的顶点作为终点 D除出、入度之差为11的两个顶点之外,其余顶点的出度与入度都相等时,D的有向欧拉通路必以出、入度之差为1的顶点作为始点,以出、入度之差为1的顶点作为终点
  2. 当 D 的所有顶点的出、入度都相等时, D 中存在有向欧拉回路 当D的所有顶点的出、入度都相等时,D中存在有向欧拉回路 D的所有顶点的出、入度都相等时,D中存在有向欧拉回路
  3. 有向图 D 为有向欧拉图的充分必要条件是 D 的基图为连通图,并且所有的顶点的出、入度都相等 有向图D为有向欧拉图的充分必要条件是D的基图为连通图,并且所有的顶点的出、入度都相等 有向图D为有向欧拉图的充分必要条件是D的基图为连通图,并且所有的顶点的出、入度都相等

3.欧拉通路回路存在的判断

根据定理和推论,我们可以很好的找到欧拉通路回路的判断方法

A.判断欧拉通路是否存在的方法#

  • 有向图:图连通,有一个顶点出度大于入度 1 ,有一个顶点入度大于出度 1 ,其余都是出度 = 入度 有向图:图连通,有一个顶点出度大于入度1,有一个顶点入度大于出度1,其余都是出度=入度 有向图:图连通,有一个顶点出度大于入度1,有一个顶点入度大于出度1,其余都是出度=入度
  • 无向图:图联通,只有两个顶点是奇数度,其余都是偶数度

B.判断欧拉回路是否存在的方法

  • 有向图:图联通,所有的顶点出度=入度
  • 无向图:图联通,所有的顶点都是偶数度

4.欧拉回路的应用

  1. 哥尼斯堡七桥问题
  2. 一笔画问题
  3. 旋转鼓轮的设计

5.欧拉回路的判断

D F S DFS DFS

邻接矩阵的时间复杂度为 O ( n 2 ) O(n^2) O(n2)
邻接表的时间复杂度为 O ( n + e ) O(n+e) O(n+e)
如果,重边太多的话,邻接表会挂掉:)

请看这篇文章

6.欧拉回路的求解

板子题:骑马修栅栏
传送门
题目保证有解。

A.DFS搜索求解欧拉回路

基本思路:利用欧拉定理判断出一个图存在欧拉回路或欧拉通路后,选择一个正确的起始顶点,用DFS算法遍历所有的边(每条边只遍历一次),遇到走不通就回退。在搜索前进方向上将遍历过的边按顺序记录下来。这组边的排列就组成了一条欧拉通路或回路。

#include <bits/stdc++.h>
using namespace std;
int bian[510],n,m,ans[510];
int mapp[510][510],c=0;
void dfs(int j){
	for(int i=1;i<=n;i++){
		if(mapp[j][i]>0){
			mapp[i][j]--;mapp[j][i]--;
			dfs(i);
		}
	}
	ans[c++]=j;
}
int main(){
	cin>>m;
	int a,b;
	for(int i=0;i<m;i++){
		cin>>a>>b;
		mapp[a][b]++;mapp[b][a]++;
		bian[a]++;bian[b]++;
		n=a>n?a:n;
		n=b>n?b:n;
	}
	int flag=1;
	for(int i=n;i>=1;i--){
		if(bian[i]%2==1){
			flag=i;
		}
	}
	dfs(flag);
	for(int i=c-1;i>=0;i--){
		cout<<ans[i]<<endl;
	}
}

B.Fleury(佛罗莱)算法

  • Fleury算法是对DFS爆搜的一种改进,使用DFS漫不经心的随意走效率是不高的,Fleury是一种有效的算法
    ps:其实我也不会,这里就只介绍一下吧
    image
    我个人感觉是把大连通块分成了零散的几个小连通块然后分块连接
    关键是能不走桥就不走桥,实在无路可走了才会去走桥
    代码就不给了,估计给了也是错的

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1487786.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Docker】Windows11操作系统下安装、使用Docker保姆级教程

【Docker】Windows11操作系统下安装、使用Docker保姆级教程 大家好 我是寸铁&#x1f44a; 总结了一篇【Docker】Windows11操作系统下安装、使用Docker保姆级教程的文章✨ 喜欢的小伙伴可以点点关注 &#x1f49d; 前言 什么是 Docker&#xff1f; Docker 是一个开源平台&…

yolov8-更换卷积模块-ContextGuidedBlock_Down

源码解读 class ContextGuidedBlock_Down(nn.Module):"""the size of feature map divided 2, (H,W,C)---->(H/2, W/2, 2C)"""def __init__(self, nIn, dilation_rate2, reduction16):"""args:nIn: the channel of input fea…

统信UOS及麒麟KYLINOS操作系统上如何切换键盘布局

原文链接&#xff1a;如何切换键盘布局 | 统信UOS | 麒麟KYLINOS Hello&#xff0c;大家好啊&#xff0c;最近有朋友在群里提到他的键盘输入“Y”会显示“Z”&#xff0c;输入“Z”会显示“Y”。这个问题听起来可能有些奇怪&#xff0c;但其实并不罕见。出现这种情况的原因&…

广东Lenovo SR588服务器维修升级硬盘内存

本案例描述了对联想SR588服务器进行硬件升级的过程&#xff0c;包括更换固态硬盘作为系统盘&#xff0c;以及增加内存容量至128GB。升级后&#xff0c;服务器性能得到显著提升&#xff0c;同时通过重新配置RAID阵列和操作系统的重新安装&#xff0c;确保了系统的稳定性和数据的…

RAC集群日常维护

RAC的启停 cd /u01/app/19.3.0/grid/bin 停止 ./crsctl stop crs 检查 ./crsctl check crs 启动&#xff0c;可以两个节点同时启动 ./crsctl start crs 检查 ./crsctl check crs ./crsctl status res -t oracle的RAC日常维命令 集群状态检查命令 cractl status res …

数字革命的浪潮:Web3如何改变一切

随着数字技术的不断发展&#xff0c;人类社会正迎来一场前所未有的数字革命浪潮。在这个浪潮中&#xff0c;Web3技术以其去中心化、安全、透明的特性&#xff0c;正在逐渐改变着我们的生活方式、商业模式以及社会结构。本文将深入探讨Web3技术如何改变一切&#xff0c;以及其所…

基于springboot实现粮食仓库管理系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现粮食仓库管理系统演示 摘要 粮食作为人类生活的重要物质来源&#xff0c;在粮食流通过程中对于粮食仓库的管理不容忽视&#xff0c;随着我国粮食生产能力的提升以粮食存储管理的不断革新&#xff0c;粮食产量的增加为粮食仓储管理带来了挑战也带来了机遇&am…

JavaScript 中的类型转换机制(详细讲解)

文章目录 一、概述二、显示转换Number()parseInt()String()Boolean() 三、隐式转换自动转换为布尔值自动转换成字符串自动转换成数值 一、概述 前面我们讲到&#xff0c;JS中有六种简单数据类型&#xff1a;undefined、null、boolean、string、number、symbol&#xff0c;以及…

【BUUCTF Misc】通关1.0

&#x1f36c; 博主介绍&#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 hacker-routing &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【应急响应】 【Java】 【VulnHub靶场复现】【面试分析】 &#x1f389;点赞➕评论➕收藏 …

网工学习 DHCP配置-接口模式

网工学习 DHCP配置-接口模式 学习DHCP总是看到&#xff0c;接口模式、全局模式、中继模式。理解起来也不困难&#xff0c;但是自己动手操作起来全是问号。跟着老师视频配置啥问题没有&#xff0c;自己组建网络环境配置就是不通&#xff0c;悲催。今天总结一下我学习接口模式的…

源码全开源可二次开发+求职招聘找工作小程序源码系统 带完整的搭建教程

随着移动互联网的普及和深入&#xff0c;小程序作为一种轻量级的应用形态&#xff0c;以其无需下载安装、即用即走的特点&#xff0c;迅速成为了连接线上线下的重要桥梁。特别是在求职招聘领域&#xff0c;小程序以其便捷性和高效性&#xff0c;成为了求职者与招聘方之间的理想…

wordpress 开源主题

海外就医wordpress主题 出国看病、海外就医是越来越多中产家庭的选择&#xff0c;此wordpress主题适合做相关业务的公司官网。 https://www.jianzhanpress.com/?p5220 防护wordpress外贸主题 个人防护器具wordpress外贸主题&#xff0c;适合做劳动保护的外贸公司使用。 ht…

【云原生】kubeadm快速搭建K8s集群Kubernetes1.19.0

目录 一、 Kubernetes 的概述 二、服务器配置 2.1 服务器部署规划 2.2服务器初始化配置 三、安装Docker/kubeadm/kubelet【所有节点】 3.1 安装Docker 3.2 添加阿里云YUM软件源 3.3 安装kubeadm&#xff0c;kubelet和kubectl 四、部署Kubernetes Master 五、部署Kube…

Javascript如何获取指定网页中的内容?

前言: 这两天有一个需求&#xff0c;即利用JavaScript语言来检索网页的文本内容。当然&#xff0c;实现这一目标的途径并非单一&#xff0c;除了我即将分享的特定技巧之外&#xff0c;还有另一种方法值得一提&#xff1a;通过Ajax的GET请求。然而&#xff0c;相比之下&#xff…

工作流Activiti7

代码逐步解析&#xff1a; 在使用 Camunda BPM 框架时获取默认的流程引擎实例 在 Camunda BPM 中&#xff0c;流程引擎是用于执行业务流程的核心组件&#xff0c;它负责管理流程定义、流程实例、任务等。通过这段代码&#xff0c;可以获取到默认的流程引擎实例&#xff0c;然后…

[C#]winform部署yolov9的onnx模型

C# WinForms 部署 YOLOv9 ONNX 模型简介 在当今的计算机视觉领域&#xff0c;目标检测是不可或缺的一项技术。YOLO&#xff08;You Only Look Once&#xff09;系列模型以其高效和准确的特点受到了广泛关注。随着YOLOv9的发布&#xff0c;其性能进一步提升&#xff0c;为实际应…

香橙派企业信用问题-劝一个是一个,别买!!!

1. 背景 香橙派推广旗下AI PRO 开发板&#xff0c;在B站做直播&#xff0c;一场直播两个直播间&#xff0c;分别抽取一名观众&#xff0c;宣传是场场送AI PRO开发板&#xff01;&#xff01;&#xff01; 2. 收到奖品与宣传不符合 3.咨询群主&#xff1a;态度很傲慢&#xff0c…

图像处理基础——频域、时域

下图是低通滤波器的频率响应曲线。 低通滤波器频响曲线 横轴是频率(Hz)&#xff0c;纵轴是声音大小(dB)。&#xff08;请忽略图中的频率刻度&#xff0c;没有对应人声的频率范围&#xff09; 所谓的低音效果&#xff0c;其实就是对人声中的低音部分保留或增强&#xff0c;对应…

2.并发编程

文章迁移自语雀。原文地址&#xff1a;https://www.yuque.com/changhe-xqeca/zn1cvu/dvunld 昨晚上感觉程程是个温柔的姑娘 1.同步的实现: 是利用锁的机制来实现同步的。 锁机制有如下两种特性&#xff1a; 互斥性&#xff1a;即在同一时间只允许一个线程持有某个对象锁&a…

云端技术驾驭DAY15——ClusterIP服务、Ingress服务、Dashboard插件、k8s角色的认证与授权

往期回顾&#xff1a; 云端技术驾驭DAY01——云计算底层技术奥秘、云服务器磁盘技术、虚拟化管理、公有云概述 云端技术驾驭DAY02——华为云管理、云主机管理、跳板机配置、制作私有镜像模板 云端技术驾驭DAY03——云主机网站部署、web集群部署、Elasticsearch安装 云端技术驾驭…