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

昆明培训网站建设网站收录什么意思

昆明培训网站建设,网站收录什么意思,wordpress 海盗湾,天津做网站制作公司迪锐克斯拉算法 简单来说就是在有向图中,给定一个图中具体的出发点,从这个点出发能够到达的所有的点,每个点的最短距离是多少。到不了的点,距离则是正无穷。有向,无负权重,可以有环。 所以说,迪…

迪锐克斯拉算法
简单来说就是在有向图中,给定一个图中具体的出发点,从这个点出发能够到达的所有的点,每个点的最短距离是多少。到不了的点,距离则是正无穷。有向,无负权重,可以有环
所以说,迪锐克斯拉算法是生成一个从源点出发到各个点的最小距离表。
举例:有向图如图所示
在这里插入图片描述

从给定的出发点a出发,最终要获得的是a到b,c,d,e每个点之间的最短距离。默认a到自己的距离是0,其他的点还没到达的点的距离是正无穷。已经确定的答案不动,在没有确定的记录中找一个最小的出来

abcde
0正无穷正无穷正无穷正无穷

所以先从a点出发的三条边1,2,6。中找出权重为1的边,ad距离为1,小于之前的正无穷(比之前距离小),所以更新a到d之间的距离,bcd同理。所以更新完后距离如下:

abcde
0261正无穷

此时,从a出发的三条边已经走完,所以a点确定下来,再也不动。
其余没有确定的记录中d是最短的(从a出发到b的距离为1),所以从d开始向下找(d属于中间的跳点)。
d出发的边有两条,分别是dc和de。其中dc距离为2,再加上之前a到d的距离为1,所以此时a到c的距离经过d跳转后为3,小于之前的6,所以更新ac之间距离,同样de距离7小于正无穷。所以也进行更新。d也确定了。

abcde
02317

接下来从不确定的记录中根据最小的向下找。b点出发的边有一条be,be距离9加上a到b的距离2,所以be距离为11,大于之前的,不更新。b也确定了。

abcde
02317

还剩下c,从c点出发的边有两条,cb和ce,因为b点已经确定了不再动,所以一看ce一条,ce距离为3,a到c距离为3,所以ae之间距离为6,小于之前,更新e点距离。

abcde
02316

代码
根据上面的分析进行代码的实现,不过getMinDistanceAndUnSelectNode有瑕疵,因为每找一个minNode就会在集合中都遍历一次。会在下面进行代码优化。

  public static HashMap<Node, Integer> dijkstra1(Node from) {HashMap<Node, Integer> distanceMap = new HashMap<>();distanceMap.put(from, 0);//已经确定的边;HashSet<Node> selectedNodes = new HashSet<>();//根据已经确定的记录 和 map,找出没确定的中最小的记录Node minNode = getMinDistanceAndUnSelectNode(distanceMap, selectedNodes);while (minNode != null) {int distance = distanceMap.get(minNode);for (Edge edge : minNode.edges) {Node toNode = edge.to;if (!distanceMap.containsKey(toNode)) {distanceMap.put(toNode, distance + edge.weight);} else {//edge.weight + distance 当前边的权重 + 我此时当做跳点的距离。//distanceMap.get(toNode) 已经存在的距离distanceMap.put(toNode, Math.min(distanceMap.get(toNode), (edge.weight + distance)));}}//所有的边都已经遍历完,这个点可以确定了,放到确定的集合中。selectedNodes.add(minNode);//再次获取最小的记录minNode = getMinDistanceAndUnSelectNode(distanceMap, selectedNodes);}return distanceMap;}public static Node getMinDistanceAndUnSelectNode(HashMap<Node, Integer> distanceMap, HashSet<Node> selectedNode) {Node minNode = null;int minDistance = Integer.MAX_VALUE;for (Map.Entry<Node, Integer> entry : distanceMap.entrySet()) {Node node = entry.getKey();int distance = entry.getValue();if (!selectedNode.contains(node) && distance < minDistance) {minDistance = distance;minNode = node;}}return minNode;}
http://www.yidumall.com/news/18506.html

相关文章:

  • 有赞官网广西壮族自治区在线seo关键词排名优化
  • 外贸英文网站模板谷歌官网入口手机版
  • 营销型企业网站诊断沧州网站建设公司
  • 深圳企业网站建设服务中心免费个人网站模板
  • 现在有什么网站可以做兼职的江门网站建设
  • 网站邮件功能设计理论360优化大师旧版
  • 国外网站有备案吗搜索引擎营销的作用
  • 网站后台系统功能免费推广软件 推广帮手
  • 网站制作工具 简易怎么做公司网页
  • 网站开发需要哪些硬件湖南企业网站建设
  • 南宁网站建设方案报价长沙seo平台
  • 网站开发 技术难点搜索引擎优化包括哪些方面
  • 在线直播网站开发石家庄seo公司
  • 做外贸网站好的公司网络营销名词解释答案
  • 做网站有谁做建站公司哪家好
  • 安徽智能网站建设推荐广告软文案例
  • 本地网站搭建时需要使用的软件是sem推广和seo的区别
  • wordpress站点限制插件宁波关键词优化企业网站建设
  • 免费crm下载seo顾问
  • 深圳seo网络推广营销seo优
  • 真么做网站关键词免费下载
  • 做网站有兼职吗大数据查询平台
  • 做网站代码难么关键词优化搜索排名
  • 爱心建站网国际新闻最新消息战争
  • 怎么做查询网站后台东莞谷歌推广公司
  • 个人网站经营性备案信息流优化师是什么
  • 手机怎样做网站电商网站开发
  • 做电商网站查询seo
  • 在対网站做可能的来自内部和外部的攻击网推接单平台
  • 魔客吧是什麼程序做的网站百度小说搜索风云榜排行榜