第9章 群(Group)与半群(Semigroup)

9.1 再论二元运算(binary operation)

我们知道,集合A上的二元运算是一个处处有定义的函数f:A×A→Af:A×A\rarr A

满足以下性质

  • 二元运算必须为A的每个有序元素对而定义(对每个有序对都适用,满射)
  • 每个有序对仅对应A中唯一的元素(单射)

采用 * 号来表示二元运算

再添加以下性质

  • 运算* 下A是封闭的(closed),a,b∈A那么a∗b∈Aa,b\in A 那么 a*b\in A
  • 若对于a,b∈A,a∗b=b∗aa,b\in A,a*b=b*a,那么称A上的二元运算* 是交换的(commutative),如果构造一张运算表,那么可以看到值是关于主对角线对称的
  • 若对于a,b,c∈A,a∗(b∗c)=(a∗b)∗ca,b,c\in A,a*(b*c)=(a*b)*c,那么称A上的二元运算* 是结合的(associative)
  • 若对于a∈A,a∗a=aa\in A,a*a=a,那么称A上的二元运算* 是幂等的(idempotent)
  • 设A={x1,x2,...,xn}A=\{x_1,x_2,...,x_n\}含有n个元素,那么在AA上存在2n22^{n^2}个二元运算

9.2 半群(Semigroup)

将一个非空集合SS,以及定义在SS上的可结合的二元运算*,构成以下结构

(S,∗)(S,*)

就表示半群

  • 可以把a∗ba*b看成a和b的积
  • 如果* 是一个交换运算,就称半群(S,∗)(S,*)是一个交换半群。
  • 对A={a1,a2,...,an}A=\{a_1,a_2,...,a_n\},有A∗A^*是AA中元素的所有有限序列的集合,在A∗A^*上有二元运算$\cdot{} $,代表连接运算(看成字符串拼接就行),那么这个 ⋅\cdot 运算是结合的,所以半群(S,⋅)(S,\cdot)是由A产生的自由半群(free semigroup generated by A)。


接下来是一些概念

单位元(identity element) ee是(S,∗)(S,*)中的一个元素,对所有a∈Sa\in S都有

e∗a=a∗e=ae*a=a*e=a

称e为单位元,是唯一的


幺半群(monoid) 有单位元的半群(S,∗)(S,*)



子半群(subsemigroup) 有一半群(S,* ),若TT是SS的一个子集,且TT在运算 * 下是封闭的,就称(T,∗)(T,* )是(S,∗)(S,*)的子半群


子幺半群(submonoid) 与子半群类似,有一幺半群(S,* ),若TT是SS的一个子集,且TT在运算 * 下是封闭的,且TT也含有单位元e,就称(T,∗)(T,* )是(S,∗)(S,*)的子幺半群




同构(Isomorphism)

