《DSAA》 9.6.3 欧拉回路

本文介绍了一笔画游戏背后的数学原理——欧拉回路,并详细解释了如何使用深度优先搜索算法来解决这个问题。文章通过具体步骤展示了如何从起点出发遍历整个图,并最终回到起点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这是小时候玩儿过的一笔画图游戏,每条线都要画且只能画一次,画的时候笔尖不能离开纸,结束时终点必须回到起点。其实这就是欧拉回路,可以用深度优先搜索算法求解:

1)将图装入一个邻接表,并求出各节点的连接数

2)创建一个链表队列,用于存放路径中经过的顶点,首先将起点入队

3)由当前节点向下游搜索第一个邻接点(不能是自己的上游节点),将其入队,双方连接数均减1,递归搜索该邻接点的邻接点,直到无路可走,然后依次返回

4)如果最终返回的不是起点,则说明原图不是欧拉回路

且慢,我们可能只是访问了图的一部分而提前回到了起点,所以这里需要:

5)检查链表队列,找出第一个连接数不为0的节点,继续深度优先搜索,这将产生一个新的回路并自动拼接到原回路中

6)重复上述过程直到所有节点的连接数都变为0为止


下面的case对全部12个起点求解,运行结果如下:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值