五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

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

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

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

定義

深度優(yōu)先搜索算法(英語:Depth-First-Search,DFS)是一種用于遍歷或搜索樹或圖的算法。這個(gè)算法會(huì)盡可能深的搜索樹的分支。當(dāng)節(jié)點(diǎn)v的所在邊都己被探尋過,搜索將回溯到發(fā)現(xiàn)節(jié)點(diǎn)v的那條邊的起始節(jié)點(diǎn)。這一過程一直進(jìn)行到已發(fā)現(xiàn)從源節(jié)點(diǎn)可達(dá)的所有節(jié)點(diǎn)為止。如果還存在未被發(fā)現(xiàn)的節(jié)點(diǎn),則選擇其中一個(gè)作為源節(jié)點(diǎn)并重復(fù)以上過程,整個(gè)進(jìn)程反復(fù)進(jìn)行直到所有節(jié)點(diǎn)都被訪問為止。這種算法不會(huì)根據(jù)圖的結(jié)構(gòu)等信息調(diào)整執(zhí)行策略。


代碼:

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

#參考 https://www.bilibili.com/video/BV1Ks411575U/?spm_id_from=333.788.recommend_more_video.0

graph={

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

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

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

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

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

"F":["D"]

}

def DFS(graph,s,mb): #mb為用戶查找目標(biāo)元素

? ? ? ?#創(chuàng)建棧

? ? stack=[]

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

? ? stack.append(s)

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

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

? ? seen.add(s)#加入

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

? ? while stack:

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

? ? ? ? vertex=stack.pop()

? ? ? ? # 棧后進(jìn)先出,所以是pop()先出

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

? ? ? ? nodes=graph[vertex]

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

? ? ? ?

? ? ? ? for w in nodes:

? ? ? ? ? ? ?

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

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

? ? ? ? ? ? ? ? stack.append(w)

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

? ? ? ? ? ? ? ? ? ? ?

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

? ? ? ? if vertex==mb:

? ? ? ? ? ? break ?

? ? ? ? print(vertex) ? ?

? ? ? ? relpace +=1

? ? ? ? if relpace>6:

? ? ? ? ? ? print("不存在要遍歷的玩意")

? ? print("大O表示法查找時(shí)長(zhǎng)為{}".format(relpace))

DFS(graph,"A","F")


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

分享到微博請(qǐng)遵守國家法律
宁南县| 海丰县| 五大连池市| 靖宇县| 新建县| 大田县| 商都县| 获嘉县| 鄄城县| 玉门市| 泰州市| 桦甸市| 安平县| 渑池县| 鹿邑县| 五河县| 新绛县| 连云港市| 井陉县| 岱山县| 乌什县| 郓城县| 开阳县| 内乡县| 沙雅县| 昔阳县| 工布江达县| 武鸣县| 柘荣县| 宁河县| 普兰县| 高青县| 西乌| 无棣县| 偏关县| 静海县| 东平县| 军事| 东乌珠穆沁旗| 潞西市| 兴和县|