北京很大,附上地铁图,不要迷路!!!程序员
做为一个程序员,在北京,你颇有可能住在回龙观地区,常常从龙泽上地铁,而后畅游北京。算法
当有一天,你老家的朋友来北京了,但愿你可以带她去天安门玩一玩,你该怎么坐地铁呢?3d
基本要求,咱们乘坐地铁,绿色出行,但但愿换乘的最少。cdn
此时,有可能你并不懂广度优先搜索算法,但实际上你已经运用了它。blog
找出从龙泽到天安门东的最短路径问题,就叫作广度优先搜索队列
下图列除了部分能够到达的路线:it
从龙泽前往天安门东的最短路径须要三步,这种问题被称之为最短路径问题,那么解决最短路径问题的算法被称之为广度优先搜索io
是否是这种概念,很是容易理解。class
那咱们进一步对广度优先搜索进行一个说明:搜索
广度优先搜索是一种用于图的查找算法,能够解决两类问题
从节点A出发,可以到达节点B么!
从节点A出发,前往节点B的路径中,最短的是哪条路径!
举个🌰
金融场景下,借款人A到平台借款,逾期未还,假定咱们知道他的朋友中(朋友13)会帮助他还,这个例子可能不是特别的恰当,但能够帮助你们说明问题,并深刻理解广度优先搜索
广度优先搜索,不只查找从借款人A到朋友13的路径,并且找到的是最短路径,为何要找到最短路径呢,缘由是图关系中,越近找到,说明关系越紧密。
若是你懂知识图谱技术的话,那可能直接用最短路径算法,就能够直接获取到。那么不用知识图谱的图计算技术,就能够用到队列的技术来实现
那么这里须要注意一个问题,这个问题就是当执行到朋友1时,要把借款人本身给去除掉,不然就变成了死循环了
最后的总结:
广度优先搜索指出是否有从A到B的路径
广度优先搜索将会找出最短路径
能够先建立图,而后再根据图关系使用广度优先搜索算法来解决问题
你须要按照加入的顺序去检查,不然找到的不是最短路径,所以若是你用的不是知识图谱的图算法技术,那么就必须是队列
对于检查过的人,就不要再检查了,不然会形成死循环