(S,∗)(S,*)和(T,∗′)(T,*^{'})两个半群,若函数 f:S→Tf:S\rarr T 是从 SS 到 TT 的一个一一对应,而且对所有a,b∈Sa,b\in S都有 f(a∗b)=f(a)∗′f(b)f(a*b)=f(a)*^{'}f(b) ,则称 f:S→Tf:S\rarr T 是从 (S,∗)(S,*) 到 (T,∗′)(T,*^{'}) 的一个同构

说人话就是:

两个半群S和T,存在一个函数f,变量为S,结果为T,满足单射,满射,且f(a*b)=f(a) *’ f(b),那么f就是从S到T的一个同构

  • f−1f^{-1}也是一个同构,从T到S
  • S和T是同构的,就记为S=T

证明半群(S,∗)(S,*),(T,∗′)(T,*^{'})同构的一般步骤为

  • 先定义一个函数f:S→T,Dom(f)=Sf:S\rarr T,Dom(f)=S,Dom表示f的前域
  • 证明 ff 是单射
  • 证明 ff 是满射
  • 证明 f(a∗b)=f(a)∗′f(b)f(a*b)=f(a)*'f(b)

来道题就懂了

设T是所有偶数的集合,证明半群(Z,+)与(T,+)是同构的

定义 f:Z→Tf:Z\rarr T 满足f(a)=2a

先证明单射。假设f(a1)=f(a2),那么就有2a1=2a2,所以a1=a2,因此f就是单射

再证明满射。假设b是任意偶数,那么就有 b/2=a∈Zb/2=a\in Z ,且f(a)=f(b/2)=2(b/2)=bf(a)=f(b/2)=2(b/2)=b,故f为满射

最后,f(a+b)=2a+2b=f(a)+f(b)

故他们是同构的



同态(homomorphism)

在两个半群同构的条件下,去掉满足单射,满射的条件,即设(S,∗)(S,*)和(T,∗′)(T,*')是两个半群,如果一个处处有定义的函数 f:S→Tf:S→T 对于 SS 中的所有a和b有 f(a∗b)=f(a)∗′f(b)f(a*b)=f(a)*'f(b) ,则称ff是从 (S,∗)(S,*) 到 (T,∗′)(T,*') 的一个同态。如果 ff 还是满射,则称 TT 是 SS 的同态象(homomorphic image)。

同构与同态的差异就是同构必须单射和满射,相同之处就是都必须有积的象等于象的积


定理: 设(S,∗)(S, *)和(T,∗′)(T, *')分别是有单位元ee和e′e'的幺半群,f:S→Tf:S→T是从(S,∗)(S,*)到(T,∗′)(T,*')的一个同态且是满射,那么f(e)=e′f(e)=e'。

定理: 设 ff 是从半群(S,∗)(S,*)到半群(T,∗′)(T,*')的一个同态,如果 S′S' 是(S,∗)(S,*)的一个子半群,那么

f(S′)={t∈T∣t=f(s),对s∈S′}f(S')=\{t\in T|t=f(s),对s\in S'\}

即在 ff 下 S′S' 的象是 (T,∗′)(T,*') 的一个子半群。


因此,f(S′)f(S')在运算∗′*'下是封闭的。因为结合性质在TT中成立,所以它在f(S′)f(S')中也成立,因此,f(S′)f(S')是(T,∗′)(T,*')的一个子半群。


**定理 :** 如果$f$是从交换半群$(S,*)$到半群$(T,*')$的一个同态且是满射,那么$(T,*')$也是交换半群。



9.3 半群的积与商(PRODUCTS AND QUOTIENTS OF SEMIGROUPS)

看标题就知道,半群进行积与商的运算,将会从已有的半群产生新的半群,这一节就是阐述新半群与老半群的关系

定理: 如果(S,∗)(S,*)和(T,∗′)(T,*')是半群,那么(S×T,∗′′)(S×T,*'')是一个半群,其中∗′′*''由(s1,t1)∗′′(s2,t2)=(s1∗s2,t1∗′t2)(s_1,t_1)*''(s_2,t_2)=(s_1*s_2,t_1*'t_2)定义

也就是说,假设S和T是分别有单位元e1,e2的幺半群,那么S×T是有单位元(e1,e2)的幺半群



同余关系(congruence relation)

如果 aRa′aRa' 和 bRb′bRb' 能够推出(a∗b)R(a′∗b′)(a*b)R(a'*b'),那么这个在半群(S,∗)(S,*)上的等价关系 RR 称为一个同余关系

要证明R是某一半群(S,∗)(S,*)上的一个同余关系

先证明R是一个等价关系(自反,对称,传递)

再证明同余关系的aRa′aRa' , bRb′bRb' 能够推出(a∗b)R(a′∗b′)(a*b)R(a'*b')




商半群 quotient semigroup(因子半群)factor semigroup

我们已经知道,半群上的等价关系决定半群的一个划分。

对半群(S,∗)(S,*)上的关系RR,设[a]=R(a)[a]=R(a)是包含a的等价类,S/RS/R表示所有等价类的集合。

定理: 设RR是半群(S,∗)(S,*)上的一个同余关系,我们可以考虑一个从S/R×S/RS/R×S/R到S/RS/R的关系⊛\circledast

  • ⊛\circledast是从S/R×S/RS/R×S/R到S/RS/R的一个函数,用[a]⊛[b][a]\circledast [b]表示⊛([a],[b])\circledast ([a],[b])。因此可以得出

    [a]⊛[b]=[a∗b][a]\circledast [b]=[a*b]

  • (S/R,⊛)(S/R,\circledast)是一个半群,称为商半群或因子半群。


可以得出以下推论:

  • RR是幺半群(S,∗)(S,*)上的同余关系,若运算⊛\circledast满足[a]⊛[b]=[a∗b][a]\circledast [b]=[a*b],那么(S/R,⊛)(S/R,\circledast)也是一个幺半群

接下来说明的都是半群与商半群之间的关系

定理: 设R是半群(S,*)上的一个同余关系,(S/R,⊛)(S/R,\circledast)是对应的商半群,那么由fR(a)=[a]定义的函数fR:S→S/Rf_R(a)=[a]定义的函数f_R:S\rarr S/R是一个满射的同态,称其为自然同态


**同态基本定理:**设f:S→Tf:S\rarr T是半群(S,∗)(S,*)到半群(T,∗′)(T,*')的一个同态,RR是SS上的关系,且RR被定义为对于SS中的a和b,aRb当且仅当f(a)=f(b)f(a)=f(b)。那么有以下的结果:

  • RR是一个同余关系
  • (T,∗′)(T,*')和商半群(S/R,⊛)(S/R,\circledast)是同构的




9.4 群

幺半群的集合中所有元素都拥有逆元且逆元在该集合中,则称该幺半群为群,表示为(G,∗)(G,*)

逆元(inverse) 对于每个元素a∈Ga\in G,都存在元素b∈Gb\in G,使得a∗b=b∗a=ea*b=b*a=e,则a,ba,b互为逆元

也就是说一个普通的代数系统要成为群需要满足下面几个条件:

  • 代数系统中只有一个二元运算,G在*下一定是封闭的。

  • 该运算要满足结合律。

  • 该运算要有单位元e。

  • 集合每个元素都有逆元且逆元在集合中。

例如<C, +>, <R, +>, <Q, +>为群, 而<R, *>不再为群, 因为0没有逆元。


阿贝尔群(Abelian)

对于群G中的所有元素a,b有

ab=baab=ba

那么群G就是阿贝尔群

  • 对幺半群ZnZ_n,[n-a]是[a]的逆,证明了ZnZ_n也是一个阿贝尔群

群的一些基本性质

  • 群G中的每个元素a在G中有且仅有一个逆元,记为a−1a^{-1}

    那么上面那条逆元的定义式可以改成aa−1=a−1a=eaa^{-1}=a^{-1}a=e

  • (左/右消去性质)ab=ac 推出 b=c ,ba=ca 推出 b=c

  • 设a∈G,Ma:G→Ga \in G,M_a:G\rarr G满足Ma(g)=agM_a(g)=ag,那么MaM_a是单射

  • (a−1)−1=a(a^{-1})^{-1}=a

  • (ab)−1=b−1a−1(ab)^{-1}=b^{-1}a^{-1}

  • a,b∈Ga,b\in G,方程ax=b和ya=b在G中都只有唯一解


对称群(symmetric group)

n个元素的所有置换的集合在合成运算下是一个阶为n!的群,称这个群为n个字母上的对称群,用SnS_n表示





子群(subgroup)

设HH是群GG的一个子集,若满足以下条件

  • G中的单位元ee属于HH(有单位元)
  • a,b∈H,ab∈Ha,b\in H,ab\in H(封闭性)
  • a∈H,a−1∈Ha\in H,a^{-1}\in H(有逆元)

则称H为G的一个子群

有单位元,存在封闭性,说明H是G的子幺半群,所以一个子幺半群如果有逆元,那就是一个子群


以下是一些更深的定义

平凡子群(trivial subgroup)

在群GG中,GG和H={e}H=\{e\}是GG的子群,称他们是GG的平凡子群


交错群(alternating group)

这个的前置条件是偶置换,没学,不说了


定理: 设(G,∗)(G,*)和(G′,∗′)(G',*')是两个群,f:G→G′f:G\rarr G'是从GG到G′G'的一个同态

  • 若ee是GG的单位元,e‘e‘是G’G’的单位元,那么f(e)=e′f(e)=e'
  • 若a∈Ga\in G,那么f(a−1)=(f(a))−1f(a^{-1})=(f(a))^{-1}
  • 若HH是GG的一个子群,那么 f(H)={f(h)∣h∈H}f(H)=\{f(h)|h\in H\}是G′G'的一个子群




9.5 群的积与商(PRODUCTS AND QUOTIENTS OF GROUPS)

定理: 如果G1G_1和G2G_2是群,那么G=G1×G2G=G_1×G_2是二元运算由(a1,b1)(a2,b2)=(a1a2,b1b2)(a_1,b_1)(a_2,b_2)=(a_1a_2,b_1b_2)定义的群,当然了,这个运算可以推广到GnG_n

定理: 设RR是群(G,∗)(G,*)上的一个同余关系,那么半群(G/R,⊛)(G/R,\circledast)是一个群,运算⊛\circledast定义在G/RG/R上且满足[a]⊛[b]=[a∗b][a]\circledast [b]=[a*b]


定理: 设R是群(G,*)上的一个同余关系,那么由fR(a)=[a]定义的函数fR:G→G/Rf_R(a)=[a]定义的函数f_R:G\rarr G/R是群的同态


定理: 设f:G→G′f:G\rarr G'是群(G,∗)(G,*)到群(G′,∗′)(G',*')的一个同态且是满射,RR是GG上的关系,且RR被定义为对于GG中的a和b,aRb当且仅当f(a)=f(b)f(a)=f(b)。那么有以下的结果:

  • RR是一个同余关系
  • 由f‾([a])=f(a)\overline f([a])=f(a)给出的函数f‾:G/R→G′\overline f:G/R\rarr G'是从群(G/R,⊛)(G/R,\circledast)到(G′,∗′)(G',*')的一个同构且是满射

左培集与右陪集(left/right coset)

群G有一子群H,a∈Ga\in G,

由aa决定的G中H的左陪集是集合

aH={ah∣h∈H}aH=\{ah|h\in H\}

由aa决定的G中H的右陪集是集合

Ha={ha∣h∈H}Ha=\{ha|h\in H\}

a称为陪集的代表元素

若对G中所有的a有aH=Ha,则称G的子群H是正规子群(normal subgroup)

这其实是说明了对a定义的左陪集aH,其实就是a在G上的一个等价类[a]


  • 阿贝尔群的每个子群都是一个正规子群
  • RR是群G上的一个同余关系,H=[e],即包含单位元的等价类,那么H是G的一个正规子群,并且对每个a∈Ga\in G,[a]=aH=Ha[a]=aH=Ha

定理: 设N是群G的一个正规子群,R是G上的关系,满足aRb当且仅当a−1b∈Na^{-1}b\in N,那么有

  • R是G上的同余关系
  • N是关于R的等价类[e],其中e是G的单位元


从以上定理可以看到,如果G是任意一个群,那么G上的同余关系的等价类总是G的某个正规子群的陪集。反之,G的任意一个正规子群的陪集恰好是关于G上某个同余关系的等价类。所以,现在可以作如下解释:设ff是从群(G,∗)(G,*)到群(G′,∗′)(G',*')上的同态并且是满射,ff的核记做ker(f)ker( f ),定义为

ker(f)={a∈G∣f(a)=e′}ker(f)=\{a\in G|f(a)=e'\}

那么

  • ker( f )是G的一个正规子群
  • 商群G/ker( f )与G’是同构的




环

特别地,令SS是一个非空集合,在它上面定义了两种二元运算++和∗*使得(S,+,∗)(S,+,*)是一个阿贝尔群,而* 对于+满足分配律。(这两种运算符号与人们最熟悉的实数运算结构相同。)

如果* 满足结合律,那么结构(S,+,∗)(S,+,*)称作一个环。

如果* 同时满足结合律和交换律,则称(S,+,∗)(S,+,*)为交换环。

如果(S,∗)(S,*)是一个幺半群,则称(S,+,∗)(S,+,*)为含幺环。

∗*的单位元通常用1表示,+的单位元通常用0表示。





第11章 编码

11.1 编码

11.2 译码与纠错

一个满射函数d:Bn→Bmd:B^n\rarr B^m称为与e有关的(n,m)译码函数。

设e是一个(m, n)编码函数,d是与e相关的一个(n, m)译码函数。如果无论x=e(b)是正确地传输还是有k个或更少的错误传输并且接收的是xtx_t,都有d(xt)=bd (x_t)=b,则称数据对(e, d)校正k个或更少的错误。因此,从xtx_t能够译出正确的报文b。


已知一个(m,n)编码函数e:Bm→Bne:B^m→B^n,常常需要确定与e相关的一个(n, m)译码函数d:Bn→Bmd:B^n→B^m。下面讨论一种方法,称作最大似然方法,它从一个已知e确定一个译码函数d。

  • 因为BmB^m有2m2^m个元素,所以在BnB^n中存在2m2^m个代码字。首先以一种固定的次序列出代码字

    x(1),x(2),...,x(2m)x^{(1)},x^{(2)},...,x^{(2m)}\\

  • 假设我们通过e收到的字是xtx_t,我们要从这2m2^m个代码字里面,用xtx_t和每一个代码字(这里用ii表示第ii个,1≤i≤2m1\le i \le 2^m),计算汉明距离δ(x(i),xt)\delta (x^{(i)},x_t)。

    汉明距离δ(x(i),xt)=∣x(i)⊕xt∣\delta (x^{(i)},x_t)=|x^{(i)}\oplus x_t|

  • 按照汉明距离从小到大排列,选出距离最小且原始排序靠前的那一个代码字,也就是与xtx_t最接近的那一个代码字,记为x(s)x^{(s)}。

  • 我们由上述操作求到了x(s)x^{(s)},又已知x(s)=e(b)x^{(s)}=e(b),那么我们可以通过用以下函数

d(xt)=b\\d(x_t)=b\\

来定义与e有关的最大似然译码函数 dd




定理: 已知e是一个(m,n)编码函数,d是与e有关的最大似然译码函数,那么(e,d)能纠正 k\ k个或更少的数,当且仅当e的最短距离至少是2k+12k+1

直接上题目好理解:e的最短距离假设为3,那么有3≥2k+1,也就是k≤13\ge 2k+1,也就是k\le 1。也就说明了能纠正至多1个错误


接下来,我们要采用一种方法,来方(fu)便(za)地求出与e有关的最大似然译码函数 dd

我们需要一条定理: 如果K是群G的一个有限子群,那么G中K的每一个左陪集与K恰好有同样多的元素。


设e:Bm→Bne:B^m\rarr B^n是一个(m, n)编码函数并且是一个群码。
因此,BnB^n中的代码字集合NN是B的一个子群,它的阶是2m2^m,如N={x(1),x(2),...,x(2m)}N=\{x^{(1)},x^{(2)},...,x^{(2^m)}\}


从上面的分析,我们再次假设代码字$ x=e(b)被传输并且收到的字是被传输并且收到的字是x_t。。x_t$的左陪集是

xt⊕N={ϵ1,ϵ2,...,ϵ2m},ϵi=xt⊕x(i)x_t\oplus N=\{\epsilon_1,\epsilon_2,...,\epsilon_{2^m}\},\\ \epsilon_i=x_t\oplus x^{(i)}

从xtx_t到代码字x(i)x^{(i)}的距离恰好是ϵi\epsilon_i的权∣ϵi∣|\epsilon_i|。

因此,如果存在一个ϵj\epsilon_j,是陪集成员中的最小权,那么x(j)x^{(j)}一定是最接近xtx_t的代码字。

此时,x(j)=ϵj⊕xtx^{(j)}=\epsilon_j\oplus x_t

我们称一个有最小权的ϵj\epsilon_j为陪集首部(coset leader),它不是唯一的


接下来,我们开始进行求解过程

如果e:Bm→Bne:B^m→B^n是一个群码,要求他的最大似然译码函数d,需要

  • 确定BnB^n中的所有左培集

  • 对每个陪集求陪集首部,也就是求其中具有最小权的字。


    我们可以采用列表法来确定BnB^n中NN的所有陪集,已知N={x(1),x(2),...,x(2m)}N=\{x^{(1)},x^{(2)},...,x^{(2^m)}\},其中x(1)=0‾x^{(1)}=\overline 0


    第一行:从单位元 0‾\overline0 开始,列出 NN 中的所有元素

    0‾\overline0 x(2)x^{(2)} … x(2m)x^{(2^m)}

    这其实是陪集[ 0‾\overline 0 ],0‾\overline 0 就是它的陪集首部,也就是ϵ1\epsilon_1


    现在选择未列在第一行里BnB^n中的任意字 yy。把陪集 y⊕Ny\oplus N 中的元素列作第二行,该陪集也有2"个元素。

    y⊕0‾y\oplus\overline0 y⊕x(2)y\oplus x^{(2)} … y⊕x(2m)y\oplus x^{(2^m)}

    在陪集y⊕Ny\oplus N中,选取一个最小权的元素作为陪集首部,用ϵ2\epsilon_2表示。万一最小权元素不止一个,则选取最小权中任意一个元素即可。


    依次类推,下一行选择没有在前两行的任意字,选出最小权元素作为陪集首部,最后得表

image-20221028114606931

  • 最后,我们将需要进行译码的 xtx_t 在表中找出,他所在的那一列的列头就是代码字x(i)x^{(i)},用 d(x(i))d(x^{(i)}) 回去找对应的 bb 即可。


如果我们知道(m, n)群码是eH:Bm→Bne_H:B^m→B^n,其中HH是已知的奇偶校验矩阵。在这种情况下,可以简化上面的译码方法。

H=[h11h12⋯h1rh21h22⋯h2r⋮⋮⋮hm1hm2⋯hmr10⋯001⋯0⋮⋮⋮00⋯1]H=\begin{bmatrix} h_{11}&h_{12}&\cdots&h_{1r}\\ h_{21}&h_{22}&\cdots&h_{2r}\\ \vdots&\vdots&&\vdots\\ h_{m1}&h_{m2}&\cdots&h_{mr}\\ 1&0&\cdots&0\\ 0&1&\cdots&0\\ \vdots&\vdots&&\vdots\\ 0&0&\cdots&1\\ \end{bmatrix}

由fH(x)=x∗Hf_H(x)= x *H定义的函数fH:Bn→Brf_H:B^n→B^r是从群BnB^n到群BrB^r的一个同态。

由定理: 如果m,n,r,Hm, n, r, H以及fHf_H如上定义,那么fHf_H是满射

可得,

g(xN)=fH(x)=x∗Hg(xN)=f_H(x)=x*H

元素x∗Hx*H就是 xx 的校验子(syndrome).

定理: 设x和y是BnB^n中的元素,那么x和y属于 BnB^n 中 NN 的相同左陪集当且仅当fH(x)=fH(y)f_H(x)=f_H(y),即当且仅当它们有相同的校验子。


于是,我们得出了更简便求最大似然译码函数的方法:

  • 确定BnB^n中 N=eH(Bm)N=e_H(B^m)的所有左陪集
  • 对每个陪集,求陪集首部并且计算所有首部的校验子
  • 如果收到xtx_t,计算xtx_t的校验子并且求具有相同校验子的陪集首部ϵ\epsilon。那么xt⊕ϵ=xx_t\oplus \epsilon=x是代码字eH(b)e_H(b),所以d(xt)=bd(x_t)=b。

对于上面这个过程,不需要保存一张陪集表,并且能够避免计算译码表的工作量。而只要简单地以任意顺序一次列出所有陪集,并且从每个陪集中选择一个陪集首部。然后保存这些陪集首部和它们的校验子的一张表。上面的步骤很容易用这张表实现。


来道例题说明:

考虑奇偶校验矩阵

H=[110101011100010001]H=\begin{bmatrix} 1&1&0\\ 1&0&1\\ 0&1&1\\ 1&0&0\\ 0&1&0\\ 0&0&1\\ \end{bmatrix}

和(3,6)群eH:B3→B6e_H:B^3\rarr B^6.

得到代码字

还记得代码字怎么求吗?

我们知道m和n,就能从BmB^m中的每个元素中构造内容为n的一个字

比如m=3,n=6

BmB^m有一个元素 010,

那么我们就构造一个字,个数为6,就是010x1x2x3010x_1x_2x_3

x1=b1h11+b2h21+b3h31=1x_1=b_1h_{11}+b_2h_{21}+b_3h_{31}=1

x2=b1h12+b2h22+b3h32=0x_2=b_1h_{12}+b_2h_{22}+b_3h_{32}=0

x3=b1h13+b2h23+b3h33=1x_3=b_1h_{13}+b_2h_{23}+b_3h_{33}=1

那么代码字就是010101

要注意算x1,x2,x3的时候,和式中只有含有奇数个1,结果才能为1

代码字{e(000)=000000e(001)=001011e(010)=010101e(011)=011110e(100)=100110e(101)=101101e(110)=110011e(111)=111000\begin{align*} \begin{split} 代码字 \left \{ \begin{array}{ll} e(000)=000000\\ e(001)=001011\\ e(010)=010101\\ e(011)=011110\\ e(100)=100110\\ e(101)=101101\\ e(110)=110011\\ e(111)=111000\\ \end{array} \right. \end{split} \end{align*}

因此N={000000,001011,010101,011110,100110,101101,110011,111000}N=\{000000,001011,010101,011110,100110,101101,110011,111000\}

检验子 陪集首部
000 000000
001 000001
010 000010
011 001000
100 000100
101 010000
110 100000
111 001100

计算xt∗Hx_t*H,得到检验子=101,陪集首部ϵ\epsilon=010000,

那么再将xt⊕ϵx_t \oplus \epsilon,得到011110,

对应的e(011)=011110,则b=011

在进行xt∗Hx_t*H的运算时,是xtx_t所在的这一横行分别乘以HH每一列的每个元素,再相加。特别要注意的是,最后相加时,等式中含有奇数个1,结果才是1,否则含有偶数个1的话,结果为0