算法导论22章基本的图算法 思考题总结

22-1 (以广度优先搜索来对图的边进行分类)深度优先搜索将图中的边分类为树边、后向边、前向边和横向边。广度优先搜索也可以用来进行这种分类。具体来说,广度优先搜索将从源结点可以到达的边划分为同样的4种类型。

a.证明在对无向图进行的广度优先搜索中,下面的性质成立:

1.不存在后向边,也不存在前向边。

2.对于每条树边(u, v),我们有v.d = u.d + 1。

3.对于每条横向边(u, v),我么有v.d = u.d 或 v.d = u.d + 1。

b.证明在对有向图进行广度优先搜索时,下面的性质成立:

1.不存在前向边。

2.对于每条树边(u, v),我们有v.d = u.d + 1。

3.对于每条横向边(u, v),我们有v.d ≤ u.d + 1。

4.对于每条后向边(u, v),我们有0 ≤ v.d ≤ u.d。

ANSWER:

a:

1.假如(u, v)是前向边,则搜索结点v前必搜索u,则根据BFS,当搜索结点u以后必先搜索结点v,则(u, v)是树边;同理,若(u, v)是后向边,则(v, u)是树边;矛盾,所以不存在前向边和后向边。

2.对于每条树边(u, v)有v.π = u,切执行v.π = u的同时执行v.d = u.d + 1;在这之后u.d和v.d都不会改变,所以v.d = u.d + 1;得证。

3.由(u, v)为横向边可知,当搜索结点u时,v必须在队列中,否则(u, v)为树边,所以v.d ≤ u.d + 1。又由无向图横向边可知v.d ≥ u.d。所以u.d = v.d 或 u.d + 1 = v.d。

b:

1.假如(u, v)是前向边,则u.d < v.d,则搜索结点u时,结点v仍是白色,则(u, v)必是树边,矛盾;所以不存在前向边。

2.同a.2。

3.和a.3类似。

4.显然有v.d ≥ 0,又由后向边可知v.d ≤ u.d,得证。


22-4 (可到达性)设G = (V, E)为一个有向图,且每个结点u∈V都标有一个唯一的整数值标记L(u),L(u)的取值为集合{1,2,...,|V| }。对于每个结点u∈V,设R(u) = {v∈V:u→v}为从结点u可以到达的所有结点的集合。定义min(u)为R(u)中标记最小的结点,即min(u)为结点v,满足L(v) = min{L(w):w∈R(u)}。请给出一个时间复杂度为O(V + E)的算法来计算所有结点u∈V的min(u)。

ANSWER:按照结点L(u)顺序对每个结点查找该结点可到达的结点,并找出最小的L(v),即min(u);

对V个结点进行查找共计E条边,所以时间复杂度为O(V + E)。

你可能感兴趣的:(算法,算法导论)