当前位置: 首页 > news >正文

网站登录qqwordpress站下所有标签

网站登录qq,wordpress站下所有标签,杭州 做网站,电商网站设计图片素材1. 前言 前文的迪杰斯特拉算法不能求解有负边的图的最短路径的问题。而此文的Bellman-Ford可以处理含负权边的图算法,并且能检测出图中是否存在负环(权重和为负数的环). 2. 基本思想 1. 初始化: 对于所有顶点 v ∈ V \ {s}&am…

1. 前言

前文的迪杰斯特拉算法不能求解有负边的图的最短路径的问题。而此文的Bellman-Ford可以处理含负权边的图算法,并且能检测出图中是否存在负环(权重和为负数的环).

2. 基本思想

1. 初始化:

  • 对于所有顶点 v ∈ V \ {s}(除了起点 s),设其到起点的距离为无穷大(表示不可达)。
  • 起点 s 到自身的距离设为 0。


2. 松弛操作:

  • 遍历图中的每条边 (u, v) ∈ E,执行松弛操作 `Relax(u, v, w)`。松弛操作尝试通过边 (u, v) 更新从起点 s 到顶点 v 的已知最短距离。
  • 如果存在一条从起点 s 到顶点 u 的更短路径,并且这条路径加上边 (u, v) 的权重小于目前记录的从起点 s 到顶点 v 的距离,则更新顶点 v 的距离值。
  • 这个过程需要重复进行 |V| - 1 次(V 是顶点集)。因为在没有负权环的情况下,任何从起点到某个顶点的最短路径最多包含 |V| - 1 条边。

3. 检查负权环:

  •  在进行了 |V| - 1 轮松弛操作之后,再进行一轮松弛操作。如果在这个过程中仍然能够进一步减少某个顶点的距离值,那么说明图中存在一个可以被利用来无限降低路径成本的负权环。

3. 顶点类代码

public class Vertex {// 顶点的名字,用来区分顶点String name;// 与该顶点有关的边的集合List<Edge> edges;// 判断是否已经被遍历boolean visited = false;// 初始距离为无穷大int dist = INF;// INF表示无穷大final static int INF = Integer.MAX_VALUE;// 该顶点在最短路径中的前一个顶点Vertex prev = null;public Vertex(String name) {this.name = name;}public String getName() {return name;}
}

顶点图:

4. Bellman-Ford算法代码

public class BellmanFord {public static void main(String[] args) {Vertex v1 = new Vertex("1");Vertex v2 = new Vertex("2");Vertex v3 = new Vertex("3");Vertex v4 = new Vertex("4");v1.edges = new ArrayList<>();v1.edges.add(new Edge(v2, 2));v1.edges.add(new Edge(v3, 1));v2.edges = new ArrayList<>();v2.edges.add(new Edge(v3, -2));v3.edges = new ArrayList<>();v3.edges.add(new Edge(v4, 1));v4.edges = new ArrayList<>();List<Vertex> graph = new ArrayList<>();graph.add(v1);graph.add(v2);graph.add(v3);graph.add(v4);// v1作为起始点bellmanford(graph, v1);}public static void bellmanford(List<Vertex> graph, Vertex source){// 将起始点的距离设置为0,其余点的距离都是无穷大source.dist = 0;int size = graph.size();// 进行 顶点数-1 次处理for(int k = 0; k < size - 1; k++) {// 遍历所有的边for(Vertex v : graph){for(Edge e : v.edges){// 处理每条边if(v.dist != Integer.MAX_VALUE &&v.dist + e.weight < e.linked.dist){e.linked.dist = v.dist + e.weight;e.linked.prev = v;}}}}for(Vertex v : graph){System.out.println("v" + v.name + "  " + v.dist);}}
}

打印的结果:

v1  0
v2  2
v3  0
v4  1
http://www.yayakq.cn/news/470890/

相关文章:

  • 会用wordpress建站网站建设注意哪些内容
  • wordpress登录非常慢关键词营销优化
  • 深圳营销网站建设服务上海外企公司有哪些
  • 成都网站建设 推广行网站首页线框图怎么做
  • 衡水网站制作设计网站百度
  • 比较好的平面设计网站国外界面设计网站
  • 怎么制作网站模版网站开发的工资一般是多少
  • 福州的网站建设网站进度条特效
  • 北京南站到北京西站注塑模具东莞网站建设
  • 高质量视频素材网站网站缓存设置怎么做
  • 做网站怎样盈利宁波网站排名方法
  • 最新网站架构自己做的网站怎么在局域网中访问
  • 沈阳网站如何制作wordpress上传html
  • 做网站建设需要什么工具政网站首页怎么做试
  • 网站建设找哪家公司好做网站的框架有
  • 西安全网优化 西安网站推广自己怎么做小程序接单
  • 深圳福田做网站公司制作公司网站价格
  • 网站后台管理系统制作wordpress文章摘录
  • 网站怎么做优化步骤电子商务网站建设与维护 答案
  • 网站推广技巧厦门网页设计制作
  • 报送举报网站建设情况做局域网网站教程
  • 精选网站建立 推广 优化大同做网站
  • 多用户商城网站方案河南南阳最新消息今天
  • 智慧团建网站pc端建设集团招工信息网站
  • 北京个人制作网站网站后台怎么修改
  • 郑州定制网站php网站开发技术
  • 合肥 网站建设网络管理系统中故障管理的目标是
  • 小程序网站开发是用什么语言郑州医院排名第一妇科
  • 新广告法 做网站的最简单的单页网站怎么做
  • 不动产认证是哪个公司做的网站购物网站 备案