1.深度优先搜索算法

深度优先搜索是一种在开发爬虫早期使用较多的方法。它的目的是要达到被搜索结构的叶结点(即那些不包含任何超链的HTML文件) 。在一个HTML文件中,当一个超链被选择后,被链接的HTML文件将执行深度优先搜索,即在搜索其余的超链结果之前必须先完整地搜索单独的一条链。深度优先搜索沿着HTML文件上的超链走到不能再深入为止,然后返回到某一个HTML文件,再继续选择该HTML文件中的其他超链。当不再有其他超链可选择时,说明搜索已经结束。

2.实现原理

深度优先搜索属于图算法的一种,英文缩写为DFS即Depth First Search.其过程简要来说是对每一个可能的分支路径深入到不能再深入为止,而且每个节点只能访问一次.

举例说明之:下图是一个无向图,如果我们从A点发起深度优先搜索(以下的访问次序并不是唯一的,第二个点既可以是B也可以是C,D),则我们可能得到如下的一个访问过程:A->B->E(没有路了!回溯到A)->C->F->H->G->D(没有路,最终回溯到A,A也没有未访问的相邻节点,本次搜索结束).简要说明深度优先搜索的特点:每次深度优先搜索的结果必然是图的一个连通分量.深度优先搜索可以从多点发起.如果将每个节点在深度优先搜索过程中的"结束时间"排序(具体做法是创建一个list,然后在每个节点的相邻节点都已被访问的情况下,将该节点加入list结尾,然后逆转整个链表),则我们可以得到所谓的"拓扑排序",即topological sort.

C++算法之深度优先搜索算法详解相关推荐

  1. (DFS)深度优先搜索算法详解

    背景 DFS 英文全称为(Depth First Search),中文简称深度优先搜索算法,其过程为沿着每一个可能的路径向下进行搜索,直到不能再深入为止,并且每一个节点只能访问一次. 算法的搜索遍历图 ...

  2. C语言 DFS(深度优先搜索算法) 详解

    基本概念 深度优先搜索算法(Depth First Search,简称DFS):一种用于遍历或搜索树或图的算法. 沿着树的深度遍历树的节点,尽可能深的搜索树的分支.当节点v的所在边都己被探寻过或者在搜 ...

  3. A*启发式搜索算法详解 人工智能

    A*启发式搜索算法详解 人工智能 我们尝试解决的问题是把一个游戏对象(game object)从出发点移动到目的地.路径搜索(Pathfinding)的目标是找到一条好的路径--避免障碍物.敌人,并把 ...

  4. 1-Wire搜索算法详解(1)

    最近一直在proteus上仿真单总线搜索算法,虽然参考了美信公司的应用笔记以及其他的一些资源,仍然没有成功,估计应该是protues问题.这里先转载一篇不错的博文,以供参考. 原文连接 http:// ...

  5. 1-Wire搜索算法详解(2)

    原文连接:http://blog.sina.com.cn/s/blog_57ad1bd20102uxxv.html 1-Wire搜索算法详解(2) 4 实例及算法分析 要理解算法,或制定算法,我们需要 ...

  6. DS18B20 1-WIRE ROM搜索算法详解

    转自:http://blog.sina.com.cn/s/blog_57ad1bd20102uxxw.html 1-WIRE搜索算法详解(1) 0前言 美信公司(http://www.maximint ...

  7. 操作系统:基于页面置换算法的缓存原理详解(下)

    概述: 在上一篇<操作系统:基于页面置换算法的缓存原理详解(上)>中,我们主要阐述了FIFO.LRU和Clock页面置换算法.接着上一篇说到的,本文也有三个核心算法要讲解.分别是LFU(L ...

  8. 希尔排序基础java代码_java 算法之希尔排序详解及实现代码

    摘要:这篇Java开发技术栏目下的"java 算法之希尔排序详解及实现代码",介绍的技术点是"希尔排序详解.实现代码.希尔排序.Java.实现.代码",希望对大 ...

  9. kmeans python interation flag_机器学习经典算法-logistic回归代码详解

    一.算法简要 我们希望有这么一种函数:接受输入然后预测出类别,这样用于分类.这里,用到了数学中的sigmoid函数,sigmoid函数的具体表达式和函数图象如下: 可以较为清楚的看到,当输入的x小于0 ...

最新文章

  1. 论新时代软件测试人员的工作之道(二)之让评审更有意义
  2. 剑指offer第二版答案详细版(带详细解题思路)
  3. 使用conda安装pydot及其遇到的问题解决方案
  4. Spring 基于构造函数的依赖注入
  5. 数据结构开发(7):典型问题分析(Bugfix)
  6. docker 报错 Container is not running
  7. 顶级程序员的心得 - Coders at Work
  8. 将地址强制转换为指针
  9. linux apache访问日志,linux分析apache日志获取最多访问的前10个IP
  10. 上市也没打算盈利?Hadoop之父企业Cloudera好任性
  11. 90后渐成互联网基金销售平台的购买主力
  12. PADS2007破解方法之图文并茂版----本人亲自实践
  13. 如何用PADS打开AD的PCB文件?
  14. 机房运维服务器,机房服务器维护指导
  15. 为什么blender安装后无法打开_CAD教程:CAD软件打开图纸后钢筋符号无法读取的解决办法...
  16. 2011年恒生电子校园招聘笔试题目
  17. 用Python爬取需要登录的网站
  18. 云计算的云指的是什么?通俗解释云计算能做什么
  19. 设置echarts雷达图label标签出现的位置聚拢或发散
  20. python django 商品进销存管理系统

热门文章

  1. golang设计模式
  2. 黑鲨4Pro和黑鲨3Pro的区别 哪个更值得入手
  3. 为什么你不能静下心来
  4. 重庆自考本科一般多久能拿证?
  5. Scrap入门-爬取特定网页图片
  6. hdu 4081 Qin Shi Huang's National Road System (次小生成树的变形)
  7. Totoro中文分词第二版上线啦
  8. canvas之自定义头像功能实现
  9. java/android 设计模式学习笔记(8)---桥接模式
  10. C#OWC11.DLL失敗: 80040154