北京很大,附上地鐵圖,不要迷路!!!程序員
做爲一個程序員,在北京,你頗有可能住在回龍觀地區,常常從龍澤上地鐵,而後暢遊北京。算法
當有一天,你老家的朋友來北京了,但願你可以帶她去天安門玩一玩,你該怎麼坐地鐵呢?3d
基本要求,咱們乘坐地鐵,綠色出行,但但願換乘的最少。cdn
此時,有可能你並不懂廣度優先搜索算法,但實際上你已經運用了它。blog
找出從龍澤到天安門東的最短路徑問題,就叫作廣度優先搜索隊列
下圖列除了部分能夠到達的路線:it
從龍澤前往天安門東的最短路徑須要三步,這種問題被稱之爲最短路徑問題,那麼解決最短路徑問題的算法被稱之爲廣度優先搜索io
是否是這種概念,很是容易理解。class
那咱們進一步對廣度優先搜索進行一個說明:搜索
廣度優先搜索是一種用於圖的查找算法,能夠解決兩類問題
從節點A出發,可以到達節點B麼!
從節點A出發,前往節點B的路徑中,最短的是哪條路徑!
舉個🌰
金融場景下,借款人A到平臺借款,逾期未還,假定咱們知道他的朋友中(朋友13)會幫助他還,這個例子可能不是特別的恰當,但能夠幫助你們說明問題,並深刻理解廣度優先搜索
廣度優先搜索,不只查找從借款人A到朋友13的路徑,並且找到的是最短路徑,爲何要找到最短路徑呢,緣由是圖關係中,越近找到,說明關係越緊密。
若是你懂知識圖譜技術的話,那可能直接用最短路徑算法,就能夠直接獲取到。那麼不用知識圖譜的圖計算技術,就能夠用到隊列的技術來實現
那麼這裏須要注意一個問題,這個問題就是當執行到朋友1時,要把借款人本身給去除掉,不然就變成了死循環了
最後的總結:
廣度優先搜索指出是否有從A到B的路徑
廣度優先搜索將會找出最短路徑
能夠先建立圖,而後再根據圖關係使用廣度優先搜索算法來解決問題
你須要按照加入的順序去檢查,不然找到的不是最短路徑,所以若是你用的不是知識圖譜的圖算法技術,那麼就必須是隊列
對於檢查過的人,就不要再檢查了,不然會形成死循環