接力:山东大学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)