300000
蜘蛛网©
胜局数: 147659
(6 – 20): | 循环 路径 随机 挑战 |
定义 + 这怎么还是一个“数学”游戏?
这个游戏中的图像是基于一个被称为图论的数学领域!
什么是图像?
图像:由节点和边组成。
节点:图像连接的“对象”称为节点。在蜘蛛网中,节点是圆圈。
边:边是图像中两个节点之间的连接。在蜘蛛网中,边是线条。
扩展路径
路径:路径是一连串相连的边,具有起点节点和终点节点。
欧拉路径:这是一条图中每条边都精确使用一次的路径。
这个游戏的目标是找到一条欧拉路径。
日常生活中的欧拉路径是什么?
举例:扫雪机、街道清洁卡车和邮递员是需要穿过每条街道但又想避免两次穿过同样街道的汽车和人。
“欧拉”这个名字听起来熟悉吗?
图论始于数学家莱昂哈德·欧拉(Leonhard Euler)对这类路径的研究。
欧拉写了一篇关于柯尼斯堡七桥的论文,证明在这座城市中行走,不可能每座桥都恰好经过一次。
点击下面的问题地图,了解更多相关信息。
循环:循环是一条以为终点,以为起点的路径。
欧拉循环: 这是一条欧拉路径,也是一个循环。在上面的游戏中选择 "循环",解法将始终是欧拉循环!
游戏设置说明
在“节点旁边的文本框中,可以键入 6-20 之间的任意数字。此数字将是图像上显示的节点数。数字越大,解决方案就越具有挑战性!
接下来,选择图像类型
循环: 获胜路径将始终在其起始节点上结束。
路径:获胜路径不会在它们开始的节点上结束。
随机:可能允许欧拉周期或欧拉路径的图形。获胜路径可能会也可能不会在它们开始的节点上结束。
挑战:手工制作的图像,其中边会交叉,因此连接的桥不明显。
最后,点击“创建新的网”以查看您对图像设置的更改!
我应该先选择哪个节点?
度:度是节点的属性。它是与之相连的边的数量。我们将根据节点的度数将其分为奇数度节点和偶数度节点。
连接图像: 每对节点都可以通过一条路径连接的图像。
桥:如果边的两端不能以其他方式连接,则边就是桥。因此,过桥后,人们将无法回到前一侧。移除桥会将图像拆分为两个断开连接的部分。
无向图 :边没有方向的图像。我们在本游戏中只考虑这些图像。
有向图 :每条边都有一个方向的图像,就像一条单行道一样。
无向图包含欧拉循环,当所有节点都具有偶数度(度数为 0、2、4、6....... 对于这些,您可以选择任何节点作为您的起始节点并且仍然获胜。请记住,您必须在开始的节点上完成。
当恰好两个节点具有奇数度(度数为 1、3、5、7...)时,图像包含欧拉路径{0}但不是欧拉循环 和所有其他节点的度数为偶数。在这种情况下,您必须选择一个奇数度的节点作为起始节点否则您将无法完成欧拉路径。
为什么是两个节点?
将每一次移动都视为“远离”您来自的节点并“向”您前往的节点。大多数节点将遵循这种配对模式,因此它们将具有偶数度。
当您开始游戏时,您标记的第一条边是从起始节点“远离”的。当您玩游戏时,这将保持未配对状态。
要创建欧拉循环,您标记的最终边是“向”起始节点移动。这将创建一个具有第一个移动的对,这意味着起始节点具有偶数度。
如果图形的欧拉路径不是循环,则标记的最后一条边是“向”非起始节点的不成对移动。起始节点保持奇数度数,结束节点也将具有奇数度数。
不要担心任何其他情况。如果奇数度的节点数不正好是 0 或 2,则没有欧拉路径和欧拉循环,这意味着没有获胜的方法。像这样的图像不应该出现在这个游戏中。
初步问题
可以有奇数个奇数度的节点吗?
不能。
为什么?
证明:
计算所有边的所有端数与将所有节点的所有度数相加的数字相同,同意吗?
由于每条边有 2 个端点,因此所有边的端总数必须为偶数。(将偶数相加得到偶数。
要将所有节点的度数相加,可以将偶数相加,得到一个偶数,然后将奇数相加。
如果有奇数个奇数度节点,则该总和将是奇数,然后是偶数 + 奇数 = 奇数,因此总度数将是奇数。但它等于所有边的所有端的总数,这是偶数。因此,奇数次节点的数量不能是奇数, 它必须 是偶数。
例如,1 是奇数,因此没有只有 1 个奇数节点的图像。
欧拉路径或循环何时存在?
如果节点的度数为偶数,即 2、4、6,...边缘连接到节点,然后当到达该节点时,会留下奇数个大于零的未使用边缘,因此可以离开该节点并继续前进。如果度数为奇数,即 1、3、5,..附加边后,要么必须在此节点处开始路径,要么路径将在此节点处结束。因为一条路径只有 2 个端,所以只能有 2 个奇数节点。因此:
要有欧拉循环,图必须只有偶数度节点,要有欧拉路径,它必须有 2 个奇数度节点,一个节点是路径的起点,一个节点是路径的终点。
如何找到欧拉路径或循环?
如上所示,如果没有奇数度节点,则可以从任何节点开始,并在同一节点结束。如果正好有 2 个奇数度节点,那么一个节点需要从这 2 个节点中的任何一个开始,并自动在另一个节点结束。
扩展路径时会不会出错?
是的,可能会出错。例:
2 4 / \ / \ 1---3---5
除节点 3 的度数为 4 外,所有节点的度数均为 2。所以所有的度数都是均匀的,我们可以从任何地方开始。让我们从节点 1 开始,然后转到节点 3,让我们删除所有已经过的边。
2 4 / \ / \ 1 3---5
边 3-2 成为 桥。越过并移除此边 3-2 将生成一个不连贯的图像
2 4 / / \ 1 3---5
不能再完全经过了。因此,应该从 3 到 4 或到 5 继续完成欧拉循环。
如何才能避免过桥?
要检查边是否为桥,需要从边的一端开始,访问其所有相邻节点及其所有相邻节点,依此类推。如果一个人没有到达边缘的另一侧,那么边缘就是一座桥。对所有邻居进行如此彻底的搜索并不是很昂贵。但是,如果一个人必须在越过每个边缘之前这样做,那么总的努力就很大了。完整的算法称为弗勒里算法,其历史可以追溯到 1883 年。
有没有更有效的算法?
更有效的算法是Hierholzer(1873)的算法。
如果图像有 2 个奇数节点,那么人们会找到一条路径,否则会找到一个循环,在这两种情况下都非常快,而无需检查桥。
1) 删除所有已经过边后,剩余未经过边的程度对于所有节点都是均匀的。
为什么?
如果一个节点的度数是偶数,那么它同样经常被接近,因为它是静止的,所以它仍然是偶数。如果度数是奇数,那么它要么是第一条路径的起始节点,要么是结束节点,然后它被左 + 总共接近奇数次,所以剩余的度数是奇数 − 奇数 = 偶数。
2) 必须至少有一个节点具有已使用和未使用的相邻边。
为什么?
因为原始图像是连接的。
因为 1) 可以找到一个未经过边的循环,从这个节点开始和结束。因为 2) 当这个循环到达这个节点时,它可以包含在第一个路径/循环中。这种对迄今为止未使用的边的循环的嵌入是重复的,直到所有边都被使用,因此有一个欧拉路径或使用所有边的欧拉循环。
这个更快版本的代价是什么?
必须记住之前的路径/循环,以便可以包含额外的循环。
例如:
2 4 / \ / \ 1---3---5
假设第一个循环为 1-3-2-1。节点 3 出现在此循环和未使用的循环 3-4-5-3 中。我们将其插入第一个循环并得到循环 1-3-4-5-3-2-1。没有更多未使用的边,所以算法到此结束,我们找到了欧拉循环。
如何使用我们的界面插入循环?
可以单击“撤消”,直到到达具有已使用和未使用边缘的最新节点,例如上面的节点 3,然后完成循环 3-4-5-3,然后继续未完成的边。
如果存在奇数度节点,是否需要找到它们两个节点才能绘制从一个节点到另一个节点的第一条路径?
不。如果只找到一个,那么一个人可以从这个节点开始路径,无论是否使用所有边,一个人都会自动在另一个奇数度节点结束。
为什么?
因为当一个人到达偶数度节点时,就会使用奇数个附着的边。
为什么?
每当一个人到达一个节点时,一个人也会离开该节点,因此使用偶数条边。现在,一个到达并在偶数度节点上使用一条边。因此,在偶数度节点上总共使用了奇数条边。
偶数 − 奇数 = 奇数,因此留下了奇数个未使用的边。奇数始终为非零,因此至少有一个未使用的边可用于离开该节点。因此,无论是否使用所有边,都将自动在奇数度节点处结束。
你有什么建议吗, 如何找到一个奇 数度的节点?
当然,人们可以检查每个节点的度数,直到找到一个奇数度的节点。这是一种不计算的方法。
可以选择任何节点。如果它的程度是奇数,那么人们已经找到了。如果没有,则从该节点开始绘制一个循环。它将在奇数度节点处结束,然后找到一个奇数度节点,或者在起始节点处结束。如果是这样,那么忽略所有使用的边缘并再次执行此操作,即选择一个节点并绘制路径或循环。这种情况一直持续到找到一个奇数度节点或不再有未使用的边。那么所有节点都具有偶数度。
如果图形就像一个有单行道的城市怎么办?
具有只能沿一个方向遍历的边的图称为 有向图。根据上述论证,以下两种说法是合理的。
有向图允许欧拉循环,当且仅当 每个 节点的传出边数等于传入边数。
有向图允许欧拉路径,当且仅当
• 一个节点比传入 Edge 多一个传出 Edge,
• 一个节点的入站 Edge 比出站 Edge 多一条,并且
• 所有其他 Edge 的传出和传入 Edge 数量相同。
关注或订阅更新: