Graph
https://juejin.im/post/5a32688b5188254dd9366d6a
图的常见算法总结:
隐式图搜索,
显示图搜索,
DFS (O(2^n), O(n!)) (思想:构建搜索树+判断可行性)1. Find all possible solutions 2. Permutations / Subsets
BFS (O(m), O(n))
Graph traversal (每个点只遍历一次) 2. Find shortest path in a simple graph
图的节点,类似于树的节点有父子关系,这样在DFS的时候要注意,无论是BFS还是DFS, 都需要一个辅助的字典来避免死循环。 常见的形式,给所有点的集合,或者给一个一点,作为参数。
DFS(node, current):
dic[node] = True
current.append(node)
for neighbor in node.neighbors:
if not dic[node]:
DFS()
Last updated
Was this helpful?