廣度優先搜尋(BFS) Python實現

2021-09-02 23:13:03 字數 1160 閱讀 8173

演算法的工作原理:

建立乙個佇列,用於儲存要檢查的人

從佇列中彈出乙個人

檢查這個人是否被檢查過

檢查這個人是否為芒果經銷商

是:大功告成

否:將這個人的所有鄰居都加入到佇列中

回到第二步

如果隊列為空,就說明沒有找到芒果經銷商

# -*- encoding: utf-8 -*-

from collections import deque

def search(name):

search_queue = deque() # 建立乙個佇列

search_queue += graph[name] # 將起始節點的鄰居都加入到這個搜尋佇列中

searched = # 用於記錄檢查過的人,避免重複檢查

while search_queue: # 只要佇列不為空

person = search_queue.popleft() # 就取出其中的第乙個人

if person not in searched: # 僅當這個人沒有檢查過時

if person_is_seller(person):

print("%s is a mango seller!" % person)

return true

else:

search_queue += graph[person]

return false

def person_is_seller(man): # 判斷是否為芒果經銷商

return man[-1] == "m"

if __name__ == "__main__":

graph = {}

graph ["you"] = ["alice", "bob", "claire"]

graph ["bob"] = ["anuj", "peggy"]

graph ["alice"] = ["peggy"]

graph ["claire"] = ["thom", "jonny"]

graph ["anuj"] =

graph ["peggy"] =

graph ["thon"] =

graph ["jonny"] =

search("you")

搜尋 廣度優先搜尋

廣度優先搜尋一層一層地進行遍歷,每層遍歷都是以上一層遍歷的結果作為起點,遍歷乙個距離能訪問到的所有節點。需要注意的是,遍歷過的節點不能再次被遍歷。class solution,int shortestpathbinarymatrix vectorint grid length return 1 cl...

廣度優先搜尋

include include include include using namespace std struct node 圖頂點結構定義 typedef struct node graph 圖形的結構新型態 struct node head 9 圖形頂點陣列 int visited 9 遍歷標...

廣度優先搜尋

廣度優先搜尋詳解 1.也稱寬度優先搜尋,顧名思義,就是將一棵樹一層一層往下搜。演算法首先搜尋和s距離為k的所有頂點,然後再去搜尋和s距離為k l的其他頂點。bfs是一種完備策略,即只要問題有解,它就一定可以找到解。並且,廣度優先搜尋找到的解,還一定是路徑最短的解。但是它盲目性較大,尤其是當目標節點距...