算法导论 中的 拓扑排序 用DFS实现 O(V+E)
(2011-05-04 08:54:09)
标签:
算法导论中的拓扑排序dfso(ve)教育 |
分类: 图论 |
算法导论中的拓扑排序,觉得算法导论真的好强,这是利用DFS,记录各点完成访问的时刻(完成时间),用DFS遍历一次整个图,得出各结点的完成时间,然后按完成时间倒序排列就得到了图的拓扑序列,相比按结点的入度的贪心法的拓扑排序,我觉得DFS的拓扑比较好写
原理:
令f[u] , f[v]为 dag图上的任一结点u,v的完成时刻
若存在有向边<u,v>
,则
f[v] < f[u]
所以按完成时刻倒序排列即可
#include<iostream>
using namespace std;
int timef = 0;
int n ;
int a[1000][1000];// 图的邻接矩阵
int f[1000];
int vis[1000];
void DFS(int u)
{
}
void DFS_main()
{
}
void Topological_sort()
{
}
int main()
{
}