#coding=utf-8
import queue
#圖的鄰接表
grap=[,
[2,3],
[1,4],
[1],
[2,5,6],
[4],
[4,7],
[6],
[10],[9],
[8],
[8]]
//bfs 遍歷結果為 [1, 2, 3, 4, 5, 6, 7, 8, 10, 9]
#初始化
visit=#節點的訪問順序
count=0;
for i in range(11):
#訪問u節點的所有鄰接節點
def get_all_beside_node(u):
return grap[u]
#bfs 遍歷乙個臨接子圖
def bfs(i):
q=queue.queue();
q.put(i)
global count
count += 1
visit[i]=count
while(not q.empty()):
u=q.get()
for w in get_all_beside_node(u):
if(visit[w]==0):
q.put(w)
count+=1
visit[w]=count
#遍歷整棵樹 可能是非連通圖
for i in range(1,11):
if(visit[i]==0):
bfs(i)
print(visit[1:11])
如何實現廣度優先遍歷(BFS)
bfs過程 一 訪問頂點v,並標記v為已經訪問 二 頂點v入佇列 三 如果佇列非空,進行執行,否則演算法結束 四 出佇列取得對頭頂點u,如果頂點未被訪問,就訪問該頂點,並標記該頂點為已經訪問 五 查詢u的第乙個鄰接節點w 六 如果w不存在,則轉到步驟三,否則迴圈執行 a.如果w沒有被訪問過,則先把w...
廣度優先遍歷
廣度優先遍歷 breadth first search 類似於對樹的層序遍歷 遍歷規則為 首先訪問初始點vi,並將其標記為已訪問過,接著訪問vi的所有未被訪問過的鄰接點,其訪問次序可以任意,假定依次為vi1,vi2,vit,並均標記為已訪問過,然後在按照vi1,vi2,vit的次序,訪問每乙個頂點的...
廣度優先遍歷
還是上面那道題 深度遍歷一般是用遞迴,深度不斷增加,廣度搜尋一般用佇列這樣的形式儲存東西 include include using namespace std struct note int main book 51 51 int next 4 2 int head,tail int i,j,k,...