跳到主要内容

群论应用:布尔函数计数

· 阅读需 4 分钟
暮月
站主

抽象代数由于其抽象的特性,初学时往往难以理解。本文介绍群论的一个应用:布尔函数计数。

Burnside 引理

在分析群对于集合作用时,Burnside 引理是一个非常重要的定理:

Burnside 引理

设有限群 GG 作用于有限集 XX 上,则 XXGG 作用下的轨道数目为

N=1GgGχ(g)N = \frac{1}{|G|} \sum_{g \in G} \chi(g)

其中 χ(g)\chi(g) 为元素 ggXX 上的不动点数目。

对于这一引理的证明,有许多参考12,这里不再赘述。

布尔函数计数问题

问题背景

布尔函数是一类重要的函数,满足 F2nF2\mathbb{F}_2^n \to \mathbb{F}_2 的映射形式。通常我们用 0 和 1 来表示 F2\mathbb{F}_2 中的两个元素,而 F2n\mathbb{F}_2^n 中的元素可以用长度为 nn 的二进制串来表示。一些常见的 2 元布尔函数及其真值表如下:

  1. 逻辑与:f(x,y)=xyf(x, y) = x \land y
    xyf(x, y)
    000
    010
    100
    111
  2. 逻辑或:f(x,y)=xyf(x, y) = x \lor y
    xyf(x, y)
    000
    011
    101
    111
  3. 逻辑同或:f(x,y)=xyf(x, y) = x \odot y
    xyf(x, y)
    001
    010
    100
    111

布尔函数还可以用开关线路来表示,如下图所示:

布尔函数的开关线路表示

可以看出来这三个开关线路中两个开关是可以交换的,即有些布尔函数在自变量的置换下是等价的。因此便引出了布尔函数的计数问题:对于 nn 元布尔函数,有多少个本质不同的布尔函数?

观察 2 元布尔函数

我们先来看看所有的 22 元布尔函数的真值表:

f(x,y)f(x, y)(0,0)(0,1)(1,0)(1,1)
f1f_{1}0000
f2f_{2}0001
f3f_{3}0010
f4f_{4}0011
f5f_{5}0100
f6f_{6}0101
f7f_{7}0110
f8f_{8}0111
f9f_{9}1000
f10f_{10}1001
f11f_{11}1010
f12f_{12}1011
f13f_{13}1100
f14f_{14}1101
f15f_{15}1110
f16f_{16}1111

考虑两个元素的置换,即置换群 S2={(1),(12)}S_2 = \{ (1), (12) \},那么符合 fi(x,y)=fj(y,x)f_i (x, y) = f_j (y, x) 的布尔函数被认为是实质相同的。可以看出,上表中符合该条件的成对布尔函数有:

  • f3f_3f5f_5
  • f4f_4f6f_6
  • f11f_{11}f13f_{13}
  • f12f_{12}f14f_{14}

因此,22 元布尔函数的本质不同的函数个数为 164=1216 - 4 = 12

那么如何用 Burnside 引理来分析呢?将 S2S_2 中元素按置换类型分类计数,并列出其作用于 F={f1,,f16}F = \{ f_1, \cdots, f_{16} \} 上的不动点数目:

置换类型个数χ(g)\chi(g)
121^2122×2=162^{2 \times 2} = 16
212^1123=82^3 = 8

121^2 类型的置换,不动点的数目即先对每个自变量进行选择 (2×22 \times 2 共 4 个),再对结果进行选择,因此有 24=162^4 = 16 个不动点;对 212^1 类型的置换,不动点的数目即先对捆绑在一起的 2 个自变量进行选择 (00、01 和 10、11 共 33 个),再对结果进行选择,因此有 23=82^3 = 8 个不动点。

因此,由 Burnside 引理,22 元布尔函数的本质不同的函数个数为:

N=12(1×16+1×8)=12N = \frac{1}{2} (1 \times 16 + 1 \times 8) = 12

3 元布尔函数

对于 33 元布尔函数,我们直接将 S3S_3 的元素按置换类型分类计数:

置换类型个数χ(g)\chi(g)
131^31223=2562^{2^3} = 256
11211^1 2^1322×3=642^{2 \times 3} = 64
313^1224=162^4 = 16

22 元布尔函数相比,33 元布尔函数的表中出现了 313^1 类型的置换。考虑将 3 个自变量捆绑后在循环移位下本质不同的组合有 4 个:000、001、011、111,因此有 24=162^4 = 16 个不动点。

因此,由 Burnside 引理,33 元布尔函数的本质不同的函数个数为:

N=13!(1×256+3×64+2×16)=80N = \frac{1}{3!} (1 \times 256 + 3 \times 64 + 2 \times 16) = 80

更一般的情形

显然,对于 nn 元布尔函数,我们的任务都是在对 SnS_n 中元素按类型分类后寻找不动点的数目。而这里的不动点数目则拆分为了每个轮换对应的组合的数目。例如,44-轮换对应了 6 个组合:0000、0001、0011、0101、0111、1111,因此一个 414^1 \cdots 的置换会对应于 26×2^{6 \times \cdots} 的不动点数目。

另:或许找这种组合对应于一个类似的应用问题,但我暂时还没有想到。

Footnotes

  1. https://en.wikipedia.org/wiki/Burnside%27s_lemma

  2. 胡冠章 应用近世代数[M]. 第 3 版. 版. 北京: 清华大学出版社, 2006.