连通无向图一般中心的算法及其matlab程序详解

#################本文为学习《图论算法及其MATLAB实现》的学习笔记#################

若服务点只允许取在各顶点上,而服务对象却取在各顶点及各边(或弧)上的点,则在所有顶点中选定一个顶点作为图的一般中心

其条件是该点离它本身的最远服务对象(包括顶点及各边(或弧)上的点)的距离达到极小值

寻找无向图的一般中心对解决网络最佳服务点确定的问题是十分有效的,使得服务对象的范围更加广泛。

例如,在某城市的电车线路网中需要选址建一电车线路维修站,以便在线路的某处发生故障时能够及时前往维修,若只能在顶点(线路交叉点)上建站,这就是选择电车线路网一般中心的问题。

算法用途

连通无向图一般中心的确定

算法思想

连通无向图一般中心的算法及其matlab程序详解_第1张图片

程序参数说明

W: 图的权值矩阵 
d: 图的一般中心

算法程序详解

%连通无向图的一般中心的算法
function [ d ] = ucengraf( W )
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%% 输入:     W: 图的权值矩阵 
%%%%%%%%% 输出:     d: 图的一般中心
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%% 计算最短距离矩阵 %%%%%%
n = length(W);  % 计算顶点数
U = W;
m = 1;
while m <= n   
    for i = 1:n
        for j = 1:n
            if U(i,j) > U(i,m) + U(m,j)
                U(i,j) = U(i,m) + U(m,j);     
            end
        end
    end
    m = m+1;
end

for m = 1:n
    k = 1;
    for i = 1:n
        for j = 1:n
            if W(i,j) ~= 0 & W(i,j) ~= inf
                D(m,k) = 0.5 * (U(m,i) + W(i,j) + U(m,j));  % 利用公式计算各顶点到各边上最远点的距离
                k = k+1;
            end
        end
    end
end
d1 = max(D,[],2);             % 求极大值
d = find(d1 == min(d1));      % 求极小值,其对应顶点为图的一般中心

你可能感兴趣的:(图论,算法,matlab,图论)