搜索
首页后端开发C++为什么Prim和Kruskal的最小生成树算法在有向图中失败?

为什么Prim和Kruskal的最小生成树算法在有向图中失败?

Prim的方法和Kruskal的算法是在无向图中定位MST(最小生成树)的两种常见方法。然而,这些技术不能为有向图生成正确的MST。这是因为有向图不适合Prim和Kruskal算法所使用的基本假设和方法。

Prim 算法

首先,有Prim算法,它涉及以贪婪的方式向扩展的最小生成树添加边,直到所有顶点都被覆盖。MST内部的顶点通过具有最低权重的边与MST外部的顶点相连。由于无向图中的所有边都可以以任意方向移动,因此从MST到外部顶点的最短路径很容易找到。然而,在有向图中,边总是指向一个方向,可能没有直线连接MST和外部顶点。这与Prim算法的基本原则相矛盾。

这样的一个示例是有向边 (u,v),它将 MST 中的顶点 u 连接到 MST 外部图中的顶点 v。由于Prim方法中的MST必须通过直接边连接到外部顶点,所以边(u,v)被忽略,导致MST可能不准确或不充分。

Kruskal的方法

克鲁斯卡尔方法是一种加权边排序技术,它重复地将不生成循环的最小权重边添加到图中。该方法最适合无向图,因为边缘指向两个方向,因此可以轻松检测到循环。由于边的方向在有向图中很重要,因此循环的概念变得更加微妙。 Kruskal 的方法忽略了这种复杂性。

假设您正在构建的 MST 中有一个定向循环。当应用于有向图时,克鲁斯卡尔的技术可以生成包含有向循环的树。该方法会产生不准确的 MST,因为其基于无向边的循环检测机制无法正确捕获有向图中的循环。

结论

可以得出结论,虽然 Prim 和 Kruskal 的技术对于在无向图中定位 MST 很有用,但它们不适用于有向图。这些方法产生不准确或不充分的 MST,因为它们所依赖的基本假设和机制在有向图的设置中不成立。有向图有其独特的属性和复杂性,因此采用有向图特定技术(例如 Chu−Liu/Edmonds 方法)来获得最小生成树非常重要。

以上是为什么Prim和Kruskal的最小生成树算法在有向图中失败?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文转载于:tutorialspoint。如有侵权,请联系admin@php.cn删除
Win11 23H2更新遇到问题该怎么解决?Win11 23H2更新遇到问题该怎么解决?Dec 25, 2023 pm 12:18 PM

用户一般会通过升级电脑的系统版本用来修复一些问题,如果用户使用win11系统更新到最新版本的23H2失败了,可以有三种方法来解决您的问题。Win11更新23H2失败了怎么办方法一:绕开TPM1、点击“文件资源管理器-查看”,勾选一下下拉菜单中的“隐藏的项目”的选项。2、转到并删除“C:\$WINDOWS.~BT\Sources\Panther-Appraiser_Data.ini”。3、然后在该位置重新建一个同名的文件夹,然后点击将“隐藏项目”选项取消。4、重新更新一下系统,最后点击到“Wind

为什么localstorage无法成功保存数据?为什么localstorage无法成功保存数据?Jan 03, 2024 pm 01:41 PM

存储数据到localstorage为何总是失败?需要具体代码示例在前端开发中,我们经常需要将数据存储在浏览器端,以便提高用户体验和方便之后的数据访问。Localstorage是HTML5提供的一项用于客户端存储数据的技术,它提供了一种简单的方法来存储数据,并且可以在页面刷新或关闭后保持数据的持久化。然而,当我们使用localstorage进行数据存储时,有时

如何解决pip更新失败的问题?如何解决pip更新失败的问题?Jan 27, 2024 am 08:32 AM

