图,网络,关联矩阵

最近看了一下MIT的Strang教授的线性代数课,尤其是当看到图和网络这一节课的时候,感到挺有意思,所以打算记录一下。

下面就是一个简单的图(在离散数学中称之为“图”),图有两个元素:结点(nodes),边(edges)。

图,网络,关联矩阵_第1张图片

在实际应用中,可以给边加上箭头来表示电流的流向,这就是一个有向图:

图,网络,关联矩阵_第2张图片

然后我们可以定义一个关联矩阵(Incidence Matrices),这个矩阵的描述如下:列代表结点,行代表边。如果从结点a到结点b有一条边(箭尾是a,箭头是b),那么就把a置为-1,把b置为1,。根据这个准则,上图所生成的关联矩阵如下:

图,网络,关联矩阵_第3张图片

在图2中我们可以看到结点1, 2,3和边1,2,3形成了一个封闭的回路(loop)。该loop的关联矩阵如下:


这个矩阵很有趣,因为它的第三行是第一行与第二行的和,这说明该矩阵的行是线性相关的,从图中我们也可以看到边1和边2的和为3(有点像向量的加法)。

矩阵A的零空间(nullspace)可以通过Ax = 0求得,过程如下:

图,网络,关联矩阵_第4张图片

当x1 = x2 = x3 = x4时,Ax = 0,所以矩阵dim( N(A) ) = 1。所以rank(A) = n - dim( N(A) ) = 4 - 1 = 3。现在我们考虑A的左零空间N(AT),AT y=0。AT = 

 图,网络,关联矩阵_第5张图片

AT y = 

 

我们如何求解N(AT)呢,Strang教授给了我们一个很直观的方法,首先,我们把上边等式的左边的两个矩阵相乘的结果写出来,得到:

(-y1) + (-y3) + (-y4) = 0

y1 - y2 = 0;

y2 + y3 - y5 = 0;

y4 + y5 = 0.

我们还是回到上面那个有向图,来仔细观察下,发现y1, y3 , y4正是流入(流入为0)和流出结点1的电流之和,这就是我们熟悉的基尔霍夫电流定律,另外的三个等式可以相同得出。所以,我们就可以根据loop数来确定A的左零空间的基(没有loop的图称为树(tree)),我们有两个相互独立的loop(结点:1-2-3和1-3-4),当然还有一个大的loop(1-2-3-4),但是我们可以通过两个子loop相加得到,所有,基这样找:

y1 = 1, y2 = 1, y3 = -1 => y4 = 0, y5 = 0,另外一个基:

y3 = 1, y4 = -1, y5= -1 => y1 = 0, y2 = 0。

我们在选取y1~y5的时候,应当使结果只含有1, -1, 0这三个值。所以dim( N(AT) ) = 2,rank(A) = 5 - dim( N(AT) ) = 3。与上面的结论一致。

这里有个小结论:dim( N(AT) )是回路的数,5是A的列数,AT的行数,也是边数,r是A的秩,也等于结点数-1(这个不是偶然,可以再举其他的图试一下)。所以我们又以下结论:

#loops = #edges - (#nodes - 1),也可以写成:

#loops - #edges + nodes = 1,这就是我们熟悉的欧拉公式

似乎是说到结尾了,但是还有一点Strang教授提醒我们观察:如果我们把结点之间的差看作是电势差e,那么Ax = e,并且利用欧姆定律有y = Ce,且我们还有基尔霍夫定律AT y = 0,并且我们给上面的图外加一个电流源(电压源),有AT y = f,把这些式子整合到一起,得到AT C Ax = f,B = AT C A,那么矩阵B就是一个对称阵(Symmetric Matrix)。这有什么用呢,当我们求解trace(AT A)时就会发现一个更加有趣的现象,我只大致说一下,具体过程笔算就可以了:

trace(AT A)就是AT A的对角线的元素之和,然而A, AT的各个元素的绝对值不是1就是0,那么AT A的对角线元素之和就是A的各列的元素之和(可以设一个任意矩阵算一下就知道了)。所以trace(AT A) = 3 + 2 + 3 + 2 = 10,这个10是什么呢,我们再回到那个有向图,3是结点1的度(入度和出度之和),2是结点2的度。。。所以10就是所有结点的度之和。

结束!

你可能感兴趣的:(c,网络,tree,Matrix)