此类问题通常被表示为:
给出 n n n元一次不定方程 ∑ i = 1 n x i = m sum_{i=1}^{n}x_i=m ∑i=1nxi=m与 n n n个限制条件 x i ≤ b i x_ileq b_i xi≤bi,其中 m , b i ∈ N m,b_iin N m,bi∈N。求该不定方程的非负整数解的个数。
解决此问题的通常思路是:将有限制的不定方程非负整数解计数转化为无限制的不定方程非负整数解计数。
无限制的不定方程非负整数解计数
先考虑如下问题:给出 n n n元一次不定方程 ∑ i = 1 n x i = m sum_{i=1}^{n}x_i=m ∑i=1nxi=m,其中 m ∈ N minN m∈N。求方程的非负整数解的个数。
在无限制的情况下,该方程非负整数解的个数为 C m + n − 1 n − 1 C_{m+n-1}^{n-1} Cm+n−1n−1。
证明:隔板法:假设有 n + m − 1 n+m-1 n+m−1个位置,选出其中 n − 1 n-1 n−1个位置作为隔板,其余 m m m个位置作为数字 1 1 1,这 n − 1 n-1 n−1个将 m m m个 1 1 1分成了 n n n段,每一段 1 1 1的个数即为两个隔板间代表的数。故 C m + n − 1 n − 1 C_{m+n-1}^{n-1} Cm+n−1n−1即为答案。
如何转化
有一个关于集合交并补差运算的公式:
∣
⋂
i
=
1
n
S
i
∣
=
∣
U
∣
−
∣
⋃
i
=
1
n
∁
U
S
i
∣
|bigcap_{i=1}^{n}S_i|=|U|-|bigcup_{i=1}^{n}complement_US_{i}|
∣i=1⋂nSi∣=∣U∣−∣i=1⋃n∁USi∣
所以,令
U
U
U为无限制下满足原方程的全体非负整数解的集合,
S
i
S_i
Si为满足约束条件
x
i
≤
b
i
x_ileq b_i
xi≤bi的解的集合,此时
∣
⋂
i
=
1
n
S
i
∣
|bigcap_{i=1}^{n}S_i|
∣⋂i=1nSi∣显然即为同时满足所有约束条件、即合法解的集合的元素个数。根据这个公式,我们只需要考虑不满足
x
i
≤
b
i
x_ileq b_i
xi≤bi的解的集合(即
∁
U
S
i
complement_US_{i}
∁USi),此时
∣
U
∣
=
C
m
+
n
−
1
n
−
1
,
∣
⋃
i
=
1
n
∁
U
S
i
∣
|U|=C_{m+n-1}^{n-1},|bigcup_{i=1}^{n}complement_US_{i}|
∣U∣=Cm+n−1n−1,∣⋃i=1n∁USi∣显然可以直接运用容斥公式求出来。这样一来,我们就将有限制的不定方程非负整数解计数转化为无限制的不定方程非负整数解计数。
如何计算 ∣ ⋃ i = 1 n ∁ U S i ∣ |bigcup_{i=1}^{n}complement_US_{i}| ∣⋃i=1n∁USi∣
根据容斥公式
⋃
i
=
1
n
S
i
=
∑
k
=
1
n
(
−
1
)
k
−
1
∑
a
i
<
a
i
+
1
∣
a
∣
=
k
∣
⋂
i
=
1
k
S
a
i
∣
bigcup_{i=1}^{n}S_i=sum_{k=1}^{n}(-1)^{k-1}sum_{a_i<a_{i+1}}^{|a|=k}|bigcap_{i=1}^{k}S_{a_i}|
⋃i=1nSi=∑k=1n(−1)k−1∑ai<ai+1∣a∣=k∣⋂i=1kSai∣,我们只需要考虑如何计算
∑
a
i
<
a
i
+
1
∣
a
∣
=
k
∣
⋂
i
=
1
k
∁
U
S
a
i
∣
sum_{a_i<a_{i+1}}^{|a|=k}|bigcap_{i=1}^{k}complement_US_{a_i}|
∑ai<ai+1∣a∣=k∣⋂i=1k∁USai∣即可。
∣
⋂
i
=
1
k
∁
U
S
a
i
∣
|bigcap_{i=1}^{k}complement_US_{a_i}|
∣⋂i=1k∁USai∣意为满足所有
k
k
k个限制条件
x
i
≥
b
i
+
1
(
i
∈
a
)
x_ige b_i+1(iin a)
xi≥bi+1(i∈a)(即不满足
x
i
≤
b
i
x_ile b_i
xi≤bi)解的个数,那么,为了保证
x
i
≥
b
i
+
1
(
i
∈
a
)
x_ige b_i+1(iin a)
xi≥bi+1(i∈a)对
∀
i
forall i
∀i成立,我们将原方程转化为:
∑
i
=
1
n
x
i
=
m
−
∑
i
=
1
k
(
b
a
i
+
1
)
sum_{i=1}^{n}x_i=m-sum_{i=1}^{k}(b_{a_i}+1)
i=1∑nxi=m−i=1∑k(bai+1)
此时,由于已保证每一个
x
i
x_i
xi恰好不会被满足(取值至少为
b
i
+
1
b_i+1
bi+1),故此时只需令所有
x
x
x(包括
x
a
i
x_{a_i}
xai)任意取非负值累加得到
m
−
∑
i
=
1
k
(
b
a
i
+
1
)
m-sum_{i=1}^{k}(b_{a_i}+1)
m−∑i=1k(bai+1),即可得到原方程不满足此
k
k
k个约束条件的解。而这个问题的解便是无约束不定方程
∑
i
=
1
n
x
i
=
m
−
∑
i
=
1
k
(
b
a
i
+
1
)
sum_{i=1}^{n}x_i=m-sum_{i=1}^{k}(b_{a_i}+1)
i=1∑nxi=m−i=1∑k(bai+1)的解的个数,等于
C
m
+
n
−
1
n
−
1
C_{m+n-1}^{n-1}
Cm+n−1n−1。
因此,原有约束的不定方程的解的个数即为:
C
m
+
n
−
1
n
−
1
+
∑
k
=
1
n
(
−
1
)
k
∑
a
i
<
a
i
+
1
∣
a
∣
=
k
C
m
−
∑
i
=
1
k
(
b
a
i
+
1
)
+
n
−
1
n
−
1
C_{m+n-1}^{n-1}+sum_{k=1}^{n}(-1)^ksum_{a_i<a_{i+1}}^{|a|=k}C_{m-sum_{i=1}^{k}(b_{a_i}+1)+n-1}^{n-1}
Cm+n−1n−1+k=1∑n(−1)kai<ai+1∑∣a∣=kCm−∑i=1k(bai+1)+n−1n−1
最后注意:在原不定方程被变换形式后此通式可能不适用,但依然可以考虑将有约束问题转化为无约束问题。
最后
以上就是天真台灯最近收集整理的关于基于容斥原理解决的有限制不定方程非负整数解(多重集组合数)计数问题的全部内容,更多相关基于容斥原理解决内容请搜索靠谱客的其他文章。
发表评论 取消回复