• Jerry银银
    2019-01-04
    老师,这门专栏快结束了,突然有点新的想法:如果老师在讲解算法的时候,多讲点算法的由来,也就是背景,那就更好了。

    我想,如果能知道某个算法的创造者为什么会发明某个算法,怎么能够发明出某个算法,我想我们会掌握得更牢,学得应该也稍微轻松一点,关键是能跟随发明者回到原点,体会思考的过程

    编辑回复: 这个有意思,我们想想。

     7
     75
  • Jerry银银
    2019-01-04
    思考题:
    1. a先于b执行,也就说b依赖于a,b指向a,这样构建有向无环图时,要找到出度为0的顶点,然后删除

    2. BFS也能实现,因为遍历只是实现拓扑排序的一个“辅助手段”,本质上是帮助找到优先执行的顶点
    
     25
  • Healtheon
    2019-01-07
    @Jerry银银
    针对你提的算法的由来与背景的问题,我想我们完全可以通过维基百科查看,一般都有其背景以及算法应用的场景,甚至有些算法在维基百科上有相应的文献引用,这些都可以参考。

    作者回复: 银银同学要的显然不是这些

    这就好比我在跟大家讲古诗 登黄鹤楼。银银同学想知道的是 怎么才能站在黄鹤楼上 作出登黄鹤楼这么牛逼的诗 诗人的脑回路是咋样的

    而并不是想要历史性介绍 这首诗是谁谁谁 在某某年 某某地 历史背景下 做出来的

    不知道我理解的对不

    关于前者 我在讲解的时候已经尽量还原来龙去脉 但是可能学的并不明显 而且这本身就是很难说清楚的 说不定诗人自己都不知道自己咋写出这么牛逼的诗的

     1
     20
  • 想当架构师
    2019-01-26
    我怎么觉得这个kahn算法其实就是BFS算法
     1
     14
  • 纯洁的憎恶
    2019-01-04
    1.kahn算法找出度为0的节点删除。dfs算法直接用正邻接表即可。

    2. BFS也可以。其实与DFS一样,BFS也是从某个节点开始,找到所有与其相连通的节点。区别在于BFS是一层一层找(递归函数在for循环外),DFS是先一杆子插到底,再回来插第二条路、第三条路等等(递归函数在for循环内)。
    
     11
  • Aaron
    2019-01-05
    课后思考里“BFS 深度优先搜索算法”是否应该是“BFS 广度优先搜索算法”?BFS: Breadth-first Search
    
     5
  • 不一样的烟火
    2019-08-14
    我常常陷入问题都看不懂的迷思中
    
     4
  • 你有资格吗?
    2019-01-07
    老师,好像数据结构少了B+树的讲解啊,B+不准备讲吗?
    
     4
  • Edward
    2019-01-05
    老师你好。我在做一道动态规划题的时候,不借助其他启发性线索时,在纸上演算一遍后,发现自己如果不能直觉地从演算中推演出解答的关键,就会产生强烈的自我怀疑。会有一层对自己智力水平的怀疑,如果没有一定的智商,是不适合做这事情的。请问老师你有什么方法,可以克服这种自我的质疑?

    作者回复: 多练习 多思考 多总结 慢慢就好了 都有这么一个过程的

     3
     4
  • farFlight
    2019-01-04
    老师,我觉得这里BFS和Kahn算法基本可以说是一样的,本身Kahn贪婪算法运用queue实现的过程就是一个典型的BFS范式。采用BFS就应该按照入度一层一层遍历,一层遍历完了的同时把下一层的顶点push进入queue中。
    
     4
  • 蓝天
    2019-01-07
    刚解决完工作中类似的问题 老师的文章就来了,然后才知道那个算法叫kahn
    
     3
  • NeverMore
    2019-01-04
    1、反过来的话计算的就不是入度了,可以用出度来判断;
    2、BFS的话,则需要记录上一个节点是哪个,可以实现,但是比DFS要麻烦些。
    还请老师指点。
    老师之后能不能给思考题一个答疑?

    作者回复: 专栏结束的时候吧 也算是一个回顾 现在年底忙 没啥时间写呢

    
     3
  • Sharry
    2019-01-04
    老师, 专栏一直跟进到现在了, 每堂课都是对知识的巩固和完善, 额...不过我一直有个小问题想请教一下老师, 那就是老师的图是使用什么工具绘制的, 我觉得非常富有生命力, 记录在笔记里非常 nice ...

    编辑回复: iPad Paper

    
     3
  • Sid
    2019-12-11
    想起了spring Bean的生成,Bean之间循环依赖的检查就是图的深度优先遍历方式检测是否有环:。 假设
    A->B->C->A, 创建A时依赖B,把A放到正在创建集合中,再去创建B,把B放到正在创建集合中,B依赖C,把C放到正在创建集合中,C依赖A,发现A在正在创建中,说明存在循环依赖,就做个特殊处理暴露出bean。看来处处有算法,用而不知。
    
     2
  • jueyoq
    2019-02-12
    老师什么时候再出课程呀。 按照咱们这销量,可以开始新专栏预告辣
    
     2
  • www.xnsms.com小鸟...
    2019-01-08
    DFS 算法 ,里面的递归差点就被绕进去了,这个递归终止条件太隐蔽了……不仔细看代码,还以为没有终止条件会死循环……好巧妙,打算我也想不出这样写代码
     2
     1
  • Jerry银银
    2019-01-04
    如果 a 先于 b,我们画一条从 b 到 a 的有向边,表示 b 依赖 a

    我个人更喜欢这种构建图的方式,觉得这种更符合“惯性思维方式”
    
     1
  • 分清云淡
    2020-01-07
    在今天的讲解中,我们用图表示依赖关系的时候,如果 a 先于 b 执行,我们就画一条从 a 到 b 的有向边;反过来,如果 a 先于 b,我们画一条从 b 到 a 的有向边,表示 b 依赖 a,那今天讲的 Kahn 算法和 DFS 算法还能否正确工作呢?如果不能,应该如何改造一下呢?
    ^^^写错了
    
    
  • 苗
    2019-12-21
    代码看不明白;但是使用场景是记住了。
    
    
  • Swing
    2019-12-18
    em
    蓦然发现。。。
    没有课代表 整理知识点了。。
    
    
我们在线,来聊聊吧