Burnside引理与Polya定理

Burnside引理与Polya定理

Burnside引理与Polya定理是有关组合数学的两条十分重要的定理(引理),但是网上的一些资料大多晦涩难懂或者与实际并不相关联,因此在这里做一些浅显的解读,希望通过此文章可以让这两条定理(引理)能够发挥其作用。

PS:引理与定理的区别:

Ψ引理是数学中为了取得某个更好的定理而作为步骤被证明的命题,其意义并不在于自身被证明,而在于为达成最终定理作出贡献.
Ψ一个引理可用于证明多个定理.数学中存在很多著名的引理,这些引理可能对很多问题的解决有帮助.例如欧几里得引理等。

Burnside引理:

提到这个引理的人:

·1845年德国法国数学家Cauchy
·1887年德国数学家Frobenius
·1897年英国数学家Burnside
·1937年匈牙利数学家Polya

Burnside引理的众多名称:

·轨道计数定理
·Burnside计数定理
·Cauchy—Frobenius引理
·Polya—Burnside引理

定义:

设G={a1,a2,…ag}是目标集[1,n]上的置换群。每个置换都写成不相交循环的乘积。是在置换ak的作用下不动点的个数,也就是长度为1的循环的个数。通过上述置换的变换操作后可以相等的元素属于同一个等价类。
若G将[1,n]划分成l个等价类,则:
等价类个数为: —— [ 百度百科 ]

理解:

如果上面看不懂没关系,下面我们来用几个例子来体会一下:
一正方形分成4格,2着色,有多少种方案?其中,经过转动相同的图象算同一方案。
解析:
对于每种格子我们都有两种选择,所以会有一下16种方案:

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
这是一个组合数学问题,我们可以使用 Burnside 引理来解决。Burnside 引理是一个计数定理,可以用于计算一个群在一些操作下的不动点个数。 对于这个问题,我们可以使用置换群 $S_n$,它包含 $n!$ 个置换,每个置换都对应着集合 $A$ 上的一个等价关系。我们需要计算的是在这 $n!$ 个置换中有多少个是等价的。 对于一个置换 $\sigma \in S_n$,我们定义它的循环节数为 $\operatorname{lcm}(k_1, k_2, \ldots, k_m)$,其中 $k_1, k_2, \ldots, k_m$ 是 $\sigma$ 的所有循环的长度。例如,对于置换 $(1\ 2\ 3)(4\ 5)$,它的循环节数为 $\operatorname{lcm}(3, 2) = 6$。 根据 Burnside 引理,不同等价关系的个数等于所有置换的循环节数的平均数。也就是说,我们需要计算: $$ \frac{1}{n!} \sum_{\sigma \in S_n} \operatorname{lcm}(k_1, k_2, \ldots, k_m) $$ 其中 $k_1, k_2, \ldots, k_m$ 是 $\sigma$ 的所有循环的长度。这个式子看起来很难计算,但是我们可以使用 Polya 定理来简化它。 Polya 定理是一个计数定理,可以用于计算一个群在一些操作下的循环节数。我们在这里简单介绍一下它的用法。对于一个置换群 $G$,我们可以定义它的一个操作为一个二元组 $(g, x)$,其中 $g \in G$,$x$ 是一个元素。这个操作将 $x$ 变成 $g(x)$。我们需要计算 $G$ 在所有操作下的不动点个数之和。根据 Polya 定理,这个和等于 $$ \frac{1}{|G|} \sum_{g \in G} a(g)^{c(g)} $$ 其中 $a(g)$ 是 $g$ 操作下的不动点个数,$c(g)$ 是 $g$ 的循环节数。 对于这个问题,我们可以使用 $S_n$ 的所有置换作为操作。对于一个置换 $\sigma \in S_n$,我们将它表示成一个 $n$ 元组 $(a_1, a_2, \ldots, a_n)$,其中 $a_i$ 是 $\sigma(i)$。我们定义操作 $(\tau, (a_1, a_2, \ldots, a_n))$ 将元组 $(a_1, a_2, \ldots, a_n)$ 变成 $(\tau(a_1), \tau(a_2), \ldots, \tau(a_n))$。 我们需要计算 $S_n$ 在所有操作下的不动点个数之和。根据 Polya 定理,这个和等于 $$ \frac{1}{n!} \sum_{\sigma \in S_n} 2^{c(\sigma)} $$ 其中 $c(\sigma)$ 是 $\sigma$ 的循环节数。注意到这个式子只和 $\sigma$ 的循环节数有关,不和具体的置换有关。因此,我们可以将它改写成 $$ \frac{1}{n!} \sum_{k=1}^n p(n, k) 2^{k} $$ 其中 $p(n, k)$ 表示将 $n$ 个元素划分成 $k$ 个非空的循环的方案数。它的值可以使用 Bell 数来计算。也就是说, $$ p(n, k) = \sum_{i=0}^k {k \choose i} B_{n-i} $$ 其中 $B_n$ 是第 $n$ 个 Bell 数。它的递推式是 $$ B_{n+1} = \sum_{k=0}^n {n \choose k} B_k $$ 边界条件是 $B_1 = 1$。 综上所述,我们可以使用下面的 Python 代码来解决这个问题:

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值