首页 > 编程语言 >Kruskal’s算法正确性的证明

Kruskal’s算法正确性的证明

时间:2023-02-13 15:55:05浏览次数:43  
标签:Kruskal 证明 正确性 算法 最优 成本 贪心

 Kruskal’s算法产生一棵最小生成树

证明:
设T是贪心法产生的解,U是最优解  
设e是属于T但不属于U的成本最小的边;换言之,T中成本小于c(e)的边都在U中.
设f是{e}+U产生的环路上不在T中的一条边,
用反证法证明c(f)≥c(e):如果f的成本小于e的成本,贪心法会先于e将f加入到T中,矛盾。所以c(f)>=c(e)。
于是,如果从U中删除f并加入e(剪枝法),得到的树U'仍然没有环且包含所有节点,并且U'比原来的树更优,这与假设“U是最优解”矛盾。
所以,其实不存在这样的e,即贪心解就是最优解

标签:Kruskal,证明,正确性,算法,最优,成本,贪心
From: https://www.cnblogs.com/yuxiyuxi/p/17116663.html

相关文章

  • 一致性Hash算法
    最近有小伙伴跑过来问什么是Hash一致性算法,说面试的时候被问到了,因为不了解,所以就没有回答上,问我有没有相应的学习资料推荐,当时上班,没时间回复,晚上回去了就忘了这件事,今天......
  • [数据结构] 排序算法的原理代码及可视化演示
    排序算法本文汇总了核心排序算法及其代码实现:-插入法:直接插入排序,折半插入排序,2-路插入排序(折半插入的改进版)(待更新),希尔排序(待更新)-交换法:冒泡排序,快速......
  • 由数据范围反推算法复杂度以及算法内容
    一般ACM或者笔试题的时间限制是1秒或2秒。在这种情况下,C++代码中的操作次数控制在\(10^7∼10^8\)为最佳。下面给出在不同数据范围下,代码的时间复杂度和算法该如何选择:......
  • 搭个ChatGPT算法模型,离Java程序员有多远?
    作者:小傅哥博客:https://bugstack.cn沉淀、分享、成长,让自己和他人都能有所收获!最近ChatGPT很火,火到了各行各业。记得去年更多的还是码农最新体验后拿它搜代码,现在各......
  • 老生常谈React的diff算法原理-面试版
    第一次发文章notonly(虽然)版式可能有点烂butalso(但是)最后赋有手稿研究finally看完他你有收获diff算法:对于update的组件,他会将当前组件与该组件在上次更新是对应的......
  • 代码随想录算法Day11 | 20. 有效的括号,1047. 删除字符串中的所有相邻重复项,逆波兰表达
     20.有效的括号题目链接: 20.有效的括号-力扣(LeetCode)题目给定一个只包括'(',')','{','}','[',']' 的字符串s,判断字符串是否有效。有效字符串需满足:左括号必须用......
  • LeetCode算法题二——合并两个有序链表
    题目给你一个非空整数数组nums,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。你必须设计并实现线性时间复杂度的算法来解决此问......
  • 基于Astar算法的栅格地图目标最短路径搜索算法MATLAB仿真,带GUI界面
    1.算法描述Astar算法是一种图形搜索算法,常用于寻路。它是个以广度优先搜索为基础,集Dijkstra算法与最佳优先(bestfit)算法特点于一身的一种算法。它通过下面这个函数来......
  • 基于GA算法的TSP最短路径搜索matlab仿真
    1.算法描述(1)编码:将问题的候选解用染色体表示,实现解空间向编码空间的映射过程。遗传算法不直接处理解空间的决策变量,而是将其转换成由基因按一定结构组成的染色体。编码方式......
  • 第一章 基础算法三
    双指针类型:2个指针指向不同的序列,比如归并排序2个指针指向同一个序列,用的比较多,比如快速排序通用模板俗称的枚举右端点,遍历左端点for(inti=0,j=0;i<......