欧拉图及其应用

什么是欧拉图

提到欧拉图就要谈到哥尼斯堡七桥问题,最初有这样的一个问题的:18世纪中叶,东普鲁士哥尼斯堡城有一条贯穿全城的普雷格尔河,河中有两个岛,通过七座桥彼此相连,如下图所示
在这里插入图片描述

问题是这样的:有人从四块陆地中的任意一块出发,按什么样的路线能做到每座桥只通过一次而最后返回原地。
我们可以将整个问题抽象成下面的图进行解答:
在这里插入图片描述

如果我们将每个节点与其他边数查出来(即数出每个节点的度数)这样就有下面的列表:

名称度数
陆地13
陆地23
岛14
岛23

对于一个结点来说,每出一次节点,代表与结点相连的某一条边已经走过了即结点度数减1,与其相连的结点的度数也减1,如果上述哥尼斯堡有解的话,就应该存在这样一条回路从某个地点出发最后回到某个地点。
每走过一条边会导致这条边的两个端点的度数减1,如下图所示:
在这里插入图片描述

名称度数
陆地13-1=2
陆地23
岛14-1=3
岛23

也就是说如果能够不重复的走过所有的桥,最后各个结点的度数一定为0.即

名称最终不断计算度数变化
陆地10
陆地20
岛10
岛20

如果七桥问题有解,由于最终是回到起点,所以走的路径一定是回路
在这里插入图片描述

假设在七桥问题中存在这样一条回路,先考虑回路除起点(终点)外的其他结点,那么进入某个结点之后应该能够出来,也就是每经过一个结点会造成结点的度数减2
也就是说非起点(终点)结点的度数一定得是偶数,才能经过不断的减2、减2最终变成0
在这里插入图片描述

起点(终点)在最初的时候出了一次,度数减去1,在最终的时候回了一次,度数减去1,这样就减去了2,
在这里插入图片描述

经过分析起点(终点)结点的度数一定得是偶数,才能经过不断的减2、减2最终变成0。
也就是说必须在所有结点的度数均为偶数的情况下,才能找到一条回路经过一次所有边且只经过一次。

欧拉在解决了哥尼斯堡七桥问题之后,提出并解决了一个更加一般性的问题:在什么样的图中能够找到通过图中每条边一次且仅一次的回路?
我们将能够在图中找到通过图中每条边一次且仅一次的通路(注意没有说回路)的图称为欧拉图。这样的通路叫做欧拉通路。具有欧拉通路的图叫欧拉图。

如何确定欧拉图

上边已经确定分析了具有欧拉回路的情况,因为是回路,所以其中所有的结点的度数都是偶数。
那么不是回路,但是通过所有的边一次且仅以此的通路,会让我们得出什么样的结论呢?
非起点或终点的结点,即路径中间的经过的结点,我们可以通过如下图的分析得到:
在这里插入图片描述

中间的结点仍然是减去2
在这里插入图片描述

也就是说在欧拉通路不是回路的情况下,只有两个结点的度数为奇数,其余结点的度数均为偶数。
结合欧拉通路是回路的情况也就是说,一个图要是欧拉图,要么所有结点的度数均为偶数,要么其中两个结点的度数为奇数,其余结点的度数为偶数,即奇度数结点的个数为0或2.注:奇度数结点为2的是半欧拉图。图必须是连通的,不连通一定不是欧拉图。

欧拉图的应用

欧拉图可以用来解决一笔画问题、蚂蚁比赛问题、计算机鼓轮设计、中国邮路问题,这些问题在以后有时间了在进行讨论。

如果有什么地方讲的不好或者讲错的地方欢迎大家指出来,如果我所讲的对你们有帮助不要忘了点赞、收藏、关注哦! 我是你们的好伙伴apprentice_eye 一个致力于让知识变的易懂的博主。

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

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

相关文章

【Python学习】Python学习10-列表

目录 【Python学习】Python学习10-列表 前言创建语法访问列表中的值更新和删除列表元素操作列表列表截取Python列表函数&方法参考 文章所属专区 Python学习 前言 本章节主要说明Python的列表List。 创建语法 创建一个列表 通过方括号和逗号分割创建,列表数据…

Linux系统下gitee使用git提交代码

Linux系统下gitee使用git提交代码 一、安装配置git1.1 在 Linux 中安装 git,并生成授信证书1.2 将SSH key 添加到 ssh-agent1.2 将SSH key 添加到你的gitee账户 二、gitee 的使用2.1 下载项目到本地 三、上传gitee三步走3.1 三板斧第一招:git add3.2 三板…

FreeRTOS学习总结(二)FreeRTOS任务创建和删除API函数

