ganquanlife 发表于 2013-3-3 14:54

求助关于求图割点的代码,哪里错了?怎么改正啊?

function = ncutf(g)
%求割点的算法 g为邻接矩阵 nc为割点的集合
n=size(g,1);
if n>=3
    a=sum(g);
    b=sum(a==2);
    if b==n
        fprintf('本图为圈,无割点。n')
        nc=0;
    end
else
    =dfs3(g);
    %nc=[];
    nc=isncf(w,k);
    n=size(g,1);
    for i=1:n
        for j=1:n
            if w(i,j)>1
                if k(i)>k(j)
                    g(i,j)=2;
                else
                    g(i,j)=3;
                end
            end
        end
    end
   
    for i=1:n
        f1=find(g(i,:)==2);
        f2=find(g(i,:)==3);
        f=union(f1,f2);
        l(i)=min();
    end
   
    for i=1:n
        for j=1:n
            if g(i,j)==3 & k(i)>1&l(j)>=k(i)
                nc=union(i,nc);
            end
        end
    end
end
end


function nc=isncf(w,k)
    nc=[];
    t=zeros(size(w));
    n=size(w,1);
    a=find(w~=0);
    for i=1:length(a)
        d(i)=w(a(i));
        if a(i)/n>floor(a(i)/n)
          t(i)=floor(a(i)/n)+1;
        else
            t(i)=floor(a(i)/n);
        end
        t1(i)=mod(a(i),n);
        if t1(i)==0
            t1(i)=n;
        end
    end
    =sort(d);
    p=;pc=0;
    for i=1:length(a)
        if k(t1(c(i)))<k(t(c(i)))
            p=union(p,t(c(i)));
            t(t1(c(i)),t(c(i)))=3;
        end
        if pc==0
            tc=isempty(setdiff(,p));
            if tc
                t0=sum(t(1,:)==3);
                if  t0>=2
                    nc=union(nc,1);
                end
                break;
            end
        end
    end
   
        
end

ganquanlife 发表于 2013-3-3 15:03

如果没法改正,另外编一个求割点的代码也行阿
页: [1]
查看完整版本: 求助关于求图割点的代码,哪里错了?怎么改正啊?