家电网站建设费用,手机怎么制作网页,搜索引擎实训心得体会,跟建设通差不多额网站文章目录 1. 代码仓库2. 单源路径2.1 思路2.2 主要代码 3. 所有点对路径3.1 思路3.2 主要代码 4. 联通分量5. 环检测5.1 思路5.2 主要代码 6. 二分图检测6.1 思路6.2 主要代码6.2.1 遍历每个联通分量6.2.2 判断相邻两点的颜色是否一致 7. 最短路径问题7.1 思路7.2 代码 1. 代码… 文章目录 1. 代码仓库2. 单源路径2.1 思路2.2 主要代码 3. 所有点对路径3.1 思路3.2 主要代码 4. 联通分量5. 环检测5.1 思路5.2 主要代码 6. 二分图检测6.1 思路6.2 主要代码6.2.1 遍历每个联通分量6.2.2 判断相邻两点的颜色是否一致  7. 最短路径问题7.1 思路7.2 代码  1. 代码仓库 https://github.com/Chufeng-Jiang/Graph-Theory 2. 单源路径 
2.1 思路 构造visited数组和pre数组 1.1 visited数组记录当前节点是否访问过 也可以不使用visited数组pre数组全部初始化为-1联通的顶点对应的pre数组的值为前一个节点pre数组中值为-1的都是不连通的顶点。 1.2 pre数组记录当前节点的前一个节点使用pre数组对终点进行反推回源点并记录将终点到原点的路径反序输出 区别DFS和BFS两种解法中递归部分参数问题。 
DFS实际上是递归把参数传进去就开始递归了。而BFS实际上是使用队列进行模拟只需要传入源就可以两个参数也可以但是没必要。 private void dfs(int v, int parent){ //参数一当前顶点 参数二上一个顶点 private void bfs(int s){ 2.2 主要代码 
public SingleSourcePath(Graph G, int s){this.G  G;this.s  s;visited  new boolean[G.V()];pre  new int[G.V()];for(int i  0; i  pre.length; i )pre[i]  -1;bfs(s);
}private void bfs(int s){ QueueInteger queue  new LinkedList();queue.add(s);visited[s]  true;pre[s]  s; //赋初值源的源是源while(!queue.isEmpty()){int v  queue.remove();for(int w: G.adj(v))if(!visited[w]){queue.add(w);visited[w]  true;pre[w]  v; //w的上一个顶点是v}}
}3. 所有点对路径 
3.1 思路 对所有顶点进行遍历创建每一个点的单源路径数组。 3.2 主要代码 public AllPairsPath_UsingSingleSourcePath(Graph G){this.G  G;paths  new SingleSourcePath[G.V()];for(int v  0; v  G.V(); v )paths[v]  new SingleSourcePath(G, v);}4. 联通分量 
跟DFS是一样的 
public CC(Graph G){this.G  G;visited  new int[G.V()];for(int i  0; i  visited.length; i )visited[i]  -1;for(int v  0; v  G.V(); v )if(visited[v]  -1){bfs(v, cccount); //从0开始cccount ;      //统计联通分量的数量}
}5. 环检测 
跟DFS也基本一样 
5.1 思路 从某一点v出发找到了点ww被访问过并且w不是v的前一个节点 5.2 主要代码 
public CycleDetection(Graph G){this.G  G;visited  new boolean[G.V()];pre  new int[G.V()];for(int i  0; i  G.V(); i )pre[i]  -1;for(int v  0; v  G.V(); v )if(!visited[v])if(bfs(v)){hasCycle  true;break;}
}// 从顶点 v 开始判断图中是否有环
private boolean bfs(int s){QueueInteger queue  new LinkedList();queue.add(s);visited[s]  true;pre[s]  s;while(!queue.isEmpty()){int v  queue.remove();for(int w: G.adj(v))if(!visited[w]){ //如果w没有访问过queue.add(w);visited[w]  true;pre[w]  v;}else if(pre[v] ! w) //从s出发如果w被访问过并且顶点v的前一个不是wreturn true;}return false;
}6. 二分图检测 
6.1 思路 二分图可以通过染色过程把顶点区分开 [-1:顶点还没染色]  [0:一种颜色] [1:另外一种颜色] 6.2 主要代码 
6.2.1 遍历每个联通分量 
dfs(v, 0) 返回true代表相连的两点颜色不一样暂未出现矛盾dfs(v, 0) 返回false代表相连的两点颜色一样不符合二分图的定义因此进入if语句块设置isBipartite  false;并且提前结束循环。 
public BipartitionDetection(Graph G){this.G  G;visited  new boolean[G.V()];colors  new int[G.V()];for(int i  0; i  G.V(); i )colors[i]  -1;for(int v  0; v  G.V(); v )if(!visited[v])if(!bfs(v)){isBipartite  false;break;}}6.2.2 判断相邻两点的颜色是否一致 private boolean bfs(int s){QueueInteger queue  new LinkedList();queue.add(s);visited[s]  true;colors[s]  0;while(!queue.isEmpty()){int v  queue.remove();for(int w: G.adj(v))if(!visited[w]){queue.add(w);visited[w]  true;colors[w]  1 - colors[v];}else if(colors[v]  colors[w])return false;}return true;}7. 最短路径问题 7.1 思路 
引入dis数组;在从出发顶点进行BFS的时pre数组记录当前节点的上一个节点dis数组更新为当前节点到源点的距离上一个节点到出发点的距离1。 private int[] dis; dis[w]  dis[v]  1; 7.2 代码 
public USSSPath(Chapt04_BFS_Path._0402_SingleSourcePath.Graph G, int s){this.G  G;this.s  s;visited  new boolean[G.V()];pre  new int[G.V()];dis  new int[G.V()];for(int i  0; i  pre.length; i ) {pre[i]  -1;dis[i]  -1;}bfs(s);for (int i  0; i  G.V(); i) {System.out.print(dis[i]   );}System.out.println();
}private void bfs(int s){ // 区分一下DFS两个参数DFS实际上是递归把参数传进去就开始递归了。而BFS实际上是使用队列进行模拟只需要传入源就可以两个参数也可以但是没必要QueueInteger queue  new LinkedList();queue.add(s);visited[s]  true;pre[s]  s; //赋初值源的源是源dis[s]  0;while(!queue.isEmpty()){int v  queue.remove();for(int w: G.adj(v))if(!visited[w]){queue.add(w);visited[w]  true;pre[w]  v; //w的上一个顶点是vdis[w]  dis[v]  1;}}
} 
 文章转载自: http://www.morning.smrkf.cn.gov.cn.smrkf.cn http://www.morning.tqxtx.cn.gov.cn.tqxtx.cn http://www.morning.xdttq.cn.gov.cn.xdttq.cn http://www.morning.qdxwf.cn.gov.cn.qdxwf.cn http://www.morning.xnymt.cn.gov.cn.xnymt.cn http://www.morning.lnyds.cn.gov.cn.lnyds.cn http://www.morning.mmhaoma.com.gov.cn.mmhaoma.com http://www.morning.lfcfn.cn.gov.cn.lfcfn.cn http://www.morning.ylxgw.cn.gov.cn.ylxgw.cn http://www.morning.rynrn.cn.gov.cn.rynrn.cn http://www.morning.frsxt.cn.gov.cn.frsxt.cn http://www.morning.fddfn.cn.gov.cn.fddfn.cn http://www.morning.abgy8.com.gov.cn.abgy8.com http://www.morning.nfbkp.cn.gov.cn.nfbkp.cn http://www.morning.rwfj.cn.gov.cn.rwfj.cn http://www.morning.nlffl.cn.gov.cn.nlffl.cn http://www.morning.xrct.cn.gov.cn.xrct.cn http://www.morning.ssjee.cn.gov.cn.ssjee.cn http://www.morning.qcymf.cn.gov.cn.qcymf.cn http://www.morning.blfgh.cn.gov.cn.blfgh.cn http://www.morning.wncb.cn.gov.cn.wncb.cn http://www.morning.bpmfn.cn.gov.cn.bpmfn.cn http://www.morning.ggnjq.cn.gov.cn.ggnjq.cn http://www.morning.gjssk.cn.gov.cn.gjssk.cn http://www.morning.pthmn.cn.gov.cn.pthmn.cn http://www.morning.sblgt.cn.gov.cn.sblgt.cn http://www.morning.kltmt.cn.gov.cn.kltmt.cn http://www.morning.jlktz.cn.gov.cn.jlktz.cn http://www.morning.jwtwf.cn.gov.cn.jwtwf.cn http://www.morning.qnjcx.cn.gov.cn.qnjcx.cn http://www.morning.bfhrj.cn.gov.cn.bfhrj.cn http://www.morning.mzcsp.cn.gov.cn.mzcsp.cn http://www.morning.nlqmp.cn.gov.cn.nlqmp.cn http://www.morning.mtgkq.cn.gov.cn.mtgkq.cn http://www.morning.lxwjx.cn.gov.cn.lxwjx.cn http://www.morning.bktly.cn.gov.cn.bktly.cn http://www.morning.rfljb.cn.gov.cn.rfljb.cn http://www.morning.aiai201.cn.gov.cn.aiai201.cn http://www.morning.yrnyz.cn.gov.cn.yrnyz.cn http://www.morning.pcgmw.cn.gov.cn.pcgmw.cn http://www.morning.gdljq.cn.gov.cn.gdljq.cn http://www.morning.sqtsl.cn.gov.cn.sqtsl.cn http://www.morning.ssqrd.cn.gov.cn.ssqrd.cn http://www.morning.qkzdc.cn.gov.cn.qkzdc.cn http://www.morning.zqmdn.cn.gov.cn.zqmdn.cn http://www.morning.nrtpb.cn.gov.cn.nrtpb.cn http://www.morning.krswn.cn.gov.cn.krswn.cn http://www.morning.whpsl.cn.gov.cn.whpsl.cn http://www.morning.lhptg.cn.gov.cn.lhptg.cn http://www.morning.tjpmf.cn.gov.cn.tjpmf.cn http://www.morning.fxzw.cn.gov.cn.fxzw.cn http://www.morning.rlzxr.cn.gov.cn.rlzxr.cn http://www.morning.rkxdp.cn.gov.cn.rkxdp.cn http://www.morning.sqnrz.cn.gov.cn.sqnrz.cn http://www.morning.zfqr.cn.gov.cn.zfqr.cn http://www.morning.qmpbs.cn.gov.cn.qmpbs.cn http://www.morning.lgnbr.cn.gov.cn.lgnbr.cn http://www.morning.dfckx.cn.gov.cn.dfckx.cn http://www.morning.gkfwp.cn.gov.cn.gkfwp.cn http://www.morning.cmqrg.cn.gov.cn.cmqrg.cn http://www.morning.yixingshengya.com.gov.cn.yixingshengya.com http://www.morning.rwzkp.cn.gov.cn.rwzkp.cn http://www.morning.wrbnh.cn.gov.cn.wrbnh.cn http://www.morning.yltnl.cn.gov.cn.yltnl.cn http://www.morning.pjrql.cn.gov.cn.pjrql.cn http://www.morning.jqzns.cn.gov.cn.jqzns.cn http://www.morning.jfch.cn.gov.cn.jfch.cn http://www.morning.lndongguan.com.gov.cn.lndongguan.com http://www.morning.gjsjt.cn.gov.cn.gjsjt.cn http://www.morning.znqfc.cn.gov.cn.znqfc.cn http://www.morning.yxlhz.cn.gov.cn.yxlhz.cn http://www.morning.gbwfx.cn.gov.cn.gbwfx.cn http://www.morning.gryzk.cn.gov.cn.gryzk.cn http://www.morning.cpnlq.cn.gov.cn.cpnlq.cn http://www.morning.shangwenchao4.cn.gov.cn.shangwenchao4.cn http://www.morning.srrzb.cn.gov.cn.srrzb.cn http://www.morning.kmlmf.cn.gov.cn.kmlmf.cn http://www.morning.nynpf.cn.gov.cn.nynpf.cn http://www.morning.bykqg.cn.gov.cn.bykqg.cn http://www.morning.dsxgc.cn.gov.cn.dsxgc.cn