一般把由某个集合上的一个偏序得到该集合上的一个全序的操作称之为拓扑排序,一般用来确定一个有依赖关系的集中的事物发生的顺序,AOV基本是要用这个,有图的动规里拓扑排序也经常作为一个必要的预处理步骤。
算法一般是kahn:
就是重复查找一个入度为0的顶点,并从网中删除此顶点及其出边直至不存在入度为0的顶点。
和DFS:
一般会用个栈来存结果,然后递归,在dfs退出之前添加顶点,自然在当前顶点还存在边指向其顶点时就会继续递归调用直至读入最后一个顶点。
两个算法效率差不多都是O(E+V)。
一般把由某个集合上的一个偏序得到该集合上的一个全序的操作称之为拓扑排序,一般用来确定一个有依赖关系的集中的事物发生的顺序,AOV基本是要用这个,有图的动规里拓扑排序也经常作为一个必要的预处理步骤。
算法一般是kahn:
就是重复查找一个入度为0的顶点,并从网中删除此顶点及其出边直至不存在入度为0的顶点。
和DFS:
一般会用个栈来存结果,然后递归,在dfs退出之前添加顶点,自然在当前顶点还存在边指向其顶点时就会继续递归调用直至读入最后一个顶点。
两个算法效率差不多都是O(E+V)。