广度优先搜索算法判断图的连通性(Matlab语言)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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;

相关文档
最新文档