求这些美女图片组图大全全部组图

求无向无权图起点到终点的所有路径 - CSDN博客
求无向无权图起点到终点的所有路径
求无向无权图起点到终点的所有路径
基本思路:
基于图的深度优先遍历进行修改。
0:初始栈中只有起点元素。
步骤1:如果栈为空,则返回,否则,访问栈顶节点,但先不删除栈顶元素。
步骤2:如果该元素的邻接点
(1)是终点,则打印路径。
(2)在栈中已存在,则是环路,不处理。
(2)正常,则将该邻接点入栈,继续步骤1
示例图如下:
代码如下:
package com.collonn.algorithm.
import java.util.S
* 无向无权无环图&br/&
* 寻找起点到终点的所有路径
public class GrfAllEdge {
// 图的顶点总数
// 各顶点基本信息
private String[]
// 图的邻接矩阵
private int[][]
public GrfAllEdge(int total, String[] nodes) {
this.total =
this.nodes =
this.matirx = new int[total][total];
private void printStack(Stack&Integer& stack, int k) {
for (Integer i : stack) {
System.out.print(this.nodes[i] + &,&);
System.out.print(this.nodes[k] + &,&);
* 寻找起点到终点的所有路径
* @param underTop
紧挨着栈顶的下边的元素
* @param goal
* @param stack
private void dfsStack(int underTop, int goal, Stack&Integer& stack) {
// System.out.print(&\n栈元素:&);
// this.printStack(stack);
if (stack.isEmpty()) {
// 访问栈顶元素,但不弹出
int k = stack.peek().intValue();
// 紧挨着栈顶的下边的元素
int uk = underT
if (k == goal) {
System.out.print(&\n起点与终点不能相同&);
// 对栈顶的邻接点依次递归调用,进行深度遍历
for (int i = 0; i & this. i++) {
// 有边,并且不在左上到右下的中心线上
if (this.matirx[k][i] == 1 && k != i) {
// 排除环路
if (stack.contains(i)) {
// 由某顶点A,深度访问其邻接点B时,由于是无向图,所以存在B到A的路径,在环路中,我们要排除这种情况
// 严格的请,这种情况也是一个环
if (i != uk) {
System.out.print(&\n有环:&);
this.printStack(stack, i);
// 打印路径
if (i == goal) {
System.out.print(&\n路径:&);
this.printStack(stack, i);
// 深度遍历
stack.push(i);
dfsStack(k, goal, stack);
stack.pop();
private void printMatrix() {
System.out.println(&----------------- matrix -----------------&);
System.out.println(&---0-1-2-3-4-5-6-7-8--&);
System.out.println(&---A-B-C-D-E-F-G-H-I--&);
for (int i = 0; i & this. i++) {
System.out.print(& & + this.nodes[i] + &|&);
for (int j = 0; j & this. j++) {
System.out.print(this.matirx[i][j] + &-&);
System.out.print(&\n&);
System.out.println(&----------------- matrix -----------------&);
// 设置[i][i]位置处的元素值为0,0表示图中的定点i未被访问,1表示图中的定点i已被访问
private void resetVisited() {
for (int i = 0; i & this. i++) {
this.matirx[i][i] = 0;
// 初始化图数据
// 0---1---2---3---4---5---6---7---8---
// A---B---C---D---E---F---G---H---I---
private void initGrf() {
// A-B, A-D, A-E
this.matirx[0][1] = 1;
this.matirx[1][0] = 1;
this.matirx[0][3] = 1;
this.matirx[3][0] = 1;
this.matirx[0][4] = 1;
this.matirx[4][0] = 1;
this.matirx[1][2] = 1;
this.matirx[2][1] = 1;
this.matirx[2][5] = 1;
this.matirx[5][2] = 1;
// D-E, D-G
this.matirx[3][4] = 1;
this.matirx[4][3] = 1;
this.matirx[3][6] = 1;
this.matirx[6][3] = 1;
// E-F, E-H
this.matirx[4][5] = 1;
this.matirx[5][4] = 1;
this.matirx[4][7] = 1;
this.matirx[7][4] = 1;
// F-H, F-I
this.matirx[5][7] = 1;
this.matirx[7][5] = 1;
this.matirx[5][8] = 1;
this.matirx[8][5] = 1;
this.matirx[6][7] = 1;
this.matirx[7][6] = 1;
this.matirx[7][8] = 1;
this.matirx[8][7] = 1;
// 初始化图数据
// 0---1---2---3---4---5---6---7---8---
// A---B---C---D---E---F---G---H---I---
private void initGrf2() {
// A-B, A-D, A-E
this.matirx[0][1] = 1;
this.matirx[1][0] = 1;
this.matirx[0][3] = 1;
this.matirx[3][0] = 1;
this.matirx[0][4] = 1;
this.matirx[4][0] = 1;
this.matirx[1][2] = 1;
this.matirx[2][1] = 1;
this.matirx[2][5] = 1;
this.matirx[5][2] = 1;
this.matirx[3][4] = 1;
this.matirx[4][3] = 1;
// E-F, E-H
this.matirx[4][5] = 1;
this.matirx[5][4] = 1;
this.matirx[4][7] = 1;
this.matirx[7][4] = 1;
// F-H, F-I
this.matirx[5][7] = 1;
this.matirx[7][5] = 1;
this.matirx[5][8] = 1;
this.matirx[8][5] = 1;
this.matirx[6][7] = 1;
this.matirx[7][6] = 1;
this.matirx[7][8] = 1;
this.matirx[8][7] = 1;
// 初始化图数据
// 0---1---2---3---4---5---6---7---8---
// A---B---C---D---E---F---G---H---I---
private void initGrf3() {
// A-D, A-E
this.matirx[0][3] = 1;
this.matirx[3][0] = 1;
this.matirx[0][4] = 1;
this.matirx[4][0] = 1;
this.matirx[1][2] = 1;
this.matirx[2][1] = 1;
this.matirx[2][5] = 1;
this.matirx[5][2] = 1;
// E-H, E-I
this.matirx[4][7] = 1;
this.matirx[7][4] = 1;
this.matirx[4][8] = 1;
this.matirx[8][4] = 1;
this.matirx[5][8] = 1;
this.matirx[8][5] = 1;
this.matirx[6][7] = 1;
this.matirx[7][6] = 1;
public static void main(String[] args) {
String[] nodes = new String[] { &A&, &B&, &C&, &D&, &E&, &F&, &G&, &H&, &I& };
GrfAllEdge grf = new GrfAllEdge(9, nodes);
grf.initGrf();
grf.printMatrix();
System.out.print(&\n------ 寻找起点到终点的所有路径开始 ------&);
grf.resetVisited();
int origin = 0;
int goal = 8;
Stack&Integer& stack = new Stack&Integer&();
stack.push(origin);
grf.dfsStack(-1, goal, stack);
System.out.print(&\n------ 寻找起点到终点的所有路径结束 ------&);
第一个无向图的结果如下,输出环路和正确路径:
------ 寻找起点到终点的所有路径开始 ------
有环:A,B,C,F,E,A,
有环:A,B,C,F,E,D,A,
有环:A,B,C,F,E,D,G,H,E,
有环:A,B,C,F,E,D,G,H,F,
路径:A,B,C,F,E,D,G,H,I,
有环:A,B,C,F,E,H,F,
有环:A,B,C,F,E,H,G,D,A,
有环:A,B,C,F,E,H,G,D,E,
路径:A,B,C,F,E,H,I,
有环:A,B,C,F,H,E,A,
有环:A,B,C,F,H,E,D,A,
有环:A,B,C,F,H,E,D,G,H,
有环:A,B,C,F,H,E,F,
有环:A,B,C,F,H,G,D,A,
有环:A,B,C,F,H,G,D,E,A,
有环:A,B,C,F,H,G,D,E,F,
有环:A,B,C,F,H,G,D,E,H,
路径:A,B,C,F,H,I,
路径:A,B,C,F,I,
有环:A,D,E,A,
有环:A,D,E,F,C,B,A,
有环:A,D,E,F,H,E,
有环:A,D,E,F,H,G,D,
路径:A,D,E,F,H,I,
路径:A,D,E,F,I,
有环:A,D,E,H,F,C,B,A,
有环:A,D,E,H,F,E,
路径:A,D,E,H,F,I,
有环:A,D,E,H,G,D,
路径:A,D,E,H,I,
有环:A,D,G,H,E,A,
有环:A,D,G,H,E,D,
有环:A,D,G,H,E,F,C,B,A,
有环:A,D,G,H,E,F,H,
路径:A,D,G,H,E,F,I,
有环:A,D,G,H,F,C,B,A,
有环:A,D,G,H,F,E,A,
有环:A,D,G,H,F,E,D,
有环:A,D,G,H,F,E,H,
路径:A,D,G,H,F,I,
路径:A,D,G,H,I,
有环:A,E,D,A,
有环:A,E,D,G,H,E,
有环:A,E,D,G,H,F,C,B,A,
有环:A,E,D,G,H,F,E,
路径:A,E,D,G,H,F,I,
路径:A,E,D,G,H,I,
有环:A,E,F,C,B,A,
有环:A,E,F,H,E,
有环:A,E,F,H,G,D,A,
有环:A,E,F,H,G,D,E,
路径:A,E,F,H,I,
路径:A,E,F,I,
有环:A,E,H,F,C,B,A,
有环:A,E,H,F,E,
路径:A,E,H,F,I,
有环:A,E,H,G,D,A,
有环:A,E,H,G,D,E,
路径:A,E,H,I,
------ 寻找起点到终点的所有路径结束 ------
原创博文,转载请注明出处。
本文已收录于以下专栏:
相关文章推荐
参考 http://topic.csdn.net/u//4d5adf2a-6d13-400d-840b-6bf6ab8373da.html,对代码进行了部分修改,并编写了测试用例...
1. 深度优先遍历(Depth-First Traversal)2.1 图的深度优先遍历的递归定义  假设给定图G的初态是所有顶点均未曾访问过。在G中任选一顶点v为初始出发点(源点),则深度优先遍历可...
1、深度优先遍历
1.1 深度优先遍历的定义
深度优先搜索(Depth_First Search)遍历类似于树的先根遍历,是树的先根遍历的推广。
假设给定图G,图中所有顶点未曾被...
利用前面建立的结构,在这里利用这写顶点结构,边的建立结构,边数,顶点数, 即种类,和用于存储顶点的一个vector容器,
我采取的方法类似于,深度优先搜索:
1)首先建立了一个vector...
最近遇到一个绘图的需求,是对地图的二次开发,在上面绘制覆盖物,所以这里涉及了对有向无环图的遍历问题。
如下图是一个有向无环图:
正常的深度优先遍历算法得到的结果会是:A、B、C、E、G、J、K、D...
基于连通图,邻接矩阵实现的图,非递归实现。
算法思想:
设置两个标志位,①该顶点是否入栈,②与该顶点相邻的顶点是否已经访问。
A 将始点标志位①置1,将其入栈
B 查看栈顶节点V在图中,有没有...
【1】什么是最小生成树?
对于连通的带权图(连通网)G,其生成树也是带权的。
生成树T各边的权值总和称为该树的权。
权最小的生成树称为G的最小生成树(Minimum SpannirngTree)...
给出一个图G和其中任意一个顶点V0,从V0出发系统地访问G中所有的顶点,每个顶点访问一次。
访问一个顶点V,然后访问该顶点邻接到的未被访问过的顶点V’,再从V’出发递归地...
Copyright (c) 2013,
华为2014上机考试样题 高级题 地铁换乘 最短路径
http://blog.csdn.net/sduweichao/article/details/
Copyright (c) 2013, binzhouweichao@16...
他的最新文章
讲师:钟钦成
讲师:宋宝华
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)6被浏览4747分享邀请回答11 条评论分享收藏感谢收起1添加评论分享收藏感谢收起查看更多回答热点关注:
按条件找图:
表示支持按颜色查看
(带渐变的表示金属漆)
(带渐变的表示真皮,带圆点的表示打孔座椅)
长安CX70在售/未售(2658张)
外观(888张)
内饰(1009张)
空间(370张)
其他(252张)
组图(共4组139张)
本站图片仅供参考,购车请以实物为准}

我要回帖

更多关于 八张图片拼成的组图 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信