图算法
图算法定义在tango.graph._
中,如果要使用图的数据结构,请参考tango.type.Graph
或者tango.type.GraphW
。
bfs(graph): []
获得图的广度优先(BFS)遍历数组。
dfs(graph): []
获得图的深度优先(DFS)遍历数组。
dijkstra(graph, s: number = 1): []
获得指定节点到每一个节点的最短路径,使用Dijkstra算法。
multiMinimumCut(graph, times: number): number
获得图的最小割量,最多尝试times
次。
mstPrim(graph, s: number = 1): number
获得有权重图的最小生成树的总权重,使用Prim算法。
mstKruskal(graph): number
获得有权重图的最小生成树的总权重,使用Kruskal算法。
mstKruskal(graph, k): number
获得图的k
簇最大空间数,使用Kruskal算法。
sccKosaraju(graph): []
获得有向图的强联通组的个数,使用Kosaraju算法。
sccTarjan(graph): []
获得有向图的强联通组的个数,使用Tarjan算法。该算法的实现采用了迭代,而非递归。 参考解释。
topologicalSort(graph): []
获得有向图的拓扑排序序列。
undirectedConnected(graph): []
获得无向图的联通分组,比如,
result = [
v1: [v1,v4,v8],
v2: [v2,v3],
...
]
表示,从 出发,作深度优先(DFS)遍历,能依次访问到 、和节点。 不能访问得到其余节点,其余节点也不能访问得到。
满足如下两个条件,则称无向图为联通图:
result.length == 1 &&
result[0][1] == Graph.dfs(graph)