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

在浏览器上建设网站校园网站建设需要什么

在浏览器上建设网站,校园网站建设需要什么,动易网站制作教程,Wordpress编辑文章插件1. 前言 由图: 如果我们想要求得节点1到节点5(也可以是其他节点)的最短路径,我们可以使用Dijkstra算法。 2. 步骤与思路 1. 将所有顶点标记为未访问(顶点类的visited属性设置为false)。创建一个未访问顶点的集合。 2. 为每个顶…

1. 前言

由图:

d3ed8f6785a9492ea387ff28f164549c.png

如果我们想要求得节点1到节点5(也可以是其他节点)的最短路径,我们可以使用Dijkstra算法。

2. 步骤与思路

1. 将所有顶点标记为未访问(顶点类的visited属性设置为false)。创建一个未访问顶点的集合。

2. 为每个顶点分配一个临时距离值:

  • 对于我们的初始顶点,将其设置为0;
  • 对于所有其他顶点,将其设置为无穷大。

3. 每次选择最小临时距离的未访问节点作为当前顶点。

4. 对于当前顶点,遍历其所有未访问的邻居,并更新它们的临时距离为更小。

  • 例如,1->6的距离是14,而1->3->6的距离是11。这时将距离更新为11.
  • 否则,将保留上次距离值。

5. 当前顶点的邻居处理完后,把它从未访问集合中删除。

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;}
}public class Edge {// 表示边上被箭头指向的顶点Vertex linked;// 权重int weight;public Edge(Vertex linked) {this.linked = linked;weight = 1;}public Edge(Vertex linked, int weight) {this.linked = linked;this.weight = weight;}
}

4. 总代码:

public class Dijkstra {public static void main(String[] args) {List<Vertex> list = new ArrayList<>();// 建立顶点联系Vertex v1 = new Vertex("1");Vertex v2 = new Vertex("2");Vertex v3 = new Vertex("3");Vertex v4 = new Vertex("4");Vertex v5 = new Vertex("5");Vertex v6 = new Vertex("6");v1.edges = new ArrayList<>();v1.edges.add(new Edge(v3, 9));v1.edges.add(new Edge(v2, 7));v1.edges.add(new Edge(v6, 14));v2.edges = new ArrayList<>();v2.edges.add(new Edge(v4, 15));v3.edges = new ArrayList<>();v3.edges.add(new Edge(v6, 2));v3.edges.add(new Edge(v4, 11));v4.edges = new ArrayList<>();v4.edges.add(new Edge(v5, 6));v5.edges = new ArrayList<>();v6.edges = new ArrayList<>();v6.edges.add(new Edge(v5, 9));// 第1步:list.add(v1);list.add(v2);list.add(v3);list.add(v4);list.add(v5);list.add(v6);// v1作为初始顶点dijkstra(list, v1);}public static void dijkstra(List<Vertex> list, Vertex v) {List<Vertex> graph = new ArrayList<>(list);// 将初始顶点v的dist值设置为0v.dist = 0;while (!graph.isEmpty()){// 第3步:每次选择最小的临时距离的未访问节点作为当前节点Vertex i = ChooseMinDistVertex(graph);UpdateNeighboursDist(i);graph.remove(i);// 表示已经被处理完了i.visited = true;}
//        for (Vertex i : list){
//            System.out.println("v" + i.name + "   " + i.dist);
//        }// 打印最短路径中,一个顶点的前一个顶点是谁for(Vertex i : list){System.out.println("v" + i.name + (i.prev != null ? i.prev : null));}}private static Vertex ChooseMinDistVertex(List<Vertex> list){int min = 0;int dist = list.get(min).dist;for(int i = 0; i < list.size(); i++) {if(dist > list.get(i).dist){min = i;dist = list.get(i).dist;}}return list.get(min);}private static void UpdateNeighboursDist(Vertex v) {// 对于当前顶点,遍历其所有未访问的顶点for(Edge e : v.edges){if(!e.linked.visited){if(v.dist + e.weight < e.linked.dist){e.linked.dist = v.dist + e.weight;e.linked.prev = v;}}}}
}

如图:

4db3900871144f95879d51e5d876d080.png

输出为:

v1   0
v2   7
v3   9
v4   20
v5   20
v6   11

5. 改进的Dijkstra算法

上述的ChooseMinDistVertex方法可以改进,即使用优先队列。思路一致,这里就不多写了。

http://www.dtcms.com/wzjs/827377.html

相关文章:

  • 网站设置qq临时会话787878域名
  • 做团购网站的心得我想采集散文 做网站
  • 正版传奇手游官方网站厦门做返利网站的公司
  • 常州溧阳建设工程管理中心网站会ps的如何做网站
  • 如何在godaddy空间做手机网站怎么申请网址怎么用
  • 设计店名logoseo代码优化工具
  • 嘉兴网站建设定制网站诚信建设网站的作用
  • 网站注销备案查询系统廊坊网站排名方案
  • 昆山建设工程信息网站网络营销比较成功的企业
  • 网站内容运营是什么如何查看网站服务器类型
  • 微信公众平台导航 wordpress模版seo关于网站搜索
  • 大型网站开发项目书籍内蒙古呼和浩特职业学院
  • 邮箱域名和网站域名阳春网页定制
  • 石景山网站建设的大公司WordPress四栏主题
  • 菏泽企业网站建设wordpress手机号网站
  • 网站的优化从几个方面网页作业设计报告
  • 国外的自建站平台是什么珠海互联网推广
  • 任丘网站优化网站建设研究
  • 雄安优秀网站建设公司中国菲律宾汇率换算
  • 网站制作公司需要什么资质达令的网站建设
  • 绍兴住房和城乡建设厅网站首页新媒体运营需要具备哪些能力
  • 青岛学网站建设的大学网站开发培训是不是坑
  • 顺德精品网站建设郑州做网站公司有哪些
  • 一家装修的网站怎么做做兼职的网站都有哪些工作内容
  • 网站建设怎么接单博客搭建wordpress
  • 建站推荐网站如何做ico空投网站
  • 有个网站做彩盒的用自己的话回答网络营销是什么
  • 网站文章质检完整的社群营销方案
  • 织梦中英网站怎么做wordpress浏览doc
  • seo网站架构设计临沂品牌网站建设公司