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))

  1. 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?