单源最小路径BellMan Ford算法

本文介绍了Bellman-Ford算法,用于在带权有向图中寻找单源最短路径。算法包括初始化所有顶点距离为无穷大,源顶点距离设为0,然后进行V-1次遍历更新最短路径,最后检查是否存在负权边构成的环。附带源码和测试用例。
摘要由CSDN通过智能技术生成

Bellman-Ford 算法是一种用于计算带权有向图中单源最短路径(SSSP:Single-Source Shortest Path)的算法。

输入:带权图

输出:从第0个点到其他点的最短路径值

Bellman-Ford 算法描述:

  1. 创建源顶点 v 到图中所有顶点的距离的集合 distSet,为图中的所有顶点指定一个距离值,初始均为 Infinite,源顶点距离为 0;
  2. 计算最短路径,执行 V - 1 次遍历;
    • 对于图中的每条边:如果起点 u 的距离 d 加上边的权值 w 小于终点 v 的距离 d,则更新终点 v 的距离值 d;
  3. 检测图中是否有负权边形成了环,遍历图中的所有边,计算 u 至 v 的距离,如果对于 v 存在更小的距离,则说明存在环

源码如下:

/*
  带权值图的一种表示方法:顶点与和向边数组
 */
public class DigraphVEW {
    String[] vertex;//所有顶点的数组,存放顶点的名字
    int verNum;//顶点个数
    Edge[] edgds;//所有带权边的数组

    public DigraphVEW(String[] vertex,  Edge[] edgds) {
        this.vertex = vertex;
        this.verNum = vertex.length;
        this.edgds = edgds;
    }

    public String[] getVertex() {
        return vertex;
    }

    public vo
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值