遇到pip更新失败怎么办?最近,在使用Python开发过程中,我遇到了一些关于pip更新失败的问题。在进行开发时,我们常常需要使用pip来安装、升级和移除Python的第三方库。而pip的更新失败会严重影响到我们的开发工作。本文将会探讨一些常见的pip更新失败的情况,并提供解决方法,希望能帮助到遇到类似问题的开发者。首先,当我们执行pipinstall-

win7升级至win10失败后,如何解决?win7升级至win10失败后,如何解决?Dec 26, 2023 pm 07:49 PM

如果我们使用的操作系统是win7的话,对于在升级的时候有的小伙伴们可能就会出现win7升win10失败的情况。小编觉得我们可以尝试重新升级看下能不能解决。详细内容就来看下小编是怎么做的吧~win7升win10失败怎么办方法一:1.建议下载个驱动人生先评估下你电脑是否可以升级到Win10,2.然后升级后用驱动人生检测下有没有驱动异常这些,然后一键修复。方法二:1.删除C:\Windows\SoftwareDistribution\Download下的所有文件。2.win+R运行“wuauclt.e

如何使用C++中的Kruskal算法如何使用C++中的Kruskal算法Sep 19, 2023 pm 04:10 PM

如何使用C++中的Kruskal算法Kruskal算法是一种常用的解决最小生成树问题的贪心算法。在使用C++编程中,我们可以通过简单的代码示例来理解和使用Kruskal算法。Kruskal算法的基本思想是通过不断选择边权重最小且不会构成回路的边,直到生成树中包含了所有的顶点为止。下面我们将逐步介绍如何使用C++实现Kruskal算法。第一步:数据准备首先,我

如何修复win10更新错误代码0x800f0982如何修复win10更新错误代码0x800f0982Jan 14, 2024 pm 05:54 PM

win10系统已经慢慢开始普及于市场但使用的时候还是有着很多的bug,最近很多小伙伴就遇到了更新失败0x800f0982的问题,下面就给大家带来详细的解决方法。win10更新失败无法开机:方法一、系统更新异常删除异常软件1、卸载并重新安装任何最近添加的语言包。2、选择“检查更新”并安装更新。方法二:更新异常重置电脑1、点击开始打开“设置”选择“更新和安全”。2、点击左侧“恢复”在“重置此电脑”恢复选项下选择“开始”。3、选择“保留我的文件”。

解决win10系统升级失败无法启动的方法解决win10系统升级失败无法启动的方法Jan 13, 2024 pm 02:45 PM

win10系统是一款非常优秀的智能系统,经常使用电脑的小伙伴们都应该知道win10系统是一款更新补丁非常频繁的系统,近来有很多的小伙伴们反应自己在更新的时候出现了失败的现象,今天小编就为大家带来了win10系统升级失败开不了机的解决办法一起来看一下吧。win10更新失败的解决办法:1、首先同时按下键盘快捷键Win+R,打开运行窗口输入命令services.msc,然后点击确定按钮,打开服务窗口。2、在服务窗口列表找到“WindowsUpdate”,双击打开。2、然后把服务状态点击“停止”,确定修

解决kb4023057更新安装问题解决kb4023057更新安装问题Dec 27, 2023 am 09:41 AM

近期,win101909版本停止服务,21h1即将推出,微软又为用户推送了kb4023057的更新程序,能够帮助用户解决各种更新失败的问题。但是如果我们遇到kb4023057更新安装失败怎么办呢,不用担心,下面就一起来看一下解决方法吧。kb4023057更新安装失败解决方法1、首先打开“设置”,选择“更新和安全”2、点击左边的“疑难解答”3、找到“windows更新”,然后点击“运行疑难解答”4、等待检测问题。5、检测完成之后,点击“应用此修复程序”6、最后只要等待修复完成就可以了。

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

SublimeText3 英文版

SublimeText3 英文版

推荐:为Win版本,支持代码提示!

螳螂BT

螳螂BT

Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

Atom编辑器mac版下载

Atom编辑器mac版下载

最流行的的开源编辑器

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)