广度优先搜索算法判断图的连通性(Matlab语言)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
function w=liantong(D)
%使用广度优先搜索判断图是否连通
%D是01关联矩阵,且对角线元素为1
L=size(D,1);
FOUND=zeros(1,0);
%数据初始化
v=1;%当前节点集为第一个节点
FOUND=[FOUND,v];
%删除当前节点相互之间的关联边
D(v,v)=0;
%找当前节点的相邻节点
p=D(v,:);
vv=find(p==1);%当前节点的相邻的节点
if length(vv)==0
w=0;
return
end
%修正邻接矩阵
D(v,:)=zeros(1,L);
D(:,v)=zeros(L,1);
FOUND=[FOUND,vv];
while length(find(FOUND)) v=vv; clear vv; LL=length(v); %第一步:删除当前节点相互间的关联边 for i=1:LL for j=1:LL D(v(i),v(j))=0; D(v(j),v(i))=0; end end %第二步:找与当前节点的相邻接的节点 vv=zeros(1,0); for i=1:LL p=D(v(i),:); pos=find(p==1); vv=[vv,pos]; end if length(vv)==0%如果没有邻接节点,说明不连通w=0; return end %第三步:修正邻接矩阵 for i=1:LL D(v(i),:)=zeros(1,L); D(:,v(i))=zeros(L,1); end FOUND=[FOUND,vv]; end w=1;