Loading

拟阵学习笔记

参考 巨佬的讲解

拟阵的定义

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

遗传性\(\forall A\in L,B\subseteq A:B\in L\)

交换性\(\forall A\in L,B\in L,|A|<|B|:\exists x \in (B-A),A\cup {x}\in L\)

蒟蒻手玩的拟阵:

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

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

拟阵上的最优化问题

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

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

每个 \(A\subseteq S\) 有个权值 \(w(A)=\sum_{x\in 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\))。

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

posted @ 2020-10-31 12:33  George1123  阅读(276)  评论(0编辑  收藏  举报