摘要:
定义1 如果有向图G的任何两顶点都互相可达,则称图G是强连通图,如果有向图G存在两顶点u和v,使得u不能到达v或则v不能到达u,则称图G是非强连通图。 定义2 如果有向图G不是强连通图,他的子图G‘是强连通图,点v属于G’,任意包含v的强连通子图也是G‘的子图,则称G’是有向图G的极大强连通子图。 下面介绍强连通分量的三种算法:Kosaraju、Tarjan和Garbow算法。 Kosaraju算法 基本算法: Kosaraju算法主要是对原图G和反图GT分别进行一次dfs。 (1)对原图进行dfs形成森林(树)。 (2)然后任选一棵树对其反图按其第一次搜索回溯的逆序进行... 阅读全文
摘要:
下面简要介绍k短路、差分约束系统、有向无环图上的最短路和Floyd算法求最小环的求解方法。 1.k短路 k短路就是指次短路、第三最短路……等问题。其在实际生活中有颇多用处。 其基本算法为: 目前使用较多的算法是单源最短路配合A*。A*是搜索中比较高级的方式,A*算法结合了启发式搜索(这种方法通过充分利用图给出的信息来动态地做出决定而使搜索次数大大降低)和形式化方法(这种方法不利用图给出的信息,而仅通过数学的形式分析)。他通过一个估价函数f(h)来估计图中的当前点p到终点的距离,并由此决定他的搜索方向,当这条路径失败时,他会尝试其他路径。对于A*,估价函数=当前值+当前位置到终点的最... 阅读全文