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