Networking 具有不同实现的循环DHT

Networking 具有不同实现的循环DHT,networking,probability,dht,Networking,Probability,Dht,我在考试中有以下问题: 这个问题涉及一个循环DHT,其中每个对等节点只跟踪其前一个节点和后一个节点。没有可用的快捷方式。 请考虑下面的三个结构。在所有这三种结构中,节点ID的范围是 从0到N− 1以及密钥ID。在给定的时间内,参与的对等节点数 DHT是M,并且所有对等节点都很容易知道这个数字。(键,值)中的“值” pair是独立存储感兴趣数据的节点的ID集 C-1:每个存储的(键、值)对(k、v)都存储在一个随机节点上(从当时在线的节点中) C-2:每个存储的(键,值)对(k,v)都存储在一个节

我在考试中有以下问题:

这个问题涉及一个循环DHT,其中每个对等节点只跟踪其前一个节点和后一个节点。没有可用的快捷方式。 请考虑下面的三个结构。在所有这三种结构中,节点ID的范围是 从0到N− 1以及密钥ID。在给定的时间内,参与的对等节点数 DHT是M,并且所有对等节点都很容易知道这个数字。(键,值)中的“值” pair是独立存储感兴趣数据的节点的ID集

C-1:每个存储的(键、值)对(k、v)都存储在一个随机节点上(从当时在线的节点中)

C-2:每个存储的(键,值)对(k,v)都存储在一个节点上,该节点的ID由k mod M给出

C-3:每个存储的(键、值)对(k,v)存储在ID为k(如果在线)的节点或其最近的在线后继节点(带环绕)上

(a) 在线对等方希望找到一个密钥k以获得相应的值。问题是什么 这三种结构中每一种结构的操作复杂性(即,大oho())。如果你是 不熟悉O()表示法,只需说明启动的查询的平均数量

(b) 联机节点启动对密钥k的查询,并获取一组两个节点ID作为返回。 这些节点中至少有一个在线的可能性有多大(这样查询节点就可以 感兴趣的数据?为每种结构提供答案;你的答案可能是 k、 M、N或任何其他参数

(c) 如果打开,您对上述部分(每个结构)的(数字)答案是什么 平均30%的节点处于联机状态

我对我写的答案感到困惑。我想知道我所做的是否正确。 我写了以下答案:

a) C1:O(N)-如果有N个节点在线

C2:O(M)-如果钥匙从0到M-1

C3:O(1)-密钥为k的最坏情况节点处于脱机状态,下一个节点处于脱机状态

b) p=在线的概率

C1:2C1*p*(1-p)+2C2*p

C2:2C1*p*(1-p)+2C2*p

C3:2C1*p*(1-p)+2C2*p

c) C1:2C1*0.3*0.7+2C2*0.3

C2:2C1*0.3*0.7+2C2*0.3

C3:2C1*0.3*0.7+2C2*0.3

a)对于C1,您已经说明了M=N时情况的答案,这可能并不总是成立,因此您应该将其更改为O(M),因为它将搜索所有在线节点,因为其中任何一个节点都可以随机持有密钥

C2:O(M)和你所说的理由都是正确的

C3:这也将是O(M),因为平均而言,您必须遍历整个DHT才能找到密钥

(b) 你对二项式定理使用了错误的公式。 正确的公式是:

nCk*p^k*(1-p)^(n-k)

所以你的答案应该是:

C1:2C1*p*(1-p)+2C2*p^2

C2:2C1*p*(1-p)+2C2*p^2

C3:2C1*p*(1-p)+2C2*p^2

另外,请注意,这里p=M/N(因为N个节点中有M个节点在线)

(c) 现在p=0.3

C1:2C1*0.3*0.7+2C2*0.3^2=0.51

C2:2C1*0.3*0.7+2C2*0.3^2=0.51


C3:2C1*0.3*0.7+2C2*0.3^2=0.51

谢谢您的帮助!