• Being
    2019-01-19
    老师,我想了很久,不能确定,双向BFS的停止条件跟maxDegrees有关,也就是说最坏的情况是刚好到maxDgrees时搜索到,所以时间复杂度应该是 maxDgrees * 2*(V+E),运用四则运算法则,这个队列循环了maxDgrees次,每一次对node的访问都是(V+E),而双向是两端并进所以乘2,再根据主次分明,将常量这些去掉,最后就是O(V)。
    空间复杂度也和maxDegrees有关,队列有两个maxDegrees*(V+E),visited的容器也有两个,同样的,主次分明来说,其他的变量就可以忽略了,然后用四则运算法则来计算,就是相加,最后是O(V)
    以上都是算的最坏情况,最好情况是O(1),平均情况? 最后跟最坏情况一样,是使用排列组合法则推导吗?我后面再试试。
    展开

    作者回复: 分析的很详细👍,这里E是指边的数量?V是指结点的数量?

    
     5
  • pyhhou
    2019-03-16
    思考题感觉要根据具体图的情况来看具体时间复杂是多少,就之前的六度关系的例子,假设把关系看作是一个树,每个结点都有 n 个子结点,要确认两个人是几度好友,也就是确认两个结点相距多少层,如果是单向广度优先搜索,时间复杂度 O(n^degree),双向可以运用加法法则,两边同时出发,时间复杂度 2 * O(n^(degree/2)),空间复杂度是队列中暂存的结点的最大值,和时间复杂度一样

    作者回复: 是的

    
     2
  • 炎发灼眼
    2019-10-10
    老师,有一点不明白,为什么在计算归并的复杂度时,切分的复杂度就是按照节点来算,是算每次切的时间么?而归并的时候是算指数的,合并的时候,其实也是两个节点合并一个,应该是按照合并的数目来算的。

    作者回复: 你这里的归并是指归并排序,对吧?归并排序的时间复杂度是O(n * logn),其中logn表示二叉树的高度,而n表示二叉树的每一层,你都要扫描一遍长度为n的数组

    
     1
  • Being
    2019-01-20
    嗯,V是节点的数量,E是边的数量,根据邻接矩阵的概念来的。

    作者回复: 思路是对的,不过V和E我们通常可以使用平均连接数来进一步推导,便于比较不同算法的好坏。具体的我会在第17讲的例子中讲解。

    
     1
  • cwtxz
    2020-01-03
    编程这么些年,其实并没有系统地学习过算法,更不用谈分析时间复杂度和空间复杂度了。时间复杂度和空间复杂度这两个算法分析领域的专业术语虽然如雷贯耳,可惜我却没有真正认真系统地去了解过它,这两个名词于我而言更像是遥不可及的概念而不是贴近生活的工具。早些年的时候,编程于我而言就是实现功能、实现业务逻辑而不必理会代码的质量,执行的效率等因素。编程,似乎就是单纯地粗糙地完成功能,而不用管代码的优雅。这是小公司程序员的通病,一切以开发效率为先,编码质量不是特别重要。久而久之,自己的水平还是原地踏步。看了、学了老师的课程,给我指明了前进的方向,让我切实地感受到了自己的进步,感谢老师,我会坚持学习下去的。加油!!!
    
    
  • 知行合一
    2019-12-11
    平均复杂度的计算稍微繁琐一些。如果距离为 n-1,只有 1 种可能,a 为数组中第一个字符,b 为数组中最后一个字符。如果距离为 n-2,那么 a 字符的位置有 2 种可能,b 在 a 位置确定的情况下只有 1 种可能,因此排列数是 2。以此类推,如果距离为 n-3,那么有 3 种可能,一直到距离 1,有 n-1 种可能。所以平均的扫描次数为 (1 *(n-1) + 2 *(n-2) + 3(n -3) + … + (n-1)1) / (1 + 2 + … + n),最后时间复杂度简化为 O(n)。
    老师,这个分母(1+2+•••+n)怎么理解

    作者回复: 表示扫描的总次数

    
    
  • Paul Shan
    2019-08-28
    算法的复杂度分析是一个统计+近似的过程,先用四则运算把所有消耗的成本统计出来,如果递归的话,可能用到画成递归树来求和,然后把一些低阶的复杂度全部删除只保留高阶的,多个变量需要表达成多变量的函数,最终得到一个最简表达式。
    
    
  • 天佑
    2019-07-03
    看不懂里面的数学符号,怎么来的,为什么是log...

    作者回复: 你所说的log是指二分查找或归并排序的时间复杂度log(n)对吧。这里的log是以2为底,如果8个数字,那么就要查找3次,或者划分3次,也就是log(8),以2为底

    
    
我们在线,来聊聊吧