基于python模擬bfs和dfs代碼實例
更新時間:2020年11月19日 10:43:43 作者:Neaya
這篇文章主要介紹了基于python模擬bfs和dfs代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
BFS
""" # @Time : 2020/11/8 # @Author : Jimou Chen """ # 廣搜 def bfs(graph, start): queue = [start] # 先把起點入隊列 visited = set() # 訪問國的點加入 visited.add(start) while len(queue): vertex = queue.pop(0) # 找到隊列首元素的連接點 for v in graph[vertex]: if v not in visited: queue.append(v) visited.add(v) # 打印彈出隊列的該頭元素 print(vertex, end=' ') if __name__ == '__main__': graph = { 'A': ['B', 'D', 'I'], 'B': ['A', 'F'], 'C': ['D', 'E', 'I'], 'D': ['A', 'C', 'F'], 'E': ['C', 'H'], 'F': ['B', 'H'], 'G': ['C', 'H'], 'H': ['E', 'F', 'G'], 'I': ['A', 'C'] } bfs(graph, 'A')
A B D I F C H E G
Process finished with exit code 0
DFS
""" # @Time : 2020/11/8 # @Author : Jimou Chen """ # 深搜 def dfs(graph, start): stack = [start] visited = set() visited.add(start) while len(stack): vertex = stack.pop() # 找到棧頂元素 for v in graph[vertex]: if v not in visited: stack.append(v) visited.add(v) print(vertex, end=' ') if __name__ == '__main__': graph = { 'A': ['B', 'D', 'I'], 'B': ['A', 'F'], 'C': ['D', 'E', 'I'], 'D': ['A', 'C', 'F'], 'E': ['C', 'H'], 'F': ['B', 'H'], 'G': ['C', 'H'], 'H': ['E', 'F', 'G'], 'I': ['A', 'C'] } dfs(graph, 'E')
E H G F B A I D C
Process finished with exit code 0
總結
很明顯一個用了隊列,一個用了棧
利用python語言優(yōu)勢,只需改動pop即可
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
Pandas DataFrame操作數(shù)據(jù)增刪查改
我們在用 pandas 處理數(shù)據(jù)的時候,經(jīng)常會遇到用其中一列數(shù)據(jù)替換另一列數(shù)據(jù)的場景。這一類的需求估計很多人都遇到,當然還有其它更復雜的。解決這類需求的辦法有很多,這里我們來推薦幾個,這篇文章主要介紹了Pandas DataFrame操作數(shù)據(jù)的增刪查改2022-10-10使用python的turtle函數(shù)繪制一個滑稽表情
Turtle庫是Python語言中一個很流行的繪制圖像的函數(shù)庫,今天通過實例代碼給大家分享使用python的turtle函數(shù)繪制一個滑稽表情,一起看看吧2020-02-02Python:二維列表下標互換方式(矩陣轉(zhuǎn)置)
今天小編就為大家分享一篇Python:二維列表下標互換方式(矩陣轉(zhuǎn)置),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-12-12Python基于回溯法子集樹模板解決數(shù)字組合問題實例
這篇文章主要介紹了Python基于回溯法子集樹模板解決數(shù)字組合問題,簡單描述了數(shù)字組合問題并結合實例形式分析了Python回溯法子集樹模板解決數(shù)字組合問題的具體步驟與相關操作技巧,需要的朋友可以參考下2017-09-09python 用opencv實現(xiàn)圖像修復和圖像金字塔
這篇文章主要介紹了python 如何用opencv實現(xiàn)圖像修復和圖像金字塔,幫助大家更好的理解和使用python處理圖片,感興趣的朋友可以了解下2020-11-11