• [学习笔记] 拟阵贪心


    拟阵定义

    本篇博客只讲解和信息竞赛紧密相关的拟阵理论,其他的一概不谈。

    给定一个全集 (U),一个 (U) 上的集族 (mathcal I) 被称为拟阵,记作 (mathcal M=(U,mathcal I)),当且仅当满足:

    • (empty in mathcal I)
    • 如果 (Ain mathcal I,Bsubseteq A),那么 (Bsubseteq mathcal I)(遗传性)
    • 如果 (Ainmathcal I,Binmathcal I)(|A|<|B|),那么存在 (bin Bsetminus A) 使得 (Acup{b}inmathcal I)(交换性)

    我们称 (A) 为拟阵的独立集当且仅当 (Ainmathcal I),那么遗传性表明了独立集的子集任然是独立集;交换性表明了我们可以通过向较小的独立集中增加某个元素得到新的独立集。

    拟阵贪心原理

    如果我们证明一个问题是拟阵,那么就可以使用拟阵贪心。

    拟阵贪心的内容是,对于 (xin U) 有一个权值 (w(x)),我们把它从大到小排序,然后向原有的独立集 (D) 依次加入,如果加入之后得到的 (D') 仍然是独立集,我们让 (Dleftarrow D') 继续上述过程。

    证明考虑归纳法,我们考虑拟阵中最大的元素 (x) 满足 ({x}) 是独立集,我们首先证明存在一种最优的选取方案包含元素 (x),考虑调整法,对于最优独立集 (Binmathcal I),根据交换性我们可以向 ({x}) 中一直增加元素直到大小相等,设最后 (B) 留下的是 (y),因为 (w(x)geq w(y)) 所以调整后不变差。

    然后考虑选取 (x) 之后剩下的东西仍然是拟阵,记 (U'={y|yin U,{x,y}inmathcal I})(mathcal I'={A|Acup {x}inmathcal I,Acap {x}=empty}),那么不难发现新的 (mathcal M'=(U',mathcal I')) 同样满足拟阵性质,所以一直归纳下去就得到了我们的贪心。

    例题

    最小生成树

    (U) 为所有边的集合,(mathcal I) 为所有森林的集合,遗传性显然,我们考虑证明交换性。

    (A,Bin mathcal I) 并且 (|A|<|B|),那么森林 (B) 的连通块数量小于森林 (A) 的连通块数量。考虑反证,如果 (B) 的所有边加入 (A) 中都会构成环,那么我们强行加入之后连通块数量不变,而 (B) 的边集是新图的边集的子集,所以 (B) 的连通块数量更多,这样就导出了矛盾。那么我们直接使用拟阵贪心就得到了我们的 ( t kruskal) 算法。

    Dates:反证关键就在于证明交换性,我们通常使用反证法,然后尝试导出独立集大小关系的矛盾。

  • 相关阅读:
    《Python自动化运维:技术与最佳实践》
    舍本求末的运维自动化技术热潮
    Policy Gradients
    Machine Learning Notes Ⅵ
    Machine Learning Notes Ⅴ
    Machine Learning Notes Ⅳ
    Machine Learning Notes Ⅲ
    Machine Learning Notes Ⅱ
    Machine Learning Notes Ⅰ
    在Linux系统中如何把文件拷贝到U盘
  • 原文地址:https://www.cnblogs.com/C202044zxy/p/15531163.html
Copyright © 2020-2023  润新知