演算法入門 廣度優先搜尋

2021-09-02 14:57:49 字數 1193 閱讀 1244

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 若佇列狀態是目標狀態,則搜尋成功,演算法執行中止。如該狀...