这个例子花费了我不少时间来理解,但是感觉很有意思,所以贴出来,作为纪念。
图的节点和边的数量不多时,图简单易懂。当节点数量和边的数量很多时,图可能会变成一团乱麻。
可使用邻接矩阵来表示一个图,
如,a12=1,表示V1节点与V2节点之间有一条边,a13=0,表示V1节点与V3节点之间没有边。
从一个节点出发,到达另一节点,经过的节点序列可看作时一条路径,而这条路径所包括的边的总数称为路径的长度。
现在有个问题:从V3出发,到达V5,如果规定路径长度为3,那么共有多少条不同的路径。
经过观察,不难发现有以下4条路径:
1. V3 -> V5 -> V2 -> V5
2. V3 -> V5 -> V3 -> V5
3. V3 -> V5 -> V4 -> V5d
4. V3 -> V4 -> V3 -> V5
其实,邻接矩阵的k次幂即可以表示图中任意两节点间长度为k的路径的数量。
用Excel验证如下:
A | ||||
0 | 1 | 0 | 0 | 0 |
1 | 0 | 0 | 0 | 1 |
0 | 0 | 0 | 1 | 1 |
0 | 0 | 1 | 0 | 1 |
0 | 1 | 1 | 1 | 0 |
A^3 | ||||
0 | 2 | 1 | 1 | 0 |
2 | 0 | 1 | 1 | 4 |
1 | 1 | 2 | 3 | 4 |
1 | 1 | 3 | 2 | 4 |
0 | 4 | 4 | 4 | 2 |
详细证明参考以下内容: