圆形DHT具有不同的实现

时间:2016-10-31 04:49:40

标签: networking probability dht

我的考试中有以下问题:

此问题涉及循环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来获得相应的值。是什么 在三种结构的每一种中,该操作的复杂性(即,大哦O())。如果你是 不熟悉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

1 个答案:

答案 0 :(得分:1)

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