实现动态创建任务流程 任务控制块结构体成员介绍 typedef struct tskTaskControlBlock {volatile StackType_t * pxTopOfStack; /* 任务栈栈顶,必须为TCB第一个成员 */ListItem_t xStateListItem; /* 任务状态列表项 */ Li…

解决:Unity : Error while downloading Asset Bundle: Couldn‘t move cache data 问题

目录 问题: 尝试 问题得到解决 我的解释 问题: 最近游戏要上线,发现一个现象,部分机型在启动的时候闪退或者黑屏,概率是5%左右,通过Bugly只有个别机型才有这个现象,其实真实情况比这严重的多…

池化层解析:简单易懂理解 PyTorch 中的核心组件

目录 torch.nn详解 nn.MaxPool1d nn.MaxPool2d nn.MaxPool3d nn.MaxUnpool1d nn.MaxUnpool2d nn.MaxUnpool3d nn.AvgPool1d nn.AvgPool2d nn.AvgPool3d nn.FractionalMaxPool2d nn.FractionalMaxPool3d nn.LPPool1d nn.LPPool2d nn.AdaptiveMaxPool1d nn.Adapt…

git打tag以及拉取tag

场景:某次git代码发布后定版记录,将发版所在的commit时候代码打上tag记录,方便后期切换到对应tag代码位置。 查看所有tag名 git tag// 1.1.0 // 1.0.0查看tag和描述 git tag -l -n//1.0.0 云监管一期项目完结 //1.1.0 …

练习-指针笔试题

目录 前言一、一维整型数组1.1 题目一1.2 题目二 二、二维整型数组2.1 题目一2.2 题目二2.3 题目三 三、结构体3.1 题目一(32位机器运行) 四、字符数组4.1 题目一4.2 题目二 总结 前言 本篇文章记录关于C语言指针笔试题的介绍。 一、一维整型数组 1.1 …

【GoLang入门教程】Go语言几种标准库介绍(五)

如何解决大模型的「幻觉」问题? 文章目录 如何解决大模型的「幻觉」问题?前言几种库image库 (常见图形格式的访问及生成)关键概念和类型:示例 IO库示例 math库(数学库)常用的函数和常量:示例 总结专栏集锦写在最后 前言 上一篇&a…

Spring Redis Client使用Hessian序列化HINCRBY命令的Bug

前言: 公司自己封装Redis Client架包,使用Hessian协议对Redis中Value值进行序列化。在使用Hash结构的HINCRBY命令,处理序列化异常的问题。下面,我将详细说明一下。 正文: 公司封装Redis Client架包,其实就…

开源大数据集群部署(三)集群mysql数据库部署

开源大数据集群部署(一)集群实施规划 开源大数据集群部署(二)集群基础环境实施准备 作者:櫰木 本文将介绍mysql部署,其中在hd1.dtstack.com主机root权限下安装配置 1 解压文件 解压名为mysql-8.0.31-lin…

Spring MVC(day1)

什么是MVC MVC是一种设计模式,将软件按照模型、视图、控制器来划分: M:Model,模型层,指工程中的JavaBean,作用是处理数据 JavaBean分为两类: 一类称为数据承载Bean:专门存储业务数据…

我在工作一年时怎么都看不懂的编程写法。今天手把手教给你

作为一名程序员,你一定遇到或亲自写过这样的代码。有人将它形象的形容为shi山,或者被戏称为“面向保就业编程”。 以下面这个代码为例,其中的问题也显而易见,当越来越多的条件判断时,代码会变得非常臃肿,难…

使用Pipeline和ColumnTransformer提升机器学习代码质量

机器学习项目中最冗长的步骤通常是数据清洗和预处理,Scikit-learn库中的Pipeline和 and ColumnTransformer通过一次封装替代逐步运行transformation步骤,从而减少冗余代码量。 1. Pipeline vs. ColumnTransformer 训练模型前,需要将数据集分…

目标检测数据集大全「包含VOC+COCO+YOLO三种格式+划分脚本+训练脚本」(持续原地更新)

一、作者介绍:五年算法开发经验、AI 算法经理、阿里云开发社区专家博主、稀土掘金人工智能内容评审委员会成员。擅长:检测、分割、理解、AIGC 等算法训练与部署。 二、数据集介绍: 质量高:高质量图片、高质量标注数据,…

9.建造者模式

文章目录 一、介绍二、代码三、实际使用总结 一、介绍 建造者模式旨在将一个复杂对象的构建过程和其表示分离,以便同样的构建过程可以创建不同的表示。这种模式适用于构建对象的算法(构建过程)应该独立于对象的组成部分以及它们的装配方式的…

SpringMVC SpringMVC 的入门

2.1.环境搭建 2.1.1.创建工程 2.1.2.添加web支持 右键项目选择Add framework support... 如果没有,可以参考idea2023版如何新建web项目 2.添加web支持 ​ 3.效果 ​ 注意: 不要先添加打包方式将web目录要拖拽到main目录下,并改名为…

金和OA C6 HomeService.asmx SQL注入漏洞复现

0x01 产品简介 金和网络是专业信息化服务商,为城市监管部门提供了互联网+监管解决方案,为企事业单位提供组织协同OA系统开发平台,电子政务一体化平台,智慧电商平台等服务。 0x02 漏洞概述 金和OA C6 HomeService.asmx接口处存在SQL注入漏洞,攻击者除了可以利用 SQL 注入漏洞…

个人笔记:分布式大数据技术原理(一)Hadoop 框架

大家想了解更多大数据相关内容请移驾我的课堂: 大数据相关课程 剖析及实践企业级大数据 数据架构规划设计 大厂架构师知识梳理:剖析及实践数据建模 剖析及实践数据资产运营平台 Apache Hadoop 软件库是一个框架,它允许使用简单的编程模型&…

【C语言】TCP测速程序

一、服务端 下面是一个用 C 语言编写的测试 TCP 传输速度的基本程序示例。 这只是一个简单示例&#xff0c;没有做详细的错误检查和边缘情况处理。在实际应用中&#xff0c;可能需要增加更多的功能和完善的异常处理机制。 TCP 服务器 (server.c): #include <stdio.h> #…

Rust学习笔记:基础概念介绍(一)

Rust背景 让我们从Rust语言的背景开始&#xff0c;探索它的起源。Rust最初是Mozilla研究院在2006年的一个个人项目。第一个稳定的公开版本发布于2015年5月&#xff0c;但在此之前Mozilla已经在生产软件中使用了Rust。2021年&#xff0c;Rust基金会成立&#xff0c;其宪章是管理…