大二下算法分析与设计
本博客记录山东大学泰山学堂2021级数据结构部分内容
BFS
作业 22.2-7
解答参考: 用两次BFS或树型DP
解答参考2:用两次DFS或者树型DP
时间复杂度:因为树的边数E与点数V满足
\[|E| == |V| - 1
\]
因此对树跑一遍BFS或者DFS复杂度为\(O(E+V) = O(V-1+V) = O(V)\)
因此跑两遍BFS复杂度:\(O(V)\)
习题22.4-2
参考
假设\(P(x)\)为源点\(s\)到点\(x\)的路径数目
重要定理
如果点x的直接父节点有n个,假设为\(a_1, a_2, a_3, ... a_n\), 那么:
\[P(x) = P(a_1) + P(a_2) +...+ P(a_n) ~~~~~~~~~~~~~~~~~~~ (1)
\]
自己画个图就能证明
那么我们就能利用公式(1)来进行递推,从\(P(s) = 1\)开始,逐个寻找后续节点