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

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

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

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

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

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

算法用途

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

算法思想

程序参数说明

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));      % 求极小值,其对应顶点为图的一般中心

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值