0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

DFS深度優(yōu)先搜索python代碼

冬至子 ? 來源:行在交通 ? 作者:ai聊天機(jī)器人 ? 2022-10-12 10:50 ? 次閱讀

最近在寫分支定界求TSP的一個小項(xiàng)目,涉及到圖和樹的各種知識,就淺淺的從無向圖的遍歷開始總結(jié)一下近期的學(xué)習(xí)工作,使用DFS的遞歸遍歷無向圖。

鄰接矩陣、鄰接表等都可以用來表示一張圖,這里使用鄰接表數(shù)組來表示,即以頂點(diǎn)為索引的列表數(shù)組,具體實(shí)現(xiàn)使用字典來創(chuàng)建鄰接表數(shù)組。

poYBAGNGKzGACJOcAAAxE4eKOeo310.png

深度優(yōu)先搜索DFS簡單地來說,就是在訪問其中一個頂點(diǎn)時,將它標(biāo)記為已訪問,遞歸的訪問它所有沒有被標(biāo)記的相鄰頂點(diǎn)。

老習(xí)慣,上代碼。

poYBAGNGKzyAAuJ7AABb3wOjgys887.png

運(yùn)行看結(jié)果。

poYBAGNGK0yAHvgcAACSUbrIQFo956.png

淺淺的分析一下遞歸的過程

poYBAGNGK1yAai82AACYeBpPqJc420.png

dfs(0) ---dfs(1)---0已經(jīng)被標(biāo)記了,下一個dfs(3)---1已經(jīng)被標(biāo)記了,所以下一個dfs(2)---graph[2]里的0,3都被標(biāo)記了,回到graph[3],接著dfs(5)--3已經(jīng)被標(biāo)記了,所以dfs(6)---接下來就簡單了,dfs(4)。好像就結(jié)束了應(yīng)該是這樣吧。

到這里如果就結(jié)束的話,顯得敷衍,折騰了一下,實(shí)現(xiàn)了一個簡單有點(diǎn)笨的s-v的路徑構(gòu)建的功能,還是用上面的例子來說明,最后visited = [0,1,3,2,5,6,4],根據(jù)這個標(biāo)記順序,會有且僅有0-1,1-3,3-2,3-5,5-6,6-4被選中(別問為什么,這是我的規(guī)則)。

pYYBAGNGK26AaZN4AAD8oxmDK2k515.png

首先運(yùn)行前面的dfs,得到 visited = [0,1,3,2,5,6,4],根據(jù)這個標(biāo)記順序,會有且僅有0-1,1-3,3-2,3-5,5-6,6-4被選中(別問為什么,這是我的規(guī)則)。看第4和5行,將構(gòu)建u-v的路徑轉(zhuǎn)為構(gòu)建v-u的路徑。

會有人好奇為啥0到5的路徑為啥不是0-3-5這條,因?yàn)?-3沒有被標(biāo)記??!至于為什么,這就是我的規(guī)則,別管(懂的自然會懂我的心路歷程,不懂就算,反正構(gòu)建路徑又不對成本、距離等做要求)。




審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • python
    +關(guān)注

    關(guān)注

    56

    文章

    4797

    瀏覽量

    84694
  • TSP
    TSP
    +關(guān)注

    關(guān)注

    1

    文章

    24

    瀏覽量

    16930
  • DFS
    DFS
    +關(guān)注

    關(guān)注

    0

    文章

    26

    瀏覽量

    9165
