接力:山东大学2021算法期末
2022 SDU算法导论期末考试
2020 计科
计算题 三道 35’
- (1) 画BFS树
(2) 做DFS说明各种边的分类 - 使用floyd或者矩阵乘法求全源最短路,求最短路矩阵以及前驱矩阵(3个点,比较友好,应该没有人会用矩阵乘法吧)
- 求最大流和最小割,画剩余网络和増广路(最后可以找最小割看看是否还有増广路)
证明题 两道 20’
- 归纳法证明路径松弛性质
- e是某个割的轻边(应该是唯一的?),证: ∀ \forall ∀ mst均包含e
辨析判断 两道 20’
- 以下哪个条件能保证 d [ v ] < f [ u ] d[v]<f[u] d[v]<f[u]:
(a) ( u , v ) ∈ E (u,v)\in E (u,v)∈E(能,应用白色路径定理,只有 v v v一个白色节点)
(b)存在 u u u到 v v v的路径(不能,要求发现 u u u时,该路径是白色) - 课后题
算法设计与分析题 两道 25’
- 跟去年类似
今年:DAG图,求的是 s s s到 t t t不经过某个点的路径数 - (1)借鉴Dijkstra算法,设计一个算法求最大容量路(定义,每条边有一个容量,一条路径的容量是路径上所有边的容量取最小,其实就是把Dijkstra的松弛边 ( u , t ) (u,t) (u,t)的操作改为 c [ t ] = m a x ( c [ t ] , m i n ( C ( u , t ) , c [ u ] ) ) c[t]=max(c[t],min(C(u,t),c[u])) c[t]=max(c[t],min(C(u,t),c[u])))
(2)用设计算法跑一个例子
(3)正确性证明(类比Dijkstra,但是我忘了555)