1.圖
2.廣度優先搜尋
3.佇列
4.實現圖
#用雜湊表來表示圖,可以自己腦補下面的關係圖
graph = {}
graph["you"]=["alice","bob","claire"]
graph["bob"]=["anuj","peggy"]
graph["alice"]=["peggy"]
graph["claire"]=["thom","jonny"]
graph["anuj"]=
graph["peggy"]=
graph["thom"]=
graph["jonny"]=
from collections import deque
def person_is_seller(name): #判斷是否為銷售商
return name[-1] == 'm' #判斷條件為檢查人名是否以m結尾
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(person+" is a mango seller!") # 是的話,列印出來結果
return true
else:
search_queue += graph[person] # 不是的話,就將這個人的朋友都加入搜尋佇列
return false
if __name__ == '__main__':
search("you")
5.執行時間 BFS廣度優先搜尋 入門
廣度優先搜尋是通過對圖的完全遍歷來達到要求的點的演算法。其對圖的遍歷是如同波浪一樣,每層按照制定的方式一層一層向下搜。如 4 2 4 1 在以 為起點進行 搜尋,搜尋方式是每次只搜其上下左右的數,找其中比 最開始的 起點小的數。第一次就只會搜尋到 上 右 下 左 但是其中只有 和 滿足條件,於是會將...
廣度優先搜尋演算法
廣度優先搜尋 bfs 這個是第乙個研究的課題,廣度優先搜尋也叫寬度優先搜尋,英文為breadth first searth,開始看的時候一頭霧水,基本也能懂大致意思,但是還不是真正的理解,今天又仔細看看,大致理解上又更深了一層吧。下面來總結下,自己的一些體會,以及對它的獨到的理解。大的方面來說它是一...
廣度優先搜尋演算法
在深度優先搜尋中,深度越大的結點越先得到擴充套件。如果把它改為深度越小的結點越先得到擴充套件,就是廣度優先搜尋法。廣度優先搜尋演算法的基本思想 1 建立乙個空的狀態佇列ss 2 建立乙個空的狀態庫sb 3 把初始狀態s 0 存入佇列ss中 4 若佇列狀態是目標狀態,則搜尋成功,演算法執行中止。如該狀...