`
deepfuture
  • 浏览: 4341048 次
  • 性别: Icon_minigender_1
  • 来自: 湛江
博客专栏
073ec2a9-85b7-3ebf-a3bb-c6361e6c6f64
SQLite源码剖析
浏览量:79516
1591c4b8-62f1-3d3e-9551-25c77465da96
WIN32汇编语言学习应用...
浏览量:68575
F5390db6-59dd-338f-ba18-4e93943ff06a
神奇的perl
浏览量:101715
Dac44363-8a80-3836-99aa-f7b7780fa6e2
lucene等搜索引擎解析...
浏览量:281660
Ec49a563-4109-3c69-9c83-8f6d068ba113
深入lucene3.5源码...
浏览量:14651
9b99bfc2-19c2-3346-9100-7f8879c731ce
VB.NET并行与分布式编...
浏览量:65835
B1db2af3-06b3-35bb-ac08-59ff2d1324b4
silverlight 5...
浏览量:31404
4a56b548-ab3d-35af-a984-e0781d142c23
算法下午茶系列
浏览量:45311
社区版块
存档分类
最新评论

用栈和递归求解两顶点的所有简单路径

阅读更多

用栈和递归求解两顶点的所有简单路径

栈和递归在程序设计中的应用是非常广的,比如对于迷宫的求解、表达式的求解,等都可以用栈来解决,典型的hanoi塔问题,树和图的遍历等都可以用递归来解决,在数据结构等很多书中都有介绍,如果对此不了解,可去参考。递归算法的设计实际上就是对问题的抽象的过程,如果抽象到每个小问题都有相同特征时,那就形成了递归,递归算法简明易懂,下面我就介绍一种利用到栈与递归求解两顶点所有简单路径的问题。

  先说明一下什么叫“两顶点的所有简单路径”的概念,“两顶点的所有简单路径”的意思通熟的讲就是在图中有若干点,点与点之间可有边相连(在数据结构中叫“图”),任意设个起点和终点,现在要求的是从起点到终点所有可能通过的边序列的集合。(注:是简单有序边,也就是说简单路径,所谓简单路径就是序列中顶点不重复出现的路径。)举个例子:从上海到北京,我可以直接到达,也可以先到四川,再到北京,或者先到广东,再到北京,等等。如:上海->四川->上海->北京,这就不是简单路径了,显然,不是简单的路径有无数条。

为了描述方便,我用了简单的二维数组来做存储结构。(当然,完全可以用邻接矩阵、邻接表、十字链表、邻接多重表等来表示)* * *

* * *

* * *

如上图左上角的坐标为(1,1),右上角的坐标为(3,1),左下角的坐标为(1,3),右下角的坐标为(3,3),点与点之间都可相通,假设从点(1,1)要到(3,3),有多少种走法?

对这个问题的求解先要认识到它的本质,其本质是一个点有四个方向(各边特殊处理),依次探索四个方向上的点,判断是不是最后的目的地,如果是,则进栈并返回,如果不是则进栈,将此点同样上述处理。显然这个过程是一个递归的过程,直到是最后的目的地,才层层返回。

当然,解决此问题不是只有栈与递归才能解决,经我自己摸索,用生成树的方法访问其双亲结点,也可解决,如果有更好的方法,请多多指教。

分享到:
评论

相关推荐

    用栈和递归求解两顶点的所有简单路径.rar_所有路径

    用栈和递归求解两顶点的所有简单路径

    算法导论(part1)

    ·有关递归求解的那一章中,不再包含迭代方法了。在第4.2节中,我们将递归树“提升”为一种方法。我们发现,与对递归式进行迭代相比,画出递归树后出错的可能性小了。但是,我们也指出了递归树的最佳用途,即利用它...

    严蔚敏:数据结构题集(C语言版)

    7.6.2 每一对顶点之间的最短路径 第8章 动态存储管理 8.1 概述 8.2 可利用空间表及分配方法 8.3 边界标识法 8.3.1 可利用空间表的结构 8.3.2 分配算法 8.3.3 回收算法 8.4 伙伴系统 8.4.1 可利用空间表的结构 ...

    算法导论中文版

     4.4 用递归树方法求解递归式  4.5 用主方法求解递归式  4.6 证明主定理  4.6.1 对b的幂证明主定理  4.6.2 向下取整和向上取整  思考题  本章注记 第5章 概率分析和随机算法  5.1 雇用问题  5.2 ...

    数据结构与算法

    所有顶点对之间的最短 路径 ……………………………… 最小支撑树 ………………………… 最小支撑树性质 ………………… 算法 ………………………… 算法……………………… 图匹配 ……………………………… 本章小...

    数据结构的电子书(chm版)

    3、1、2 栈的表示和实现 3、2、0 栈的应用举例 3、2、1 数制转换 3、2、2 括号匹配的检验 3、2、3 行编辑程序 实验三 3、2、4 迷宫求解 3、2、5 表达式求值 3、3、0 栈与递归的实现 3、4、0 队列 3、4、1 抽象数据...

    c语言数据结构

    3、1、2 栈的表示和实现 3、2、0 栈的应用举例 3、2、1 数制转换 3、2、2 括号匹配的检验 3、2、3 行编辑程序 实验三 3、2、4 迷宫求解 3、2、5 表达式求值 3、3、0 栈与递归的实现 3、4、0 队列 3、4、1 抽象数据...

    算法导论(part2)

    ·有关递归求解的那一章中,不再包含迭代方法了。在第4.2节中,我们将递归树“提升”为一种方法。我们发现,与对递归式进行迭代相比,画出递归树后出错的可能性小了。但是,我们也指出了递归树的最佳用途,即利用它...

    数据结构、算法与应用:C++语言描述(原书第2版)第二部分

    19.2.3 所有顶点对之间的最短路径 19.2.4 带有负值的单源最短路径 19.2.5 网组的无交叉子集 19.3 参考及推荐读物 第20章 回溯法 20.1 算法思想 20.2 应用 20.2.1 货箱装载 20.2.2 0/1背包问题 20.2.3 最大完备子图 ...

    算法分析与设计习题集答案

    21、 对于下图给出的有向网,写出用Dijkstra方法求从顶点A到图中其它顶点的最短路径的算法,并写出执行算法过程中顶点的求解次序及从顶点A到各顶点路径的长度。 22、 对于上图给出的有向图,写出最小成本生成树,...

    数据结构课设

    任务 :用无向网表示你所在学校的主要建筑平面图,图中顶点表示主要建筑,图中的边表示建筑之间的道路,存放路径长度信息。要求能够建立校园局域网,所花的代价最小;给出任意建筑之间游历的最短路径。 基本要求: ...

    2025NOIP普及组.rar

    容易知如果数字i能变成数字j,那么i到j必须存在路径,否则i是不可能变成j的,这样一来,Fi的求解就显得非常简单了,求一个顶点v包括本身能到达的顶点数的方法相当多,可以用BFS,DFS,Dijkstra,Floyd,这里介绍一种...

    并行计算导论(原书第2版).[美]Ananth Grama(带详细书签).pdf

    10.4 全部顶点对间的最短路径 10.4.1 Dijkstra算法 10.4.2 Floyd算法 10.4.3 性能比较 10.5 传递闭包 10.6 连通分量 10.7 稀疏图算法 10.7.1 查找最大独立集 10.7.2 单源最短路径 10.8 书目评注 习题 第...

    动态规划 ppt演示

    又由于对所有顶点i,w[i,i]=0,因此有s[k-1,i,k]= s[k,i,k]且s[k-1,k,j]= s[k,k,j],于是我们又可以将两个阶段的存储空间需求降低为一个阶段的存储空间需求,得到求任意图上每对顶点间的最短路经问题的floyd算法: ...

    Mathematics for Computer Science 2017.7z

    16.4 求解线性递归(Solving Linear Recurrences) 16.5 形式幂级数(Formal Power Series) 16.6 References IV 概率论(Probability) Introduction 17 事件和概率空间(Events and Probability Spaces) 17.1 Let...

    C语言通用范例开发金典.part2.rar

    范例1-111 每一对顶点之间的最短路径 387 ∷相关函数:ShortestPath_FLOYD函数 1.8 本章小结 395 第2章 数值计算 397 2.1 常见的数学函数 398 2.1.1 求整数的绝对值 398 范例2-1 求整数的绝对值 398 ∷相关...

    C 开发金典

    范例1-111 每一对顶点之间的最短路径 387 ∷相关函数:ShortestPath_FLOYD函数 1.8 本章小结 395 第2章 数值计算 397 2.1 常见的数学函数 398 2.1.1 求整数的绝对值 398 范例2-1 求整数的绝对值 398 ∷相关...

    C语言通用范例开发金典.part1.rar

    范例1-111 每一对顶点之间的最短路径 387 ∷相关函数:ShortestPath_FLOYD函数 1.8 本章小结 395 第2章 数值计算 397 2.1 常见的数学函数 398 2.1.1 求整数的绝对值 398 范例2-1 求整数的绝对值 398 ∷相关...

Global site tag (gtag.js) - Google Analytics