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

无极网站无极城市在线温州网站建设华一

无极网站无极城市在线,温州网站建设华一,php做电商网站有那几个模块,在线网站建设教程目录 广度优先遍历与最短路径 Java 实例代码 src/runoob/graph/ShortestPath.java 文件代码#xff1a; 广度优先遍历与最短路径 广度优先遍历从某个顶点 v 出发#xff0c;首先访问这个结点#xff0c;并将其标记为已访问过#xff0c;然后顺序访问结点v的所有未被访问…目录 广度优先遍历与最短路径 Java 实例代码 src/runoob/graph/ShortestPath.java 文件代码 广度优先遍历与最短路径 广度优先遍历从某个顶点 v 出发首先访问这个结点并将其标记为已访问过然后顺序访问结点v的所有未被访问的邻接点 {vi,..,vj} 并将其标记为已访问过然后将 {vi,...,vj} 中的每一个节点重复节点v的访问方法直到所有结点都被访问完为止。 我们可以分为三个步骤 1使用一个辅助队列 q首先将顶点 v 入队将其标记为已访问然后循环检测队列是否为空。2如果队列不为空则取出队列第一个元素并将与该元素相关联的所有未被访问的节点入队将这些节点标记为已访问。3如果队列为空则说明已经按照广度优先遍历了所有的节点。 下图所示右边蓝色表示从 0 开始遍历节点的顺序下面是记录距离 0 的距离可知广度优先遍历能求出无权图的最短路径。 下面用代码展示如何用广度优先遍历方式完成遍历并且查询到最短路径。我们在上一小节代码的基础上增加一全局变量 ord 数组记录路径中节点的次序。ord[i] 表示 i 节点在路径中的次序。同时构造函数做出相应调整在遍历相邻节点时 每访问一个未被访问的节点进行 ord[i] ord[v] 1记录距离。邻接表的广度优先遍历时间复杂度为 O(VE)邻接矩阵的时间复杂度为O(V^2)。 ... // 构造函数, 寻路算法, 寻找图graph从s点到其他点的路径 public ShortestPath(Graph graph, int s){     // 算法初始化     G graph;     assert s 0 s G.V();     visited new boolean[G.V()];     from new int[G.V()];     ord new int[G.V()];     for( int i 0 ; i G.V() ; i ){         visited[i] false;         from[i] -1;         ord[i] -1;     }     this.s s;     // 无向图最短路径算法, 从s开始广度优先遍历整张图     LinkedListInteger q new LinkedListInteger();     q.push( s );     visited[s] true;     ord[s] 0;     while( !q.isEmpty() ){         int v q.pop();         for( int i : G.adj(v) )             if( !visited[i] ){                 q.push(i);                 visited[i] true;                 from[i] v;                 ord[i] ord[v] 1;             }     } } ... 查看从 s 点到 w 点的最短路径长度若从 s 到 w 不可达返回-1。 ... public int length(int w){     assert w 0 w G.V();     return ord[w]; } ... Java 实例代码 源码包下载Download src/runoob/graph/ShortestPath.java 文件代码 package runoob.graph; import runoob.graph.read.Graph; import java.util.LinkedList; import java.util.Stack; import java.util.Vector; /**  * 广度优先遍历与最短路径  */ public class ShortestPath {     // 图的引用     private Graph G;     // 起始点     private int s;     // 记录dfs的过程中节点是否被访问     private boolean[] visited;     // 记录路径, from[i]表示查找的路径上i的上一个节点     private int[] from;     // 记录路径中节点的次序。ord[i]表示i节点在路径中的次序。     private int[] ord;     // 构造函数, 寻路算法, 寻找图graph从s点到其他点的路径     public ShortestPath(Graph graph, int s){         // 算法初始化         G graph;         assert s 0 s G.V();         visited new boolean[G.V()];         from new int[G.V()];         ord new int[G.V()];         for( int i 0 ; i G.V() ; i ){             visited[i] false;             from[i] -1;             ord[i] -1;         }         this.s s;         // 无向图最短路径算法, 从s开始广度优先遍历整张图         LinkedListInteger q new LinkedListInteger();         q.push( s );         visited[s] true;         ord[s] 0;         while( !q.isEmpty() ){             int v q.pop();             for( int i : G.adj(v) )                 if( !visited[i] ){                     q.push(i);                     visited[i] true;                     from[i] v;                     ord[i] ord[v] 1;                 }         }     }     // 查询从s点到w点是否有路径     public boolean hasPath(int w){         assert w 0 w G.V();         return visited[w];     }     // 查询从s点到w点的路径, 存放在vec中     public VectorInteger path(int w){         assert hasPath(w) ;         StackInteger s new StackInteger();         // 通过from数组逆向查找到从s到w的路径, 存放到栈中         int p w;         while( p ! -1 ){             s.push(p);             p from[p];         }         // 从栈中依次取出元素, 获得顺序的从s到w的路径         VectorInteger res new VectorInteger();         while( !s.empty() )             res.add( s.pop() );         return res;     }     // 打印出从s点到w点的路径     public void showPath(int w){         assert hasPath(w) ;         VectorInteger vec path(w);         for( int i 0 ; i vec.size() ; i ){             System.out.print(vec.elementAt(i));             if( i vec.size() - 1 )                 System.out.println();             else                 System.out.print( - );         }     }     // 查看从s点到w点的最短路径长度     // 若从s到w不可达返回-1     public int length(int w){         assert w 0 w G.V();         return ord[w];     } }
http://www.hkea.cn/news/14345273/

相关文章:

  • 德州建设信息网站高雅大气的三字公司名称
  • 怎么样让网站快速收录免费网站你懂我意思正能量软件
  • 网站要怎么创建淘宝美工做兼职的网站
  • 网站建设 个人模板冷门且好听的公司名字
  • 商城网站怎么做推广北京seo平台
  • 沈阳关键词快照优化上海全国关键词排名优化
  • 国内有多少家做网站的企业外贸网站推广 上海
  • 高端响应式网站建设南通大型网站建设
  • 大气宽屏企业网站源码网站建设哪家好 思创网络
  • 自己做视频网站有点卡淮南公司网站建设
  • asp网站制作设计教程国外网站打开很慢
  • 建站软件网站建设一定要公司吗
  • 做网站网站怎么赚钱开源企业建站系统php
  • 网站制作与网页制作在线做原型的网站
  • 网站域名购买后能修改吗石河子做网站
  • 网站备案了有什么好处网站建设 互成网络
  • 网站建设方案书应急处置方案科技创新的评价机制的作用
  • 中国水利教育培训网站宁夏做网站公司
  • 科学做视频网站在线开发app
  • 解析网站怎么做微模板网站建设
  • 网站建设与数据库管理wordpress阶梯插件
  • 参与网站建设与维护的要求wordpress font awesome
  • 网站建设唯美谷网站怎么建设网站最便宜
  • 做一个个人主页的网站怎么做电脑可以做网站服务器吗
  • 网站服务器的选择村网站开设两学一做栏目
  • 上海网络公司网站注册公司怎么注册
  • 做电商要注册网站吗个人做外贸的网站那个好做
  • 网站设计与开发wordpress分类目录优化
  • 不需要备案的域名wordpress 优化seo
  • 做招聘网站wordpress原生app