问答题
设有n(n>0)个顶点的无向连通图G,可以邻接矩阵A
n×n
存储,由于邻接矩阵的对称性,只将其下三角顺序存储在数组S中。请编写对以数组S存储的图G进行广度优先遍历的算法。另,请讨论若是无向非连通图,你的算法有何变化。【厦门大学2004七(15分)】【烟台大学2005五、3(15分)】
【正确答案】正确答案:由广度优先遍历的定义,首先访问任一顶点,然后访问该顶点的未曾访问的邻接点,如此下去,直至全部顶点访问完成。在邻接矩阵中,第i行非零元素都是第i个顶点的邻接点,而在压缩存储下,找某顶点的邻接点要遍历整个数组。矩阵元素的下标i和j和其在一维数组S中的序号k的关系:由k=i(i+1)/2+j(i≥j,0≤k
在一维数组中,只有非零元素才是顶点。为简单计,当访问完一个顶点后,就将其在一维数组中的位序置零;由于是图的遍历,当全部顶点访问完后就直接结束算法。
【答案解析】