日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

模板:广义二项式反演/广义容斥(组合数学)

發布時間:2023/12/3 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 模板:广义二项式反演/广义容斥(组合数学) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 前言
  • 經典容斥原理
  • 廣義二項式反演/廣義容斥
  • min-max 容斥

所謂二項式反演,就是對兩個項的式子進行反演。

(逃)

前言

期望和容斥是我的感性二兄弟!
之前的容斥我基本也都是靠感性理解做的…
感性理解就會導致:考場上試著寫出一個式子,不知道它對不對。
然后就會有寫出正確式子但是不敢敲代碼,或者敲了半天過不去樣例才明白自己的式子是錯的(甚至還懷疑是不是代碼寫掛了)這樣的悲劇發生(我都經歷過)
前天差不多搞完了期望,今天輪到容斥了!
讓我們暫時放下感性,擁抱數學。

PS:本篇有大量的數學語言,其中的一些變換來自與對式子實質的理解,直接硬看可能難以明白。建議看清楚大致思路后就按照自己的路子推一遍。(因為我就是這么做的)

經典容斥原理

我本來想叫它狹義容斥,但似乎有點瞧不起它…
就像經典力學不叫狹義力學一樣。
抽象的內容如下:
假設有 kkk 個性質,滿足每個性質的集合分別為 A1...kA_{1...k}A1...k?S={Ai∣1≤i≤k}S=\{A_i|1\le i\le k\}S={Ai?1ik},那么就有:
∣?i=1kAi∣=∑T?S(?1)∣T∣×∣?i=1∣T∣Tiˉ∣|\bigcap_{i=1}^k A_i|=\sum_{T\subseteq S}(-1)^{|T|}\times|\bigcap_{i=1}^{|T|}\bar{T_i}|i=1?k?Ai?=T?S?(?1)T×i=1?T?Ti?ˉ?
證明:
GP={x∣?Ai∈P,x∈Ai,?Ai?P,x?Ai}G_P=\{x|\forall A_i\in P,x\in A_i,\forall A_i\notin P,x\notin A_i\}GP?={x?Ai?P,xAi?,?Ai?/?P,x/?Ai?},也就是恰好滿足性質集合 PPP 的元素集合
考慮每個 GGG 集合的統計次數,就有:
∑T?S(?1)∣T∣×∣?i=1∣T∣Tiˉ∣=∑P?S∣GP∣∑T∩P=?(?1)∣T∣=∑P?S∣GP∣∑T?Pˉ(?1)∣T∣=∑P?SGP[Pˉ=?]=∣?i=1kAi∣\sum_{T\subseteq S}(-1)^{|T|}\times|\bigcap_{i=1}^{|T|}\bar{T_i}|=\sum_{P\subseteq S}|G_P|\sum_{T\cap P=\emptyset}(-1)^{|T|}\\=\sum_{P\subseteq S}|G_P|\sum_{T\subseteq \bar{P}}(-1)^{|T|}=\sum_{P\subseteq S}G_P[\bar{P}=\emptyset]\\=|\bigcap_{i=1}^k A_i|T?S?(?1)T×i=1?T?Ti?ˉ?=P?S?GP?TP=??(?1)T=P?S?GP?T?Pˉ?(?1)T=P?S?GP?[Pˉ=?]=i=1?k?Ai?
證畢。

廣義二項式反演/廣義容斥

通常是用來進行至多和恰好之間的轉化

