• 拟阵学习笔记


    参考 巨佬的讲解

    拟阵的定义

    对于拟阵( m Matroid)(M=(S,L))(S) 是一个集合,(L)(S) 部分子集构成的集合。

    遗传性(forall Ain L,Bsubseteq A:Bin L)

    交换性(forall Ain L,Bin L,|A|<|B|:exists x in (B-A),Acup {x}in L)

    蒟蒻手玩的拟阵:

    S={0,1,2}
    L={{},{0},{1},{2},{0,1},{0,2},{1,2}}
    

    (L) 中的所有元素(集合)称为 独立集,所有极大的独立集称为 极大独立集,其大小称为拟阵的

    拟阵上的最优化问题

    拟阵是用来解决贪心问题的,可以转化为拟阵一定可以贪心,但贪心不一定可转化为拟阵。

    问题中每个 (xin S) 有个权值 (v(x))要求 (v(x)ge 0)

    每个 (Asubseteq S) 有个权值 (w(A)=sum_{xin A} v(x))

    然后给一个拟阵 (M=(S,L)),要求 (L) 中的 权值最大独立集。这显然是其中一个 极大独立集

    这里是求 权值最大独立集 的伪代码,这是个贪心:

    Set solve(Matroid M){
        Set A; A.clear();
        sort(M.S,greater<Element>());
        for(Element x∈M.S)
            if(A∪{x}∈M.L) A∪={x};
        return A;
    }
    

    正确性证明: 易证任一时刻 (A) 都是该大小的权值最大独立集,并且是全局权值最大独立集的子集。

    放几道拟阵例题:

    最小生成树问题: (M=(S,L))(S) 取边集,(L) 取不够成环的所有边集。易证遗传和交换。权值可以取 (w(x)=A-) 边权((A) 是权值最大值,保证 (w(x)ge 0))。

    感觉题目好难用拟阵做啊,或许是我理解不够深入?感谢评论添加拟阵例题。

  • 相关阅读:
    深度残差网络的理解
    迪士尼收购福克斯,传媒巨头江山瓦解?
    穷人的噩梦:来自金融公司的高利贷
    智能家居沦为家暴的“新工具”?
    墨西哥“死亡选举”导致近 150 名政客被杀
    推荐系统
    多线程编程
    two sum
    python 操作mysql
    天才大猩猩可可去世,享年 46 岁
  • 原文地址:https://www.cnblogs.com/George1123/p/13905784.html
Copyright © 2020-2023  润新知