顾名思义,0-1矩阵就是所有元素取值均为0和1的矩阵,这类矩阵在矩阵分析、多元统计乃至组合学和图论中都有很重要的应用。在这个主题中我打算介绍选择矩阵、排列矩阵、交换矩阵、消元矩阵、复制矩阵和移位矩阵。(其实排列矩阵就是行列互换的初等变换矩阵。。。)
选择矩阵
选择矩阵selection matrix的作用是通过与某个矩阵相乘,使得结果等于这个矩阵中我们希望选择的那些元素构成的矩阵。最简单的selection matrix是列选择矩阵。假设
A∈Fm×n,
ai表示它的第
i个列向量,
ei表示
In的第
i列,定义
S=[ei1,⋯,eik],1≤i1<i2<⋯<ik≤n,它是一个列选择矩阵,作用是选出
A的第
i1,⋯,ik列,
AS=[ai1,ai2,⋯,aik]∈Fm×k
类似地可以定义行选择矩阵,
ai表示
A的第
i个行向量,
ei表示
Im的第
i行,定义
S=[ei1;⋯;eik],1≤i1<i2<⋯<ik≤n,那分号表示换行:
[ei1;⋯;eik]=[(ei1)′,⋯,(eik)′]′
它是一个列选择矩阵,可以选出
A的第
i1,⋯,ik行,
SA=[ai1;ai2;⋯;aik]∈Fk×n
要选择
A的第
i,j个元素是比较容易的,
eiAej=aji
根据这个性质也可以定义选择
A的某个子矩阵的方法。
交换矩阵
对于矩阵
A∈Fm×n,
vec(A)=[a1;⋯;an]∈Fmn×1, vec(A′)=[a1,⋯,am]′∈Fmn×1
如果
∃Kmn∈Fmn×mn,Kmnvec(A)=vec(A′),则称
Kmn是交换矩阵。根据定义我们会发现交换矩阵有如下简单性质:
-
KnmKmnvec(A)=vec(A)
-
Knm=Kmn′=Kmn−1
-
K1n=Kn1=In
证明 想必大家对交换矩阵会感觉很陌生,但它在矩阵求导的时候会发挥很强大的功能,性质3非常直观,这里就不谈了,我把性质1和2都简单证明评述一下:
性质1:根据定义计算左边的式子
KnmKmnvec(A)=Knmvec(A′)=vec((A′)′)=vec(A)
性质2:事实上交换矩阵的指标对应的是矩阵
A的维数,
Kmn表示它交换的是
Fm×n上的矩阵,
Knm表示它交换的是
Fn×m上的矩阵,性质2给出了这两个交换矩阵的是互为转置的关系,并指出交换矩阵是正交矩阵,先证明互为转置的关系,根据定义,
Kmnvec(A)=vec(A′)=[devec(A)]′
再根据性质1,
KnmKmnvec(A)=Knm[devec(A)]′=vec(A)⇒devec(A)Knm′=[vec(A)]′=devec(A′)
再对定义的两边求转置,
[vec(A)]′Kmn′=[vec(A′)]′⇒devec(A′)Kmn′=devec(A)
比较这两个式子就可以得到
Kmn′=Knm;接下来证明交换矩阵是正交矩阵,根据性质1和互为转置的关系,
KnmKmnvec(A)=Kmn′Kmnvec(A)=vec(A),∀A⇒Kmn′=Kmn−1
证毕
尽管有了交换的一个定义,但我们对交换矩阵是什么还是没有很直观的概念,下面我先举一个数值例子,先看看交换矩阵有什么用:
例 交换矩阵的作用
A=⎣⎡147258369⎦⎤, A′=⎣⎡123456789⎦⎤
则
vec(A)=⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎡147258369⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎤, vec(A′)=⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎡123456789⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎤
交换矩阵
K33的作用是把
vec(A)变成
vec(A′)。
下一个问题是:我们能不能写出
K33这个矩阵长什么样子呢?或者说更一般地,我们怎么写出
Kmn这个矩阵?记
ei(n)表示单位矩阵
In的第
i列,
ei(n)表示单位矩阵
In的第
i行,则
Kmn=⎣⎢⎢⎡In⊗e1(m)In⊗e2(m)⋯In⊗em(m)⎦⎥⎥⎤=[Im⊗e1(n)Im⊗e2(n)⋯Im⊗en(n)]
比如在上面的例子中,我们可以写出:
K33=⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎡100000000000100000000000100010000000000010000000000010001000000000001000000000001⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎤
按行来看,每一行不为0的元素正好是第1、4、7、2、5、8、3、6、9个,因此
K33乘以
vec(A)时,会按顺序将
vec(A)的第1、4、7、2、5、8、3、6、9个元素取出来排成一列。