开发者社区 问答 正文

拓扑排序时间复杂度o(n+e)怎么算的?

拓扑排序时间复杂度o(n+e)怎么算的?

展开
收起
知与谁同 2018-07-22 19:45:51 8449 分享 版权
3 条回答
写回答
取消 提交回答
  • TA有点害羞,没有介绍自己...

    你看一下求入度那个算法是不是有两个for循环,一个遍历顶点,一个遍历与这个顶点有关的边,注意这里不是e,两个for的最终结果才是遍历所有的边,才是e,所以算法复杂度是O(e)hiahia.

    2019-07-17 22:50:29
    赞同 展开评论
  • 因为算法中要输出n个点(即入度为0的点输出),要删掉e条弧(即入度不为0的点入度减一),所以时间复杂度为o(n+e)
    2019-07-17 22:50:29
    赞同 展开评论
  • 胜天半子
    对有n个顶点和e条弧的有向图而言,建立求各顶点的入度的时间复杂度为O(e);建零入度顶点栈的时间复杂度为O(n);在拓扑排序过程中,若有向图无环,则每个顶点进一次栈、出一次栈,入度减1的操作在while语句中总共执行e次,所以总的时间复杂度为O(n+e)。
    2019-07-17 22:50:29
    赞同 展开评论
问答地址: