最近做图论的题的时候遇到了这樣一个选择题问,存在某不带权图的已知邻接矩阵阵A则A*A所得矩阵中[i][j]的意义是什么。
这个题在作答的时候没怎么看就填了:表示图中i點和j点之间有邻接边。
然而大家都知道我所填得答案是说已知邻接矩阵阵A中的[i][j]的意义,并不是A*A
所以事后我结合百度然后自己有分析了┅遍,发现了其中的规律:A*A中第i行第j列的数据表示从i点走两步到j点的路径条数
首先先回忆一下矩阵相乘的相关知识,矩阵相乘两矩阵必定行数或列数相等,然后第一个矩阵某行的各个元素分别乘第二个矩阵相应的列上的元素再相加
想想,每个矩阵中的每个点都标识这個图中第i个点和第j个点之间有没有临接边
在矩阵乘法时两矩阵点对应为:(i, k)和 (k, j),彼此之间以k为联通而k也是两相乘的图中切实存在的一个點。
放到已知邻接矩阵阵相乘的过程中即为第i点经过一个点(k为点集)到第j点总共有多少条路径。
同理当问题改为A*A*A时,因为A*A过程中存在一點k为中介点A*A得到的矩阵再乘A的过程中又会再有一个中介点。
答案又会改为从i点走三步到j点总共有几条路径