如何计算多个节点之间的最小交换时间?
How to calculate a minimum exchange time among multiple nodes?
这是关于开发分布式共识。
假设我们有 N 个节点
( N1, N2, ..., Nn ),
每个节点都有不同的值
( A1, A2 , ..., An ).
这些节点可以相互通信,如果它的值大于另一个节点的值,则替换它们。
例如,如果我是 N1,当我与 N2 通信时,我发现 A2 < A1,那我就把我的值换成A2
我需要找到最少的交换次数,以便超过一半的节点 ( > n / 2 ) 保持尽可能小的值。
交换是两个节点之间的单一通信,导致可能导致两个相关节点之一的值发生变化,当且仅当另一个具有不同且更小的值。
鉴于假定的属性,其中一个是值 A
n 被假定为最初不同,解决方案是从所要求的严格占主导地位的多数中得出的MAJ
实际上是,因此设置交换量的最小值(最乐观的情况).xg!
-所需的操作,它以归纳方式设置 [TIME]-域复杂度,如下所示:
n == 2
MAJ ~ 2 _(1)_----->----(2).xg! _1_
xg! = 1
(3)
/ \
/ \
/ \
/ \
/ \
n == 3 / \
MAJ ~ 2 _(1)_----->----(2).xg! _1_
xg! = 1
.xg!_1_(4)-----------(3)
|. . |
| . . |
| . . |
^ . . |
| . . |
n == 4 |. , |
MAJ ~ 3 _(1)_----->----(2).xg! _1_
xg! = 2
________________________________________________________
n == 5 | 6 | 7 | 8 | 9| 10 | 11 | ... | n
MAJ ~ 3 | 4 | 4 | 5 | 5| 6 | 6 | ... | 1 + n // 2
xg! = 2 | 3 | 3 | 4 | 4| 5 | 5 | ... | n // 2
这是关于开发分布式共识。
假设我们有 N 个节点
( N1, N2, ..., Nn ),
每个节点都有不同的值
( A1, A2 , ..., An ).
这些节点可以相互通信,如果它的值大于另一个节点的值,则替换它们。
例如,如果我是 N1,当我与 N2 通信时,我发现 A2 < A1,那我就把我的值换成A2
我需要找到最少的交换次数,以便超过一半的节点 ( > n / 2 ) 保持尽可能小的值。
交换是两个节点之间的单一通信,导致可能导致两个相关节点之一的值发生变化,当且仅当另一个具有不同且更小的值。
鉴于假定的属性,其中一个是值 A
n 被假定为最初不同,解决方案是从所要求的严格占主导地位的多数中得出的MAJ
实际上是,因此设置交换量的最小值(最乐观的情况).xg!
-所需的操作,它以归纳方式设置 [TIME]-域复杂度,如下所示:
n == 2
MAJ ~ 2 _(1)_----->----(2).xg! _1_
xg! = 1
(3)
/ \
/ \
/ \
/ \
/ \
n == 3 / \
MAJ ~ 2 _(1)_----->----(2).xg! _1_
xg! = 1
.xg!_1_(4)-----------(3)
|. . |
| . . |
| . . |
^ . . |
| . . |
n == 4 |. , |
MAJ ~ 3 _(1)_----->----(2).xg! _1_
xg! = 2
________________________________________________________
n == 5 | 6 | 7 | 8 | 9| 10 | 11 | ... | n
MAJ ~ 3 | 4 | 4 | 5 | 5| 6 | 6 | ... | 1 + n // 2
xg! = 2 | 3 | 3 | 4 | 4| 5 | 5 | ... | n // 2