zoukankan      html  css  js  c++  java
  • prim algorithm

    function re=biaoji(j,biao) %判断j点是否已被标记
    l=length(biao);
    for i=1:l
    if j==biao(i)
    re=1;
    return;
    end
    end
    re=0;
    return;
    end

    clc;
    clear all;
    close all;

    G=[0 4 0 0 0 0 0 8 0;
    4 0 8 0 0 0 0 11 0;
    0 8 0 7 0 4 0 0 2;
    0 0 7 0 9 14 0 0 0;
    0 0 0 9 0 10 0 0 0;
    0 0 4 14 10 0 2 0 0;
    0 0 0 0 0 2 0 1 6;
    8 11 0 0 0 0 1 0 7;
    0 0 2 0 0 0 6 7 0];
    tmp = find(G~=0);
    g = G(tmp);
    k =length(G(:,1));
    [tmpa,tmpb] = find(G~= 0);
    e = [tmpa,tmpb];
    E =[g,tmpa,tmpb];
    [x,y] = cylinder(1,k);
    plot(x(1,:),y(1,:),'r*','markersize',10,'linewidth',1);
    axis([-1.5,1.5,-1.5,1.5]);
    hold on
    for i = 1 :k
    tem = ['V',int2str(i)];
    text(x(1,i)+0.05,y(1,i),tem);
    end
    for i = 1:length(e(:,1))
    plot(x(1,e(i,:)),y(1,e(i,:)),'b','linewidth',1);
    end
    %% prim algorithm 
    [m,n] = size(G);
    q = [1];
    k = 1;
    A = [];
    while length(q) ~= m
    e = [];
    for i = 1:k
    for j = 1:n
    if G(q(i),j)~= 0 && ~biaoji(j,q)
    e = [e;G(q(i),j) q(i),j];
    end
    end
    end
    [junk index]=min(e(:,1)); %求与当前标记的所有元素相邻的权重最小的边的索引
    A=[A;e(index,:)]; %最小生成树的三元组表示
    q=[q e(index,3)];
    k=k+1; 
    end

    a = A(:,2:3);
    for i = 1:length(a(:,1))
    plot(x(1,a(i,:)),y(1,a(i,:)),'r-.','linewidth',2);
    end

  • 相关阅读:
    OCP-1Z0-052-V8.02-28题
    OCP-1Z0-052-V8.02-27题
    OCP-1Z0-052-V8.02-26题
    OCP-1Z0-052-V8.02-25题
    Oracle DB 管理还原数据
    Flex中常见的图
    OCP-1Z0-052-V8.02-23题
    OCP-1Z0-052-V8.02-21题
    OCP-1Z0-052-V8.02-20题
    OCP-1Z0-052-V8.02-19题
  • 原文地址:https://www.cnblogs.com/Kermit-Li/p/4052540.html
Copyright © 2011-2022 走看看