from collections import deque
graph =
#建立乙個字典,儲存人際關係圖
graph[
"you"]=
["alice"
,"bob"
,'claire'
]graph[
'bob']=
['anuj'
,'peggy'
]graph[
'alice']=
['peggy'
]graph[
'claire']=
['thom'
,'jonny'
]graph[
'anuj']=
graph[
'peggy']=
graph[
'jonny']=
graph[
'thom']=
defsearch
(name)
: search_quene = deque(
)#建立乙個佇列,用於儲存要檢查的人
search_quene += graph[name]
#將name的鄰居加入到這個佇列
searched =
#用來儲存已經檢查過的人
while search_quene:
#如果佇列不為空
person = search_quene.popleft(
)#從佇列中彈出乙個人
if person not
in searched:
#如果這個人沒有被檢查過
if person_is_seller(person)
:#如果這個人是經銷商
print
(person +
" is a mango seller!"
)#大功告成並退出
return
true
else
:#否則
search_quene += graph[person]
#把這個人的鄰居加入到佇列
#把這個人加入到已查詢列表
return
false
#沒有找到任何經銷商
defperson_is_seller
(name)
:return name[-1
]=='m'
search(
"you"
)
廣度優先搜尋(BFS) Python實現
演算法的工作原理 建立乙個佇列,用於儲存要檢查的人 從佇列中彈出乙個人 檢查這個人是否被檢查過 檢查這個人是否為芒果經銷商 是 大功告成 否 將這個人的所有鄰居都加入到佇列中 回到第二步 如果隊列為空,就說明沒有找到芒果經銷商 encoding utf 8 from collections impo...
python深度優先搜尋和廣度優先搜尋
圖的深度優先搜尋 depth first search 和樹的先序遍歷比較類似。它的思想 假設初始狀態是圖中所有頂點均未被訪問,則從某個頂點v出發,首先訪問該頂點,然後依次從它的各個未被訪問的鄰接點出發深度優先搜尋遍歷圖,直至圖中所有和v有路徑相通的頂點都被訪問到。若此時尚有其他頂點未被訪問到,則另...
搜尋 廣度優先搜尋
廣度優先搜尋一層一層地進行遍歷,每層遍歷都是以上一層遍歷的結果作為起點,遍歷乙個距離能訪問到的所有節點。需要注意的是,遍歷過的節點不能再次被遍歷。class solution,int shortestpathbinarymatrix vectorint grid length return 1 cl...