廣度優先搜尋演算法

2021-10-06 10:49:05 字數 1286 閱讀 4323

廣度優先搜尋解決兩個問題:

第一類問題:從節點a出發,有前往節點b的路徑嗎?

第二類問題:從節點a出發,前往節點b的哪條路徑最短?

假設你經營著乙個芒果農場,需要尋找芒果銷售商,以便將芒果賣給他。在facebook,你與芒果銷售商有聯絡嗎?為此,你可在朋友中查詢。這樣一來,你不僅在朋友中查詢,還在朋友的朋友中查詢。別忘了,你的目標是在你的人際關係網中找到一位芒果銷售商。因此,如果alice不是芒果銷售商,就將其朋友也加入到名單中。

這意味著你將在她的朋友、朋友的朋友等中查詢。使用這種演算法將搜遍你的整個人際關係網,直到找到芒果銷售商。這就是廣度優先搜尋演算法。

#廣度優先搜尋

def person_seller(name):

return name[-1] =='m'

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_seller(person) :

print("找到了"+person)

return true

else :

search_queue += graph[person]//把這個人的所有朋友加進佇列

return false

print(search("you"))

廣度優先搜尋演算法

廣度優先搜尋 bfs 這個是第乙個研究的課題,廣度優先搜尋也叫寬度優先搜尋,英文為breadth first searth,開始看的時候一頭霧水,基本也能懂大致意思,但是還不是真正的理解,今天又仔細看看,大致理解上又更深了一層吧。下面來總結下,自己的一些體會,以及對它的獨到的理解。大的方面來說它是一...

廣度優先搜尋演算法

在深度優先搜尋中,深度越大的結點越先得到擴充套件。如果把它改為深度越小的結點越先得到擴充套件,就是廣度優先搜尋法。廣度優先搜尋演算法的基本思想 1 建立乙個空的狀態佇列ss 2 建立乙個空的狀態庫sb 3 把初始狀態s 0 存入佇列ss中 4 若佇列狀態是目標狀態,則搜尋成功,演算法執行中止。如該狀...

廣度優先搜尋演算法

看了下廣度優先搜尋演算法得定義為從乙個頂點開始,找到最短路勁,歸結為一種連通圖得遍歷策略 如果我們要求v0到v6的一條最短路 假設走乙個節點按一步來算 注意 此處你可以選擇不看這段文字直接看圖3 1 我們明顯看出這條路徑就是v0 v2 v6,而不是v0 v3 v5 v6。先想想你自己剛剛是怎麼找到這...