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【ALGORITHM】使用帶有DFS演算法的Python的遞迴深度問題
DFS演算法已經在使用小的測試用例,但是當我用一個巨大的示例執行它時,它會丟擲“RunTimeError:最大遞迴深度超過”,所以我包含了 ...
- 2以Python實作演算法
以Python實作演算法– Algorithms Implements using Python ... BFS; 深度優先搜尋Depth-first Search, DFS; 最短路徑演算法S...
- 3【PYTHON】遞迴深度優先搜尋演算法 - 程式人生
我嘗試寫一個遞迴的深度優先搜尋演算法,該演算法採用一個表示圖表的鄰接 ... + 1 graph[v] = count for key in graph: if key == 0: dfs(ke...
- 4【Python演算法】遍歷(Traversal) - 廣度優先(BFS) - 拾貝文庫網
【Python演算法】遍歷(Traversal)、深度優先(DFS)、廣度優先(BFS)
- 5[演算法] [C++ / Python] 當DFS 遇上排列- skyblog
[演算法] [C++ / Python] 當DFS 遇上排列. Sky 2021 - 03 - 07. 深度優先搜尋(DFS)是樹或圖的一種走訪方式,而我們也可以將他應用在「排列」上。