www.pudn.com > gatree.zip > gabfs.m, change:2011-11-21,size:1107b


%宽搜判断此树是否连通,若连通返回1,否则返回0 
function flag=gabfs(gene,alledges,n) 
%gene为待判断基因 
%alledges为所有边的矩阵 
%n为点个数 
 
%将基因编码转换为边矩阵 
edges=alledges(find(gene==1),:); 
%k为1-n,n个点标号 
k=1:n; 
%将第一条边所连的第一个点放入队列 
qq=2; 
queue(1)=edges(1,2); 
%队列非空 
while queue 
    %将在队列中的边所连的点从k中删除 
    for j=1:qq-1; 
        k(find(k==queue(j)))=[]; 
    end 
    temp=queue; 
    tt=qq; 
    %清空队列 
    queue=[]; 
    qq=1; 
     
    %遍历队列中的边     
    for i=1:tt-1 
 
    m=size(edges,1); 
    erase=[]; 
    ee=1; 
     
    %寻找队列中点所连接的边,并将边的另一端点放入队列 
    for l=1:m 
        if edges(l,2)==temp(i) 
           queue(qq)=edges(l,3); 
           qq=qq+1; 
           erase(ee)=l; 
           ee=ee+1; 
             
        elseif edges(l,3)==temp(i) 
           queue(qq)=edges(l,2); 
           qq=qq+1; 
           erase(ee)=l; 
           ee=ee+1; 
             
        end 
    end 
     
    %删掉判断完的边 
    if erase 
    edges(erase,:)=[]; 
    end 
     
    end 
end 
flag=1; 
if k 
    flag=0; 
end