|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
无向图的存储方式有邻接矩阵,邻接链表,稀疏矩阵等。无向图主要包含两方面内容,图的遍历和寻找联通分量。
/ w; a9 j, `/ t5 D+ K) w
9 Z% E+ z0 V2 c& O) i- s# ]一、无向图的遍历 + \7 G1 M( j) z6 `7 I3 L
无向图的遍历有两种方式—广度优先搜索(BFS)和深度优先搜索(DFS)。广度优先搜索在遍历一个顶点的所有节点时,先把当前节点所有相邻节点遍历了,然后遍历当前节点第一个相邻的节点的所有相邻节点,广度优先搜索使用队列来实现。深度优先搜索在遍历当前节点的所有相邻节点时,先对当前节点的第一个相邻节点进行访问,然后遍历第一个相邻节点的相邻节点,依次递归,因此深度优先搜索使用栈实现。) o* [$ o E. h: P: {3 c3 J& X
6 k, Y7 J+ T6 D1 u1 Q# w
1、BFS图遍历代码:, t' d6 A" e" x& U" k6 G# O$ v7 ~2 x
3 C3 n5 u: m8 i# t7 ~- 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
% a- j/ O: h- S* T" I
1 S% ]: d9 z3 T$ L, e
5 g0 z: @; A$ l F3 Y- O' R1 F/ b- q0 A6 Y% i: D% |: {( i
2、DFS图遍历代码# {+ ~3 A& k. I# p8 V% Y( h
W$ m! k1 S$ J3 d1 @0 F* {6 Y
( m7 Y5 [# W& s4 r |
|