深度优先搜索(补充教案).docVIP

  • 28
  • 0
  • 约 11页
  • 2016-09-16 发布于江苏
  • 举报
深度优先搜索(补充教案).doc

深度优先搜索(补充教案) 一、搜索过程 深度优先搜索的搜索过程类似树的先序遍历,也叫回溯法。搜索过程如下: 从源节点开始发现有一节点v,如果v还有未探测到的边,就沿此边继续探测下去,当节点v的所有边都被探测过,搜索过程将回溯到最初发现v点的源节点。这一过程一直进行到已发现从源节点可达的所有节点为止。这显然是一个递归过程。 为了在遍历过程中区分顶点是否被访问,往往可以引入一个数组,如以mark[1..n]作为标记。数组的元素取0和1,初值为0。当节点被访问时,与节点相应得数组元素为1,每次访问节点时,都得先检查它的标记值,找0值得节点访问,并深度继续。深度大的先得到扩展,具有“后产生先扩展”的特点,因此在数据结构上采用堆栈来存储(新节点入栈,节点不能扩展时,栈定出栈)。 二、搜索特点 由于深度搜索过程中有保留已扩展节点,则不致于重复构造不必要的子树系统。 深度优先搜索并不是以最快的方式搜索到解,因为若目标节点在第i层的某处,必须等到该节点左边所有子树系统搜索完毕之后,才会访问到该节点,因此,搜索效率还取决于目标节点在解答树中的位置。 由于要存储所有已被扩展节点,所以需要的内存空间往往比较大。 深度优先搜索所求得的是仅仅是目前第一条从起点至目标节点的树枝路径,而不是所有通向目标节点的树枝节点的路径中最短的路径。 适用范围:适用于求解一条从初始节点至目标节点的可能路径的试题。若要存储所有

文档评论(0)

1亿VIP精品文档

相关文档