图论-最短路问题及MATLAB程序实现

         图论中的最短路问题本质是一个最优化问题,也是图论中的经典问题之一。从数学上考虑,大量的优化问题等价于在图中寻找最短路径问题,而求最短路的过程实际也是一个DFS(depth-first-搜索)问题。最短路问题的经典算法是采用Dijkstra和Floyd两种算法来实现。
        首先定义最短路问题中的权值矩阵,由前置定义:对简单图G的每一边e赋予一个实数,记为w(e),称为边e的权,而每边均赋予权值的图称为赋权图。
        对无向图而言,定义权值矩阵为:

           从而可知,对无向图而言,dij=dji,即权值矩阵W为对称矩阵

               在权值矩阵的基础上,最短路问题可以定义为:在给定的赋权图G中,求互异顶点之间的最短路劲,简称为最短路问题。
               Dijkstra的算法思想如下所示:
               
                 其matlab程序实现也很简单,如下所示:
                
function D=shortlength(W)         %求最短路矩阵函数
  D=W                             %最短路矩阵
  n=length(W)                     %权值矩阵大小
  m=1
  while m<=n
     for i=1:n
      for j=1:n
         if D(i,j)>D(i,m)+D(m,j)  
             D(i,j)=D(i,m)+D(m,j); %Dijstra算法
         end
      end
     end
    m=m+1;
  end
    D;

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值