我查了下网页深度大概是这个意思,从网站的首页起,到达这个网页要经过几个网页。
不知道这个定义准不准。
我想了想仅仅通过这个定义根本就是很难判断网页的深度啊
假设网站的网页结构是我假设的这样的。(1代表首页)如果将4a 这个页面放进首页里,我们在首页就能点击进4a这张页面,那碰巧这个4a页面上有4b的链接,那么是不是4b这个页面的深度就是2了呢?                   1
                2a 2b 2c
              3a 3c 3b 3c 3d
            4a 4b 4c 4d 4f 4e 
所以这个问题让我很纠结,如果真按照这种定义那就没办法计算了,从首页进入转了100多次后得到的网页的深度难道就是100了吗?我想不会有人把网站建成这样的吧

解决方案 »

  1.   

    这需要用BFS+Hash来算,你说的方法像是DFS
      

  2.   

    从首页开始算,所有连接的深度都为1,把网址加入Hash表,这些深度为1的网页所连接到的网址,深度都为2,这里需要用Hash来判断1下,如果已经在Hash表里面了,就无需继续处理,比如某些深度为1的网页互相之间有连接,以此类推,可以求出整个网站所有页面的深度。
      

  3.   

    晕倒,我一直不知道BFS指的是什么,刚去查了下原来就是广度优先搜索的意思。
    既然你说到hash表,请问下C#里的hash表能实现队列吗
      

  4.   

    不是有现成的Queue队列么?用队列可以实现BFS广搜
      

  5.   

    您不是说要用hash表吗,我以为你是说要用hash表实现队列的功能
      

  6.   

    Hash是为了处理过的页面不要再处理一遍,否则有两个网页互相之间有连接的话,就会死循环无限执行下去
      

  7.   


    你可没有说过你不知道什么是最短的。你只是强调绕了一大圈,跑了100多个链接,又回到同一个url上的问题。
      

  8.   

    每当访问一个url的时候,判断一个中间记录集中是否已经取过这个url;如果已经取过的话就仅仅当当前的深度比以前记录的深度更短的时候你才应该用当前路径替代记录集中的深度;只有当没有取过的时候才需要继续爬url链接。
      

  9.   

    我可没说又回到同一个url上了!
    我估计 我开始立足思考的点就错了。
    你们所说的爬行深度 是根据爬行时进入队列的批次来确定的,我仔细阅读了人家开源代码也是这么算的。
    我想的是这个网站客观存在的深度(网页的路径)
    就像一个最最简单的问题 一个本来处在 很下面的网页,由于管理人员今天把它加上首页,难道他的深度就提高了吗?如果过段时间把它从首页上取消了呢?我开始想的是这个网站客观存在的路径。
    好吧 ,我的想法表达完毕,请高手们批评!
      

  10.   

    http://www.a.com
    http://www.a.com/b
    http://www.a.com/b/c
    http://www.a.com/b/c/d不知道是不是这个意思?  你们貌似是两种理解  LZ估计就是想知道具体URL有几层  而他查到的网页深度是遍历整个网站所有链接所需的最大步数。