zoukankan      html  css  js  c++  java
  • 莫比乌斯反演(一)从容斥到反演

    公式

    《组合数学》里是这样写的:[1]

    [X_n={ 1,2, dots ,n } ]

    [F: mathcal{P}(X_n) ightarrow Re​ ]

    [G: mathcal{P}(X_n) ightarrow Re​ ]

    白话:(F),(G) 都是一个函数,表示每个(X_n)的子集对应一个实数。$mathcal{P}(X_n) $表示全体子集的集合。(数学表达抽象是为了针对普遍情况,可以带入具体的概念去理解)

    其中

    [G(K)=sumlimits_{L subseteq K }^{} F(L) (K subseteq X_n)​ ]

    特别地(通过莫比乌斯反演),我们有

    [F(K)=sumlimits_{L subseteq K }^{} (-1)^{|K|-|L|}G(L) (K subseteq X_n)​ ]

    举例

    《组合数学》书本例子[1:1]:(原文真的很讲究)设(A_1,A_2,dots,A_n​) 有限集(S​) 的子集,(Ksubseteq {1,2,dots,n}​)

    定义(F(K)​)表示计数(S​)里有多少个元素,不属于所有(K​)选中的子集,而且都属于没选中的子集。

    于是(G(K)=sumlimits_{L subseteq K }^{} F(L) ​) 就表示计数所有不在(K​)选中的子集中的的共有元素的个数。要想通这一点有点不直接,可以画个图:(小黑圈表示有这个元素,小蓝圈表示没有。)

    草图

    也可以这样想,所有不在(K)选中的子集中的的共有元素,是每个(F(L))都会计一次的。知道了这一结论,可以发现(G(K)) 还是蛮好算的,有

    [G(K) = left| igcaplimits_{i otin K }^{} A_i ight| ​ ]

    根据反演公式,有

    [F(K)=sumlimits_{L subseteq K }^{} (-1)^{|K|-|L|}G(L) ]

    可以把集合表达式带进去,得到

    [left| overline{A_1} cap overline{A_2} cap dots cap overline{A_n} ight| =sumlimits_{L subseteq K }^{} (-1)^{|K|-|L|} left| igcaplimits_{i otin K }^{} A_i ight| ]

    在等价替换一下,当(K= {1,2,dots,n})时,

    [left| overline{A_1} cap overline{A_2} cap dots cap overline{A_n} ight| =sumlimits_{J subseteq X_n }^{} (-1)^{|J|} left| igcaplimits_{i in J }^{} A_i ight| ​ ]

    这就等价容斥原理(绝了)。

    理解可以这样: $left| overline{A_1 cup A_2 cup dots cup A_n} ight| $表示这些子集的并集,取反的元素还有多少个,这个问题容易想到是用容斥解,不过本文是为了引入莫比乌斯反演,表现一下容斥和莫比乌斯反演的关系。

    我不想把篇幅弄得太长,太长不太便于阅读,下一篇将正式讲莫比乌斯反演的一些例子。


    1. 《组合数学》P115 ↩︎ ↩︎

  • 相关阅读:
    根据对象的属性排序数组
    将多维数组的元素全部取出,组成一维数组的方法
    微信公众号报错 config:invalid signature
    改造业务代码
    微信公众号调用扫一扫
    JQuery :contains选择器,可做搜索功能,搜索包含关键字的dom
    【转】超全功能测试方法集锦——(通用黑盒功能:测试新人必收攻略)
    Oracle 查看表空间的大小及使用情况sql语句
    oracle数据库 参数open_cursors和session_cached_cursor详解!
    使用MITab操作MapInfo地图文件
  • 原文地址:https://www.cnblogs.com/tieway59/p/10636356.html
Copyright © 2011-2022 走看看