收藏 人收藏

    評論

    相關(guān)推薦

    使用Python進(jìn)行串口通信的案例

    python復(fù)制代碼 import serialimport time # 配置串口參數(shù)serial_port = '/dev/ttyUSB0' # 在Windows上可能是 'COM3' 或其他類
    的頭像 發(fā)表于 11-22 09:11 ?202次閱讀

    對比Python與Java編程語言

    Python與Java都是目前非常流行的編程語言,它們各有其獨(dú)特的優(yōu)勢和適用場景。以下是對這兩種編程語言的對比: 一、語法和易用性 Python 語法簡潔,代碼更易讀,非常適合初學(xué)者。 動態(tài)類型系統(tǒng)
    的頭像 發(fā)表于 11-15 09:31 ?320次閱讀

    如何用python控制usb2any?

    我想用python控制usb2any,在網(wǎng)上搜索后得到的關(guān)于usb2any的資料很少,是否有官方的usb2any函數(shù)庫?
    發(fā)表于 11-08 14:36

    使用Python進(jìn)行圖像處理

    下面是一個關(guān)于使用Python在幾行代碼中分析城市輪廓線的快速教程。
    的頭像 發(fā)表于 11-07 10:14 ?224次閱讀
    使用<b class='flag-5'>Python</b>進(jìn)行圖像處理

    dp接口的最新技術(shù)發(fā)展

    深度優(yōu)先搜索DFS)是一種基本的算法,用于遍歷或搜索樹或圖。它從一個頂點(diǎn)開始,盡可能深地搜索
    的頭像 發(fā)表于 10-30 13:52 ?171次閱讀

    Python常用函數(shù)大全

    Python 世界里,有一些寶藏函數(shù)和模塊,它們可以讓你編程更輕松、代碼更高效。這篇文章將帶你一一認(rèn)識這些神器,讓你的開發(fā)生活瞬間輕松不少!
    的頭像 發(fā)表于 10-27 17:20 ?253次閱讀

    如何用python控制usb2any?

    我想用python控制usb2any,在網(wǎng)上搜索后得到的關(guān)于usb2any的資料很少,是否有官方的usb2any函數(shù)庫?
    發(fā)表于 09-27 06:44

    pytorch和python的關(guān)系是什么

    ,PyTorch已經(jīng)成為了一個非常受歡迎的框架。本文將介紹PyTorch和Python之間的關(guān)系,以及它們在深度學(xué)習(xí)領(lǐng)域的應(yīng)用。 Python簡介 Python是一種高級、解釋型、通用
    的頭像 發(fā)表于 08-01 15:27 ?1971次閱讀

    Python在AI中的應(yīng)用實(shí)例

    Python在人工智能(AI)領(lǐng)域的應(yīng)用極為廣泛且深入,從基礎(chǔ)的數(shù)據(jù)處理、模型訓(xùn)練到高級的應(yīng)用部署,Python都扮演著至關(guān)重要的角色。以下將詳細(xì)探討Python在AI中的幾個關(guān)鍵應(yīng)用實(shí)例,包括機(jī)器學(xué)習(xí)、
    的頭像 發(fā)表于 07-19 17:16 ?1102次閱讀

    基于Python深度學(xué)習(xí)人臉識別方法

    基于Python深度學(xué)習(xí)人臉識別方法是一個涉及多個技術(shù)領(lǐng)域的復(fù)雜話題,包括計(jì)算機(jī)視覺、深度學(xué)習(xí)、以及圖像處理等。在這里,我將概述一個基本的流程,包括數(shù)據(jù)準(zhǔn)備、模型選擇、訓(xùn)練過程、以及測試與評估,并附上簡單的
    的頭像 發(fā)表于 07-14 11:52 ?1271次閱讀

    用pycharm進(jìn)行python爬蟲的步驟

    提供了許多有用的功能,如代碼自動完成、調(diào)試和版本控制等。您可以從JetBrains的官方網(wǎng)站下載PyCharm,并根據(jù)您的需求選擇免費(fèi)社區(qū)版或付費(fèi)專業(yè)版。 創(chuàng)建一個新的Python項(xiàng)目 打開
    的頭像 發(fā)表于 07-11 10:11 ?851次閱讀

    深度學(xué)習(xí)常用的Python

    深度學(xué)習(xí)作為人工智能的一個重要分支,通過模擬人類大腦中的神經(jīng)網(wǎng)絡(luò)來解決復(fù)雜問題。Python作為一種流行的編程語言,憑借其簡潔的語法和豐富的庫支持,成為了深度學(xué)習(xí)研究和應(yīng)用的首選工具。本文將深入探討
    的頭像 發(fā)表于 07-03 16:04 ?653次閱讀

    請問CYW43012支持DFS/雷達(dá)嗎?

    CYW43012是否支持DFS/雷達(dá)? 通過字符串命令檢查了 fmac 包中的所有固件后,它似乎不支持。 我在固件標(biāo)簽中找不到-dfsradar。
    發(fā)表于 03-01 09:33

    谷歌升級Bard AI聊天機(jī)器人為Gemini,新增Python代碼編輯功能

     此外,谷歌表示,接下來數(shù)個月內(nèi),Gemini Advanced 計(jì)劃會加入更多新功能,如支持更為詳盡的上下文信息、增強(qiáng)多模態(tài)交互性以及完善編程功能。據(jù)谷歌公開更新,付費(fèi)用戶可用 Gemini 界面直接編輯和執(zhí)行 Python 代碼,有助于快速驗(yàn)證試驗(yàn)
    的頭像 發(fā)表于 02-20 15:47 ?591次閱讀

    Python智能家居系統(tǒng)代碼介紹

    Python智能家居系統(tǒng)是一種基于Python編程語言開發(fā)的智能家居控制系統(tǒng),在現(xiàn)代家庭中得到了越來越廣泛的應(yīng)用。本文將詳細(xì)介紹Python智能家居系統(tǒng)的代碼實(shí)現(xiàn),包括系統(tǒng)的結(jié)構(gòu)與功能
    的頭像 發(fā)表于 01-25 09:46 ?1368次閱讀