BFS、DFS和dijkstra演算法-python - IT閱讀
文章推薦指數: 80 %
BFS、DFS和dijkstra演算法-python ... bfs演算法,寬度優先搜尋演算法。
def bfs(graph,start): queue,visited = [start],[start] ...
BFS、DFS和dijkstra演算法-python
首頁
最新
HTML
CSS
JavaScript
jQuery
Python3
Python2
Java
C
C++
Go
SQL
首頁
最新
Search
BFS、DFS和dijkstra演算法-python
2018-11-16254
bfs演算法,寬度優先搜尋演算法。
defbfs(graph,start):
queue,visited=[start],[start]
whilequeue:
vertex=queue.pop()
foriingraph[vertex]:
ifinotinvisited:
visited.append(i)
queue.append(i)
returnvisited
G={"A":{"B","D"},
"B":{"C","E"},
"C":{"E","F"},
"D":{"G"},
"E":{"D","F","G","H"},
"F":{"H"},
"G":{"H"},
"H":{}}
print(bfs(G,'A'))
【'A','B','D','E','C','G','H','F'】
DFS演算法:深度優先搜尋演算法
defdfs(graph,vertex,queue=[]):
queue.append(vertex)
foriingraph[vertex]:
ifinotinqueue:
queue=dfs(graph,i,queue)
returnqueue
graph={1:[2,3],2:[4,5],
3:[5],4:[6],5:[6],
6:[7],7:[]}
print(dfs(graph,1,))
執行結果[1,2,3,4,5,6,7]
dijkstra演算法:求訪問完所有節點的最短路徑
G={1:{2:5,4:2,5:7},
2:{3:4},
3:{},
4:{2:1,3:10},
5:{3:3}}
defdijkstra(graph,source):
visited=set()
distance=dict((k,float("inf"))forkinG.keys())
distance[source]=0
whilelen(G)!=len(visited):
visited.add(source)
fornext_nodeingraph[source]:
ifdistance[next_node]>distance[source]+graph[source][next_node]:
distance[next_node]=distance[source]+graph[source][next_node]
INF=float("inf")
fornodeindistance.keys():
ifnodenotinvisitedanddistance[node]
延伸文章資訊
- 1【Day33】[演算法]-深度優先搜尋DFS與廣度優先搜尋BFS
資料結構與演算法,使用JavaScript與Python 系列第33 篇. Frank. 3 個月前‧ 698 瀏覽. 0. 深度優先搜尋(Depth-First Search,DFS)與廣度優...
- 2[演算法] [C++ / Python] 當DFS 遇上排列- skyblog
[演算法] [C++ / Python] 當DFS 遇上排列. Sky 2021 - 03 - 07. 深度優先搜尋(DFS)是樹或圖的一種走訪方式,而我們也可以將他應用在「排列」上。
- 3python 深度優先搜尋演算法DFS - 程序員學院
python 深度優先搜尋演算法DFS,給你一個由1 陸地和0 水組成的的二維網格,請你計算網格中島嶼的數量。 島嶼總是被水包圍,並且每座島嶼只能由水平方向 ...
- 4BFS、DFS和dijkstra演算法-python - IT閱讀
BFS、DFS和dijkstra演算法-python ... bfs演算法,寬度優先搜尋演算法。 def bfs(graph,start): queue,visited = [start],[s...
- 5【PYTHON】遞迴深度優先搜尋演算法 - 程式人生
我嘗試寫一個遞迴的深度優先搜尋演算法,該演算法採用一個表示圖表的鄰接 ... + 1 graph[v] = count for key in graph: if key == 0: dfs(ke...