- 分布式系统 作业
- 参考答案
- 2.1 分析在同步和异步模型下,convergecast 算法的时间复杂性。
- 2.2 G 里一结点从 pr 可达当且仅当它曾设置过自己的 parent 变量。
- 2.3 证明 Alg2.3 构造一棵以 Pr 为根的 DFS 树。
- 2.4 证明 Alg2.3 的时间复杂度为 O(m)。
- 2.5 修改 Alg2.3 获得一新算法,使构造 DFS 树的时间复杂性为 O(n)。
- 3.1 证明同步环系统中不存在匿名的、一致性的领导者选举算法。
- 3.2 证明异步环系统中不存在匿名的领导者选举算法。
- 3.9 若将环 R^rev 划分为长度为 j(j 是 2 的方幂)的连续片段,则所有这些片段是次序等价的。
- 第一次作业:安全性(safety)板书的思考题
- 第二次作业
- (1).安全性(safety)板书:Ex
- (2).分布式算法 PPT ch33: P9 Ex
- (3).分布式算法 PPT ch33: P30 Ex2.1, Ex2.3, Ex2.4, Ex2.5
- (4).分布式算法 PPT ch34 P9 Ex3.1, Ex3.2
- (5).分布式算法 PPT ch35 P39 Ex3.9
分布式系统–汪炀
分布式系统 作业
参考答案
2.1 分析在同步和异步模型下,convergecast 算法的时间复杂性。
2.2 G 里一结点从 pr 可达当且仅当它曾设置过自己的 parent 变量。
2.3 证明 Alg2.3 构造一棵以 Pr 为根的 DFS 树。
2.4 证明 Alg2.3 的时间复杂度为 O(m)。
2.5 修改 Alg2.3 获得一新算法,使构造 DFS 树的时间复杂性为 O(n)。
3.1 证明同步环系统中不存在匿名的、一致性的领导者选举算法。
3.2 证明异步环系统中不存在匿名的领导者选举算法。
3.9 若将环 R^rev 划分为长度为 j(j 是 2 的方幂)的连续片段,则所有这些片段是次序等价的。
第一次作业:安全性(safety)板书的思考题
思考:是否对于每一执行的每一配置都成立的断言/性质就是不变式呢?
【解】不一定。尽管 P P P 在所有配置中都为真,但除非有一个不变式 Q Q Q 可以推出 P P P,否则 P P P 不一定是 S S S 的一个不变式。
设 Q Q Q 是 S S S 的不变式,且 Q Q Q 可以推出 P P P,对于任给的 γ ∈ C \gamma \in C γ∈C ,那么 P P P 在 S S S 的每次执行的每一个配置中,都为真。
Comments on “on the proof of a distributed algorithm”: always-true is not invariant
第二次作业
(1).安全性(safety)板书:Ex
Ex:给出一个转移系统 S S S 和断言 P P P,满足 P P P 在 S S S 中总为真,但 P P P 不是 S S S 不变式的。
【解】
设转移方程 S S S:
一个整数变量 k k k,最初为 0;
有且只有一个操作:如果 k = 1 k=1 k=1,则 k : = 2 k:=2 k:=2。
定义断言 P P P 为 k < 2 k<2 k<2。 P P P 在 S S S 中总是真的,但是 P P P 不是不变式,因为(不可达的)状态 k = 1 k=1 k=1,其中 P P P 成立,被变换为 k = 2 k=2 k=2,其中 P P P 不成立。
(2).分布式算法 PPT ch33: P9 Ex
Ex:证明在引理2.6中,一个处理器在图 G G G 中是从 P r P_r Pr 可达的,当且仅当它曾设置过自己的 p a r e n t parent parent 变量。
【证明】
(1) 充分性:一结点从
p
r
p_r
pr 可达,则它曾设置过自己的
p
a
r
e
n
t
parent
parent 变量。
因为图
G
G
G 是由
p
a
r
e
n
t
parent
parent 和
c
h
i
l
d
r
e
n
children
children 确定的静态图,任一节点在收到
M
M
M 后才会加入到图中。即可达节点收到过
M
M
M,执行了
A
l
g
2.2
Alg2.2
Alg2.2 的第 5 行(upon receiving M from neighbor pj
)。由于是容许执行,所以第 7 行 (parent:=j
) 也会执行。
(2) 必要性:一节点设置过自己的
p
a
r
e
n
t
parent
parent 变量,则其从
p
r
p_r
pr 可达。
若
A
l
g
2.2
Alg2.2
Alg2.2 的第 7 行执行过了,因为是容许执行,则必然有第 5 行也执行过了。即节点收到过
M
M
M。而
M
M
M 又是从
p
r
p_r
pr 发出的,所以该节点是从
p
r
p_r
pr 可达的。
(3).分布式算法 PPT ch33: P30 Ex2.1, Ex2.3, Ex2.4, Ex2.5
Ex2.1: 分析在同步和异步模型下, c o n v e r g e c a s t convergecast convergecast 算法的时间复杂性。
【解】
(1) 在同步模型中
最坏情况下,算法执行的每一轮中只有一个
m
s
g
msg
msg 传递,而此时生成树汇聚最大值的算法最多执行
n
−
1
n-1
n−1 轮(即生成树中除了末端节点每一个节点只有一个子节点),也就是说同步情况下时间复杂度为
O
(
n
−
1
)
O(n-1)
O(n−1)。
(2) 在异步模型中
在异步模型的汇集算法的每个容许执行中,树中每个距离
p
r
p_r
pr 为
t
t
t 的处理器至多在时刻
t
t
t 接收消息
M
M
M,因此对于每个节点而言,它到它所有子节点中
t
t
t 最大的路径决定了它本身时间花费。因此在最坏情况下,仍应该是同步模型下的最坏情况,即生成树中除了末端节点每一个节点只有一个子节点,此时时间复杂度仍为
O
(
n
−
1
)
O(n-1)
O(n−1)。
Ex2.3:证明 A l g 2.3 Alg2.3 Alg2.3 构造一棵以 P r P_r Pr 为根的 D F S DFS DFS 树。
【证明】
-
A l g 2.3 Alg2.3 Alg2.3 构造的图 G G G 必然是连通的。
假设 G G G 存在邻居节点 P j P_j Pj 和 P i P_i Pi, P j P_j Pj 从 P r P_r Pr 可 达,但 P i P_i Pi 从 P r P_r Pr 是不可达的。
则:
(1) P i P_i Pi 的 p a r e n t parent parent 为空;
(2) P i P_i Pi 不为 P j P_j Pj 的 c h i l d child child。
因为:
G G G 里一结点从 p r p_r pr 可达当且仅当它曾设置过自己的 p a r e n t parent parent 变量。
所以:
(1) P j P_j Pj 的 p a r e n t parent parent 必然设置过了;
(2) P i P_i Pi 的 p a r e n t parent parent 为 n i l l nill nill;
(3) P i P_i Pi 属于 P j P_j Pj 的 u n e x p l o r e d unexplored unexplored 集合。
而算法的第 11 (
if unexplored ≠φ then
) 和 14 行 (send M to Pk
) 决定了 P j P_j Pj 会向 P i P_i Pi 发送 M M M,使得 P i P_i Pi 的 p a r e n t parent parent 成为 P j P_j Pj, P i P_i Pi 成为 P j P_j Pj 的 c h i l d child child。
这与假设矛盾,故 P i P_i Pi 必然也是从 P r P_r Pr 可达的。 -
A l g 2.3 Alg2.3 Alg2.3 构造的图 G G G 必然是无环的。
假设 G G G 中有一个环, P 1 , P 2 , . . . . , P i , P 1 P_1,P_2,....,P_i,P_1 P1,P2,....,Pi,P1。令 P 1 P_1 P1 是该环中最早接收到 M M M 的节点。则 P i P_i Pi 是从 P 1 P_1 P1 可达的,且 P 1 P_1 P1 的 p a r e n t parent parent 是 P i P_i Pi, P 1 P_1 P1 是 P i P_i Pi 的 c h i l d child child。而 P i P_i Pi 在收到 M M M 后,向 P 1 P_1 P1 发送 M M M。因为 P 1 P_1 P1 的 p a r e n t parent parent 已经不为空,所以 P 1 P_1 P1 收到来自 P i P_i Pi 的 M M M 时,根据第 16 行 (
else send to Pj
) 代码, P 1 P_1 P1 会向 P i P_i Pi 放回一个<reject>
信息,不会将 P i P_i Pi 设为 p a r e n t parent parent。而 P i P_i Pi 未收到 P 1 P_1 P1 返回的<parent>
信息,也不会将 P 1 P_1 P1 设为 c h i l d child child。与假设矛盾,故 G G G 是无环的。 -
图 G G G 是一棵 D F S DFS DFS 树。
只需证明在有子结点与兄弟结点未访问时,子结点总是先加入树中。
设有节点 P 1 P_1 P1, P 2 P_2 P2 和 P 3 P_3 P3。 P 2 P_2 P2 和 P 3 P_3 P3 是 P 1 P_1 P1 的直接相邻节点。 P 1 P_1 P1 在第 12~14 行中先选择 向 P 2 P_2 P2 发送 M M M,则 P 1 P_1 P1 当且仅当 P 2 P_2 P2 向其返回一个<parent>
(第 17 行,第 22 行)时才 有可能向 P 3 P_3 P3 发送 M M M。而 P 2 P_2 P2 仅在其向所有的相邻节点发送过 M M M 后才会向 P 1 P_1 P1 返回<parent>
(第 19~21 行)。 所以 P 2 P_2 P2 的子节点是永远先于 P 3 P_3 P3 加入树中的,即 G G G 是 D F S DFS DFS 树。
Ex2.4:证明 A l g 2.3 Alg2.3 Alg2.3 的时间复杂性为 O ( m ) O(m) O(m)。
【证明】
(1) 同步模型:每一轮中,根据算法,有且只有一个消息 (M or Parent or Reject
) 在传输,算法的第 6 、14、16、20、25 行发送消息的语句中可以发现:消息只发往一个处理器结点,除根结点外,所有的处理器都是收到消息后才被激活,所以,不存在多个处理器在同一轮发送消息的情况,所以时间复杂度与消息复杂度一致。
(2) 异步模型:在一个时刻内至多有一个消息在传输,因此,时间复杂度也与消息复杂度 一致。消息复杂度:对任一边,可能传输的消息最多有 4 个,即 2 个
M
M
M ,2 个相应
M
M
M 的消息 (Parent or Reject
),所以消息复杂度为
O
(
m
)
O(m)
O(m)。
综上,该算法的时间复杂度为 O ( m ) O(m) O(m)。
Ex2.5:修改 A l g 2.3 Alg2.3 Alg2.3 获得一新算法,使构造 D F S DFS DFS 树的时间复杂性为 O ( n ) O(n) O(n),并证明。
【解】
两种考虑方式:
(1) 在每个处理器中维护一本地变量,同时添加一消息类型,在处理器 P i P_i Pi 转发 M M M 时,发送消息 N N N 通知其余的为访问过的邻居,这样其邻居在转发 M M M 时便不会向 P i P_i Pi 转发。
(2) 在消息
M
M
M 和 <parent>
中维护一发送数组,记录已经转发过
M
M
M 的处理器名称。
两种方式都是避免向已转发过 M M M 的处理器发送消息 M M M,这样 D F S DFS DFS 树外的边不再耗时,时间复杂度也降为 O ( n ) O(n) O(n)。
(4).分布式算法 PPT ch34 P9 Ex3.1, Ex3.2
Ex3.1:证明同步环系统中不存在匿名的、一致性的领导者选举算法。
【证明】
在匿名系统中,每个处理器在系统中具有相同的状态机。
由
L
e
m
m
a
3.1
Lemma3.1
Lemma3.1 可知,设算法
A
A
A 是使环上某个处理器为 leader
的算法。因为环是同步的,且只有一种初始配置。
在每轮里,各处理器均发出同样的
m
e
s
s
a
g
e
message
message,所以在各轮里各个处理器接收到相同的
m
e
s
s
a
g
e
message
message,则状态改变也相同。所以所有处理要么同为 leader
,要么同时不为 leader
。
故同步环系统中匿名的、一致性的领导者选举算法的算法是不存在的。
Ex3.2:证明异步环系统中不存在匿名的领导者选举算法。
【证明】
每个处理器的初始状态和状态机相同,除了接收消息的时间可能不同外,接收到的消息序列也相同,所以最终处理器的状态也是一致的。
由于处理器处理一条消息至多需要 1 单位时间,若某时刻某个处理器宣布自己是 leader
,则在有限时间内,其它处理器也会宣布自己是 leader
。
故异步环系统中匿名的领导者选举算法是不存在的。
(5).分布式算法 PPT ch35 P39 Ex3.9
Ex3.9:若将环 R n r e v \mathbf R^{rev}_n Rnrev 划分为长度为 j j j ( j j j 是 2 的方幂) 的连续片断,则所有这些片断是序等价的。
对一个整数
P
(
0
≤
P
≤
n
−
1
)
P(0≤ P ≤ n − 1)
P(0≤P≤n−1),可以表示为:
P
=
∑
i
=
1
m
a
i
⋅
2
i
−
1
P = \sum_{i=1}^{m} a_i \cdot 2^{i-1}
P=i=1∑mai⋅2i−1
其中
m
=
l
g
n
m=lg n
m=lgn
则有
r
e
v
(
P
)
=
∑
i
=
0
m
a
i
⋅
2
m
−
i
.
rev(P) = \sum_{i=0}^{m}a_i \cdot 2^{m-i}.
rev(P)=i=0∑mai⋅2m−i.
设
P
P
P、
Q
Q
Q 在同一个片段上,
P
1
P1
P1、
Q
1
Q1
Q1 在同一片段上,且设这两个片段时相邻的,由模运算的加法可得:
P
1
=
P
+
l
P1=P+l
P1=P+l
Q 1 = Q + l Q1=Q+l Q1=Q+l
式中 l l l 表示片段的长度, l = 2 k l=2^k l=2k。
又
P
=
∑
i
=
1
m
a
i
⋅
2
i
−
1
P=\sum_{i=1}^{m}a_i\cdot2^{i-1}
P=i=1∑mai⋅2i−1
Q = ∑ i = 1 m b i ⋅ 2 i − 1 Q=\sum_{i=1}^{m}b_i\cdot2^{i-1} Q=i=1∑mbi⋅2i−1
且
P
P
P、
Q
Q
Q 在同一个片段上,有
∣
P
−
Q
∣
<
l
=
2
k
|P-Q|<l=2^k
∣P−Q∣<l=2k
所以存在
r
(
0
≤
r
≤
k
)
r(0≤ r ≤ k)
r(0≤r≤k),满足
a
r
≠
b
r
a_r \neq b_r
ar=br。否则,
∣
P
−
Q
∣
≥
l
|P − Q| \geq l
∣P−Q∣≥l。这与
P
P
P、
Q
Q
Q 在同一个片段上矛盾。 设
s
=
m
i
n
{
r
}
s = min\{r\}
s=min{r},则根据
r
e
v
(
P
)
,
r
e
v
(
Q
)
rev(P),rev(Q)
rev(P),rev(Q) 的表示方法可得:
s
i
g
n
(
r
e
v
(
P
)
−
r
e
v
(
Q
)
)
=
s
i
g
n
(
a
s
−
b
s
)
sign(rev(P)-rev(Q))=sign(a_s-b_s)
sign(rev(P)−rev(Q))=sign(as−bs)
而
P
1
=
P
+
l
=
∑
i
=
1
m
a
i
⋅
2
i
−
1
+
2
k
P1=P+l=\sum_{i=1}^m a_i\cdot2^{i-1}+2^k
P1=P+l=i=1∑mai⋅2i−1+2k
Q 1 = Q + l = ∑ i = 1 m b i ⋅ 2 i − 1 + 2 k Q1=Q+l=\sum_{i=1}^m b_i\cdot2^{i-1}+2^k Q1=Q+l=i=1∑mbi⋅2i−1+2k
显然,
P
P
P 与
P
1
P1
P1 的前
k
k
k 位相同,
Q
Q
Q 与
Q
1
Q1
Q1 的前
k
k
k 位相同。由
0
≤
s
≤
k
0 \leq s \leq k
0≤s≤k 得
s
i
g
n
(
r
e
v
(
P
1
)
−
r
e
v
(
Q
1
)
)
=
s
i
g
n
(
a
s
−
b
s
)
sign(rev(P1) - rev(Q1)) = sign (a_s - b_s)
sign(rev(P1)−rev(Q1))=sign(as−bs)
这两个相邻片段是序等价的,根据等价的传递关系,可得所有的片段都是次序等价的。