本人非常不喜歡廣義容斥這個名字。
因為感覺它有誤導性,我很長時間都是按照容斥的角度硬理解,但是就用容斥三個圈套來套去的那點東西,把組合數說成幾個里面選幾個,硬考慮統計次數,似乎很難講明白,也許其實也可以那么理解,只是我不會qwq。
我感覺還是從它的另一個叫法:廣義二項式反演 的角度來理解更加簡單。
定義 fxf_xfx?至少xxx 個元素的方案數,gxg_xgx?恰好xxx 個元素的方案數。
則有:
fx=∑i=xnCixgif_x=\sum_{i=x}^nC_i^x g_ifx?=i=xn?Cix?gi?
然而,通常情況下,ggg 的值較難求出,而 fff 的值相對簡單,這是就需要進行反演用 fffggg
gx=∑i=xn(?1)i?xCixfig_x=\sum_{i=x}^n(-1)^{i-x}C_{i}^xf_igx?=i=xn?(?1)i?xCix?fi?
證明:
∑i=xn(?1)i?xCixfi\sum_{i=x}^n(-1)^{i-x}C_{i}^xf_ii=xn?(?1)i?xCix?fi?
=∑i=xn(?1)i?xCix∑j=inCjigj=\sum_{i=x}^n(-1)^{i-x}C_{i}^x\sum_{j=i}^nC_j^ig_j=i=xn?(?1)i?xCix?j=in?Cji?gj?
=∑j=xngj∑i=xj(?1)i?xCixCji=\sum_{j=x}^ng_j\sum_{i=x}^j(-1)^{i-x}C_i^xC_j^i=j=xn?gj?i=xj?(?1)i?xCix?Cji?
=∑j=xngj∑i=xj(?1)i?xCjxCj?xi?x=\sum_{j=x}^ng_j\sum_{i=x}^j(-1)^{i-x}C_j^xC_{j-x}^{i-x}=j=xn?gj?i=xj?(?1)i?xCjx?Cj?xi?x?
=∑j=xnCjxgj∑i=0j?x(?1)iCj?xi?1(j?x)?i=\sum_{j=x}^nC_j^xg_j\sum_{i=0}^{j-x}(-1)^{i}C_{j-x}^{i}\cdot1^{(j-x)-i}=j=xn?Cjx?gj?i=0j?x?(?1)iCj?xi??1(j?x)?i
=∑j=xnCjxgj[j=x]=\sum_{j=x}^nC_j^xg_j[j=x]=j=xn?Cjx?gj?[j=x]
=gx=g_x=gx?
證畢。

類似的,若 fxf_xfx?至多xxx 個元素的方案數,gxg_xgx?恰好xxx 個元素的方案數。
則有:
fx=∑i=0nCxigif_x=\sum_{i=0}^nC_x^i g_ifx?=i=0n?Cxi?gi?

gx=∑i=0x(?1)x?iCxifig_x=\sum_{i=0}^x(-1)^{x-i}C_{x}^if_igx?=i=0x?(?1)x?iCxi?fi?
證法類似。

min-max 容斥

感覺換湯不換藥。
給出式子:
max?(S)=∑T?S(?1)∣T∣min?(T)\max(S)=\sum_{T\sub S}(-1)^{|T|}\min(T)max(S)=T?S?(?1)Tmin(T)
min?(S)=∑T?S(?1)∣T∣max?(T)\min(S)=\sum_{T\sub S}(-1)^{|T|}\max(T)min(S)=T?S?(?1)Tmax(T)
這里只給出第一個式子的證明,第二個式子的證明較為類似。
考慮最大值 max?(S)\max(S)max(S),它成為最小值產生貢獻當且近當 T={max?(S)}T=\{\max(S)\}T={max(S)},顯然只會產生一次正貢獻。
而對于不是最大值的元素 x∈Sx\in SxS,設比它大的元素的個數為 kkk,那么它成為最小值產生貢獻當且近當 TTT 為前 kkk 個元素的某個子集并上 {x}\{x\}{x},那么它的系數就是:
∑i=0x(xi)(?1)i\sum_{i=0}^x\binom{x}{i}(-1)^ii=0x?(ix?)(?1)i
二項式反演一下:
∑i=0x(xi)(?1)i=∑i=0x(xi)(?1)i(1)x?i=(1?1)x=0\sum_{i=0}^x\binom{x}{i}(-1)^i=\sum_{i=0}^x\binom{x}{i}(-1)^i(1)^{x-i}=(1-1)^{x}=0i=0x?(ix?)(?1)i=i=0x?(ix?)(?1)i(1)x?i=(1?1)x=0
所以所有不是最大值的元素的貢獻都是0。
那么最后西格瑪的結果就是 max?(S)\max(S)max(S)

注意:這個式子當最小值不唯一的時候依然成立min?(T)\min(T)min(T) 的含義就變為了所有并列最小值的和。但是所求的最大值必須唯一!

總結

以上是生活随笔為你收集整理的模板:广义二项式反演/广义容斥(组合数学)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。