最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

【算法圖解】個(gè)人學(xué)習(xí)筆記3——BFS廣度優(yōu)先算法

2021-10-20 04:18 作者:達(dá)達(dá)里A  | 我要投稿

定義

·廣度優(yōu)先搜索指出是否有從A到B的路徑。

·如果有,廣度優(yōu)先搜索將找出最短路徑。

·面臨類(lèi)似于尋找最短路徑的問(wèn)題時(shí),可嘗試使用圖來(lái)建立模型,再使用廣度優(yōu)先搜索來(lái)解決問(wèn)題。

·有向圖中的邊為箭頭,箭頭的方向指定了關(guān)系的方向,例如,rama→adit表示rama欠adit錢(qián)。

·無(wú)向圖中的邊不帶箭頭,其中的關(guān)系是雙向的,例如,ross-rachel表示"ross與rachel約會(huì),而rache也與ross約會(huì)"。

·隊(duì)列是先進(jìn)先出(FIFO)的。

·棧是后進(jìn)先出(LIFO)的。

·你需要按加入順序檢查搜索列表中的人,否則找到的就不是最短路徑,因此搜索列表必須是隊(duì)列。

·對(duì)于檢查過(guò)的人,務(wù)必不要再去檢查,否則可能導(dǎo)致無(wú)限循環(huán)。


#廣度優(yōu)先算法

graph={

"A":["B","C"],

"B":["A","C","D"],

"C":["A","B","D","E"],

"D":["B","C","E","F"],

"E":["C","D"],

"F":["D"]

}

def BFS(graph,s):

? ? #創(chuàng)建隊(duì)列queue

? ? queue=[]

? ? #加入變量起點(diǎn)根s

? ? queue.append(s)

? ? # 鄰居節(jié)點(diǎn),判斷是否重復(fù)遍歷

? ? seen=set()#創(chuàng)建一個(gè)集合

? ? seen.add(s)#加入

? ? relpace=0#記錄所走步長(zhǎng)

? ? while queue:

? ? ? ? # 添加一個(gè)節(jié)點(diǎn),比如"A"為vertex

? ? ? ? vertex=queue.pop(0)

? ? ? ? # 隊(duì)列先進(jìn)先出,所以是pop(0)先出

? ? ? ? # nodes為"A"的臨近節(jié)點(diǎn)

? ? ? ? nodes=graph[vertex]

? ? ? ? #w為遍歷nodes的集合

? ? ? ?

? ? ? ? for w in nodes:

? ? ? ? ? ? ?

? ? ? ? ? ? if w not in seen:

? ? ? ? ? ? ? ? # 如果w不在seen中,w則加入集合和字典

? ? ? ? ? ? ? ? queue.append(w)

? ? ? ? ? ? ? ? seen. add(w)

? ? ? ? ? ? ? ? ? ? ?

? ? ? ? # 當(dāng)遍歷到F ? ? ? ?

? ? ? ? if vertex=="F":

? ? ? ? ? ? break ?

? ? ? ? print(vertex) ? ?

? ? ? ? relpace +=1

? ? print(relpace)

BFS(graph,"A")


【算法圖解】個(gè)人學(xué)習(xí)筆記3——BFS廣度優(yōu)先算法的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
玉山县| 汕头市| 句容市| 临武县| 罗田县| 峡江县| 中牟县| 同江市| 长兴县| 吉安市| 常熟市| 青河县| 卓资县| 东莞市| 来宾市| 宝山区| 五大连池市| 青冈县| 西乌| 仙居县| 水城县| 博乐市| 文昌市| 马边| 西峡县| 阿拉善右旗| 金坛市| 河间市| 芮城县| 噶尔县| 鹤庆县| 绩溪县| 南木林县| 阿尔山市| 保山市| 汽车| 宿州市| 宁南县| 南部县| 黄骅市| 涟水县|