zoukankan      html  css  js  c++  java
  • 8、广度优先搜索

    一、择路问题

          假设你要从A城市前往B城市,途中可以选择几条路径,该怎样选择才能做到最快到达B城(假设从一个城市到临近城市用时相同)。如图:

    二、图模型

          无论数组还是链表,储存的数据都是相互独立、互不相干的。但像上面所提出的择路问题一样,城市与城市之间是有连接的。像解决这种数据与数据相关联的问题时,我们所用到的模型叫图模型。

          图模型我们用散列表来实现。

    三、广度优先搜索

          类似于数组的二分查找,图模型也有自己的数据查找算法,就是广度优先搜索。

          广度优先搜索解决两类问题:①图模型中,两节点之间有无路径;②两节点之间的最短路径。

    四、芒果经销商问题

          问题:如果你有一个芒果农场,你要寻找芒果经销商卖出你的芒果,请问你应该怎样在你朋友圈中查找?

          解决思路:建立一个名单,把你的朋友全部写进去。逐一排查每一个朋友,如果他不是芒果经销商,则把他的朋友加入到排查名单上......

          这就是广度优先搜索,先从源节点查询它的邻节点,然后从各邻节点查询它们的邻节点,直到找到目标位置。

    五、队列

          上面提到一个名单,能让我们从名单前面取出元素,然后从名单后面追加元素。这就是一个队列,队列是一种先进先出的数据结构。它就像我们平时的排队队伍一样,先进入队伍的人先走出队伍得到服务。

    六、查找经销商的算法实现。

    1、步骤:

    (1)建立图模型;

    (2)创建队列,把源节点的邻节点加入到队列;

    (3)创建已检查名单;

    (4)循环检查过程。

    2、代码示例:

     

  • 相关阅读:
    Codevs 2296 仪仗队 2008年省队选拔赛山东
    Codevs 1535 封锁阳光大学
    Codevs 1069 关押罪犯 2010年NOIP全国联赛提高组
    Codevs 1218 疫情控制 2012年NOIP全国联赛提高组
    Codevs 1684 垃圾陷阱
    洛谷 P1108 低价购买
    Vijos P1325桐桐的糖果计划
    Codevs 3289 花匠 2013年NOIP全国联赛提高组
    Codevs 2611 观光旅游(floyed最小环)
    C语言基础之彩色版C语言(内含linux)
  • 原文地址:https://www.cnblogs.com/lqxing1994/p/9254603.html
Copyright © 2011-2022 走看看