<dl id="obfdf"></dl>

<progress id="obfdf"><tr id="obfdf"></tr></progress>

      <em id="obfdf"><ol id="obfdf"><mark id="obfdf"></mark></ol></em>

      <progress id="obfdf"><tr id="obfdf"><object id="obfdf"></object></tr></progress>
      <dl id="obfdf"><ins id="obfdf"></ins></dl>
      <em id="obfdf"><ol id="obfdf"><thead id="obfdf"></thead></ol></em>

      张金磊的个人网站

      当前位置:首页 > 网站优化
      服务热线
      18695836489
      联系邮箱
      [email protected]

      SEO技术关于广度优先搜索和深度优先搜索

      时间:2016-03-05 00:00:00 浏览:

       广度优先搜索(BFS),可以被形象的描述为“浅尝辄止”,具体一点就是每个顶点只访问它的邻接节点(如果它的邻接节点没有被访问)并且记录这个邻接节点,当访问完它的邻接节点之后就结束这个顶点的访问。周口网站建设

      广度优先用到了“先进先出”队列,通过这个队列来存储第一次发现的节点,以便下一次的处理;而对于再次发现的节点,我们不予理会——不放入队列,因为再次发现的节点:周口网站建设

      无非是已经处理完的了;周口网站建设

      或者是存储在队列中?#24418;?#22788;理的。周口网站建设

      周口网站建设

      《算法导轮》对两种搜索都采用了很聪明的做法,用白色WHITE来标志未发现的节点,?#27809;?#33394;GRAY来标志第一次被发现的节点,用黑色BLACK来标志第二次被发现的节点。周口网站建设

      于是有了:周口网站建设

      1. BFS(G,s)
      2.     for each vertex v in V[G]
      3.         status[v] = WHITE
      4.         /******其他初始化******/
      5.     status[s] = GRAY    //s是原点
      6.     queue q
      7.     入队(q,s);
      8.     while q非空
      9.         t = 出队(q);
      10.         for each vertex v in Adj[t] //与t邻接的点
      11.             if status[v] = WHITE    //只对未访问的操作
      12.                 status[v] = GRAY    //标记为第一次访问
      13.                 /******其他操作******/
      14.                 入队(q,v)
      15.         status[t] = BLACK   //此点已经处理完了
      复制代码

      周口网站建设

      导论还在上面伪代码的“其他”中加入了访问长度和父节点的操作。此举可以算出,从源点到其他顶点路径的最少步数和它的具体路径。周口网站建设

      关于广度优先搜索的一个简单应用:周口网站建设

      假如?#24418;?#39064;,每个村庄之间都通过桥来联通,先给出村庄的图,问村庄A到村庄B最少要通过多少座桥?这个问题可以很容易的转化为上面的BFS问题。周口网站建设

      深度优先搜索深度优先搜索(DFS),可以被形象的描述为“打破沙锅问到底”,具体一点就是访?#23460;?#20010;顶点之后,我继而访问它的下一个邻接的顶点,如此往复,直到当前顶点一被访问或者它不存在邻接的顶点。周口网站建设

      同样,算法导论采用了“聪明的做法”,用三种颜色来标记三种状态。但这三种状态不同于广度优先搜索:周口网站建设

      WHITE 未访?#35782;?#28857;周口网站建设

      GRAY 一条深度搜索路径上的顶点,即被发现时周口网站建设

      BLACK 此顶点的邻接顶点被全部访问完之后——结束访问次顶点周口网站建设

      1. DFS(G,s)
      2.     for each vertex v in V(G)
      3.         status[v] = WHITE
      4.         /******其他初始化******/
      5.     for each vertex v in V(G)
      6.         if(status[v]==WHITE)
      7.             DFS-VISIT(v)
      8.  
      9. DFS-VISIT(v)
      10.     status[v] = GRAY
      11.     for each vertex t in Adj(v)
      12.         if status[t] = WHITE
      13.             DFS-VISIT(t)
      14.             /******其他操作******/
      15.     status[v] = BLACK
      复制代码

      通过给DFS搜索过程中给每一个顶点?#37038;?#38388;戳,就可以实现拓扑排序了。实现拓扑排序需要:周口网站建设

      对于每一个顶点,都有两个时间戳,?#30452;?#36825;样来定义:周口网站建设

      在一顶点刚被发现的时候,标记此顶点的第一个时间戳;周口网站建设

      在结束此顶点的访问的时候,标记此顶点的第二个时间戳。时间戳可以用简单的123456来标记,只要能区分大小就?#23567;?span style="display:none">周口网站建设

      因此,你会发现,越早发现的点,他的第一个时间戳会越小,但是他的第二个时间戳会越大。周口网站建设

      总结两个算法都是O(V+E),在用到的时候适当选取。在使用白灰黑标志的时候,突然明白了如何用深度优先搜索来判断有向图中是否存在环。周口网站建设

      深度优先和广度优先各有各的优缺点:周口网站建设

      广优的话,占内存多,能找到最优解,必须遍历所有?#31181;? 广优的一个应用就是迪?#25169;?#24443;单元最短路径算法。周口网站建设

      深优的话,占内存少,能找到最优解(一定条件下),但能很快找到接近解(优点),可能不必遍历所有?#31181;Γ?#20063;就是速度快), 深优的一个应用就是连连?#20174;?#25103;。周口网站建设

      在更多的情况下,深优是比较好的方案。周口网站建设

      上一篇:SEO技术避免网站流量大损失的seo策略
      下一篇:seo技术关于鼠标键盘模拟与数据提交
      分享到:

      联系我们

      三石网站,设计开发安全无漏洞网站。

      办公邮箱:[email protected]公司地址:河南省周口市太?#36842;?/span>

      选择三石,选择快捷!三石网络,让您不同!
      广东十一选五杀号公式
      <dl id="obfdf"></dl>

      <progress id="obfdf"><tr id="obfdf"></tr></progress>

          <em id="obfdf"><ol id="obfdf"><mark id="obfdf"></mark></ol></em>

          <progress id="obfdf"><tr id="obfdf"><object id="obfdf"></object></tr></progress>
          <dl id="obfdf"><ins id="obfdf"></ins></dl>
          <em id="obfdf"><ol id="obfdf"><thead id="obfdf"></thead></ol></em>
          <dl id="obfdf"></dl>

          <progress id="obfdf"><tr id="obfdf"></tr></progress>

              <em id="obfdf"><ol id="obfdf"><mark id="obfdf"></mark></ol></em>

              <progress id="obfdf"><tr id="obfdf"><object id="obfdf"></object></tr></progress>
              <dl id="obfdf"><ins id="obfdf"></ins></dl>
              <em id="obfdf"><ol id="obfdf"><thead id="obfdf"></thead></ol></em>