廣度優先搜素python例項及注釋
例子:
你是乙個種橘子的,而你要在你的朋友或朋友的朋友中找到橘子商人,從而把橘子賣出去。
概念:你和你的朋友是一度關係,也就是靠近你的第一層關係,關係較近。你的朋友的朋友是你的二度關係。
廣度優先搜尋:在本例子中就是先在一度關係中找橘子商人,找到就結束,如果一度關係沒找到就在二度關係中找。
朋友關係圖
在本示例python**中用字典表示圖中的關係,具體**及注釋如下:
#author:anthony
from collections import deque#collections 模組提供了一些有用的集合類
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']=
#print(graph)
def person_is_seller(name):#名字最後一位字母是『m』就是商人
return name[-1]=='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):#如果person是商人就列印
print(person+' is a mango seller!')
else:#如果person不是商人,就將person的朋友都加入搜尋佇列
search_queue+=graph[person]
search('you')
python深度優先搜尋和廣度優先搜尋
圖的深度優先搜尋 depth first search 和樹的先序遍歷比較類似。它的思想 假設初始狀態是圖中所有頂點均未被訪問,則從某個頂點v出發,首先訪問該頂點,然後依次從它的各個未被訪問的鄰接點出發深度優先搜尋遍歷圖,直至圖中所有和v有路徑相通的頂點都被訪問到。若此時尚有其他頂點未被訪問到,則另...
搜尋 廣度優先搜尋
廣度優先搜尋一層一層地進行遍歷,每層遍歷都是以上一層遍歷的結果作為起點,遍歷乙個距離能訪問到的所有節點。需要注意的是,遍歷過的節點不能再次被遍歷。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 遍歷標...