精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

DFS深度優先搜索python代碼

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

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

鄰接矩陣、鄰接表等都可以用來表示一張圖,這里使用鄰接表數組來表示,即以頂點為索引的列表數組,具體實現使用字典來創建鄰接表數組。

poYBAGNGKzGACJOcAAAxE4eKOeo310.png

深度優先搜索DFS簡單地來說,就是在訪問其中一個頂點時,將它標記為已訪問,遞歸的訪問它所有沒有被標記的相鄰頂點。

老習慣,上代碼。

poYBAGNGKzyAAuJ7AABb3wOjgys887.png

運行看結果。

poYBAGNGK0yAHvgcAACSUbrIQFo956.png

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

poYBAGNGK1yAai82AACYeBpPqJc420.png

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

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

pYYBAGNGK26AaZN4AAD8oxmDK2k515.png

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

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




審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • python
    +關注

    關注

    56

    文章

    4782

    瀏覽量

    84456
  • TSP
    TSP
    +關注

    關注

    1

    文章

    24

    瀏覽量

    16909
  • DFS
    DFS
    +關注

    關注

    0

    文章

    26

    瀏覽量

    9154
收藏 人收藏

    評論

    相關推薦

    使用Python進行串口通信的案例

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

    使用Python進行圖像處理

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

    dp接口的最新技術發展

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

    pytorch和python的關系是什么

    ,PyTorch已經成為了一個非常受歡迎的框架。本文將介紹PyTorch和Python之間的關系,以及它們在深度學習領域的應用。 Python簡介 Python是一種高級、解釋型、通用
    的頭像 發表于 08-01 15:27 ?1706次閱讀

    基于Python深度學習人臉識別方法

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

    深度學習常用的Python

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

    Python智能家居系統代碼介紹

    Python智能家居系統是一種基于Python編程語言開發的智能家居控制系統,在現代家庭中得到了越來越廣泛的應用。本文將詳細介紹Python智能家居系統的代碼實現,包括系統的結構與功能
    的頭像 發表于 01-25 09:46 ?1272次閱讀

    python中運算符的優先級大小

    Python中運算符的優先級決定了表達式中各個運算符的計算順序。了解運算符的優先級對于正確理解和編寫復雜的表達式非常重要。本文將詳細介紹Python中運算符的
    的頭像 發表于 11-29 16:21 ?3256次閱讀

    python運行指定幾行

    Python是一種高級編程語言,可以用于開發各種類型的應用程序,包括網站、桌面應用程序、數據分析和人工智能等。在Python中運行指定的幾行代碼十分簡單,它不僅能夠幫助程序員快速開發軟件,也適用于
    的頭像 發表于 11-29 15:04 ?926次閱讀

    python軟件IDLE怎么打多行代碼

    用于編寫、編輯和運行Python代碼的編輯器窗口。在IDLE中編寫多行代碼有幾種方法可以實現。 使用括號與換行符: 在IDLE中編寫多行代碼的一種常見方法是使用括號來將多行
    的頭像 發表于 11-29 15:00 ?3953次閱讀

    python shell怎么用

    Python Shell是一種交互式解釋器,可以通過命令行直接運行Python代碼。在Shell中,可以輸入一行代碼并立即得到結果,非常適合于測試、嘗試新
    的頭像 發表于 11-29 14:36 ?1101次閱讀

    python語言特點有哪些

    、詳實和細致的描述,共計超過1500字。 簡潔優雅: Python以簡潔和優雅的語法而著稱。相對于其他編程語言,Python代碼通常看起來更加清晰易讀。這得益于Python采用了面向對
    的頭像 發表于 11-29 14:29 ?1051次閱讀

    python軟件怎么運行代碼

    Python是一種高級編程語言,它被廣泛用于開發各種類型的應用程序,從簡單的腳本到復雜的網絡應用和機器學習模型。要運行Python代碼,您需要一個Python解釋器,它可以將您的
    的頭像 發表于 11-28 16:02 ?862次閱讀

    繪制同切圓python代碼怎么運行

    繪制同切圓是一個很有趣的數學問題,可以使用Python語言進行實現。在這篇文章中,我們將探討同切圓的概念、繪制同切圓的算法和Python代碼的實現。 同切圓的概念 同切圓是指具有相同圓心但半徑
    的頭像 發表于 11-28 15:55 ?1483次閱讀

    python運行程序出現紅色空白

    類型語言,它對代碼的語法非常嚴格。如果你的代碼存在語法錯誤,Python解釋器將無法正確解析代碼并運行。常見的語法錯誤包括拼寫錯誤、缺少括號、缺少冒號等。你可以仔細檢查
    的頭像 發表于 11-28 15:30 ?1882次閱讀