
CLRS算法导论
gzxcyy
这个作者很懒,什么都没留下…
展开
-
算法导论22.4-3 判断无向图是否包含回路
给出一个算法,用它来确定一个给定的无向图G=(V,E)中是否包含一个回路。所给出的算法的运行时间为O(V),这一时间独立于|E|解答:我们都知道对于一个无向图而言,如果它能表示成一棵树,那么它一定没有回路,并且有|E|=|V|-1,如果在这个树上添加一条边,那么就构成了回路,如果在这个树中去掉一个边就成了森林(注意:如果只是限定|E| 对于这个题目我们可以用DFS来做,每当转载 2013-11-08 10:32:32 · 5562 阅读 · 0 评论 -
算法导论22.4-5 构造拓扑排序
题目要求用非DFS得方法构造拓扑排序。找出入度为0的节点,删除该点并删除该点所有的出边。删除的顺序就是拓扑排序的顺序。要求复杂度O(V + E)。 方案:1. 遍历邻接表一遍,统计每个元素的入度。(O(E))2. 找出一个入度为0的点u,将u的所有出边的目的点v的入度减一。(O(V + E))3. 继续步骤一。原创 2013-11-08 10:56:29 · 1620 阅读 · 0 评论 -
算法导论22.4-2 有向无环图的路径数目
要求在一个有向无环图中,给定两点,求出这两点之间有多少条路径。该章节是讲拓扑排序,考虑先拓扑排序,将图排序成P336页的图22-7类似的样子,然后对E(s, t)之间的部分进行DP可以证明所有路径都仅存在于s, t之间。递归式如下(L(s, t)表示s到t的路径的数目):直接用DFS好像是不可行的,代码就不写了。原创 2013-11-08 10:12:20 · 7092 阅读 · 2 评论