|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
无向图的存储方式有邻接矩阵,邻接链表,稀疏矩阵等。无向图主要包含两方面内容,图的遍历和寻找联通分量。1 M- w6 F& O: P- y
; x1 x. J6 F% m* s3 H, \9 S. S
一、无向图的遍历
b- L u; H9 d( ~' I无向图的遍历有两种方式—广度优先搜索(BFS)和深度优先搜索(DFS)。广度优先搜索在遍历一个顶点的所有节点时,先把当前节点所有相邻节点遍历了,然后遍历当前节点第一个相邻的节点的所有相邻节点,广度优先搜索使用队列来实现。深度优先搜索在遍历当前节点的所有相邻节点时,先对当前节点的第一个相邻节点进行访问,然后遍历第一个相邻节点的相邻节点,依次递归,因此深度优先搜索使用栈实现。
- h. W) O0 Q+ m$ v" ?, r4 ?5 j
. E9 Y6 U P. b1 \1、BFS图遍历代码:
0 K6 x B8 d# G8 t. e7 E$ S
! G) n# Y& Z+ @0 O f1 X. I- function result=BFSTraversal(startNode,Graph)
- % 广度优先搜索
- % Graph 图连通矩阵
- [m n]=size(Graph);
- nodelist=zeros(m,1);
- queue=startNode;
- nodelist(startNode)=1;
- result=startNode;
- while isempty(queue)==false
- i=queue(1);
- queue(1)=[];
- for j=1:n
- if(Graph(i,j)>0&&nodelist(j)==0&&i~=j)
- queue=[queue;j];
- nodelist(j)=1;
- result=[result;j];
- end
- end
- end
6 g4 Y* Y5 \2 ?) Z; K+ a7 L % e* J |1 E i6 C* Y1 ~
. O" K; l# U: Y9 `$ o0 D
9 [2 s# ?( t; r5 ~. N) W3 ~! }2 z2、DFS图遍历代码
. }* f$ D: K W) S% i$ ]+ {( T, [! {4 r+ W
* N* P6 |9 w5 L* o1 Q |
|