数学建模 —— 图论问题


一、图的基本概念

示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。

  1. 无向图的权重邻接矩阵
    在这里插入图片描述

  2. 有向图的权重邻接矩阵
    在这里插入图片描述
    注:Inf 表示无穷大。


二、Dijkstra算法(迪杰斯特拉算法)

1.算法流程

  1. 选择起点start与终点end;
  2. 所有点除起点外加入未知集合,并将起点加入已知集合,即至标志位为真,意为已确定该点到源点的最短路径;
  3. 初始化计算,更新起点与其他各点的耗费dis(start,n);
  4. 在未知集合中,选择dis(start,n)中值最小的点x,将x加入已知集合。
  5. 对于剩余顶点中,计算dis(start,n)>dis(start,x)+dis(x,n)
    若真则dis(start,n)=dis(start,x)+dis(x,n),此时start与n点路径经过x点。循环直至goal点加入已知列表,取得dis(start,goal)即为最短距离。

2.缺点

在这里插入图片描述

三、Bellman‐Ford算法(贝尔曼‐福特算法)

1.算法流程

  1. 初始化时将起点s到各个顶点v的距离dist(s->v)赋值为∞,dist(s->s)赋值为0
  2. 后续进行最多n-1次遍历操作,对所有的边进行松弛操作,假设:
    所谓的松弛,以边ab为例,若dist(a)代表起点s到达a点所需要花费的总数,
    dist(b)代表起点s到达b点所需要花费的总数,weight(ab)代表边ab的权重, 若存在:
    (dist(a) +weight(ab)) < dist(b)
    则说明存在到b的更短的路径,s->…->a->b,更新b点的总花费为(dist(a) +weight(ab)),父节点为a
  3. 遍历都结束后,若再进行一次遍历,还能得到s到某些节点更短的路径的话,则说明存在负环路

2.注:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值