关于MIT拟阵笔记中定理5.2证明里c(t_i)≥c(t_p)的疑问
关于MIT拟阵笔记中定理5.2证明里$c(t_i)≥c(t_p)$的疑问
嘿,这个点其实是贪心算法的核心规则直接推导出来的,我给你拆解一下:
首先回忆定理5.2的证明背景:我们在分析加权拟阵上的贪心算法,它的操作逻辑是把所有元素按权值从大到小排序,然后依次遍历每个元素,如果将当前元素加入已选的独立集后仍然是独立集,就把它选进来。
证明里的$A = {t_1, t_2, ..., t_m}$就是贪心算法最终选出的集合,按照贪心的选法,这个集合里的元素自然满足权值非递增的顺序:$c(t_1) ≥ c(t_2) ≥ ... ≥ c(t_p) ≥ ... ≥ c(t_m)$。这里的$t_p$是我们找到的第一个不在最优集合$B$里的贪心选元素,而$t_i$指的是$A$中在$t_p$之前被选中的元素(也就是$i < p$),那根据上面的权值顺序,必然有$c(t_i) ≥ c(t_p)$。
再结合你提到的后半句逻辑:因为$c(t_i) ≥ c(t_p) > c(s_p)$,那为什么$s_p$没被选中?其实是因为当贪心算法遍历到$s_p$的时候,要么它不能加入当时的独立集(否则就会被选),要么当时有更优的元素(比如$t_i$或者$t_p$)已经占据了位置,导致$s_p$无法形成独立集。但核心的$c(t_i)≥c(t_p)$,完全是贪心算法“从大到小选元素”的规则带来的直接结果~
备注:内容来源于stack exchange,提问作者Steve Z
相关产品推荐
相关产品推荐

