开发者社区> 问答> 正文

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

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

展开
收起
知与谁同 2018-07-22 19:45:51 8130 0
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
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载