种子选取

2021-11-16 种子选取 大约 2 分钟

# 种子选取

在最新版本中,采用了介数中心度算法来选取种子。因为介数中心度应用较为广泛,你可以高效地利用你熟悉的计算框架。在后期将对算法进行调整,采用修剪过的关系图谱,以减少链上数据量。

# 介数中心度

介数中心度反映了用户在网络中的桥梁作用,通过某节点的最短路径越多,则中心度越高。本文更侧重于描述与常见计算框架的差异之处。

计算上图中 C 点的中心度,我们获取经过 C 的所有最短路径、端点间最短路径条数,并计算最终得分。

最短路径 总数 得分
A - B - C - E 2 50
A - B - D - E 2 50
B - C - E 1 100
D - C - E 1 100

路径 A - B - C - E,由于端点 AD 之间的最短路径有 2 条,因此各自的得分为 100 / 2 = 50 。此处的 100 为精度,意味着保留小数点后两位,因此当其大于等于 100 时,该数据是无效的。

因此,你不应当直接使用任何通用计算框架的介数中心度数据,他们存在精度问题,并且很多框架采用的是近似算法。你可以使用他们快速计算临时的中心度,找出中心度最高的一批节点作为种子,再计算每个种子节点距其他所有节点的所有最短路径,最后再计算精确的得分。

提示

通过常数 maxSeedCount 获得最多种子用户数量,上传分值过低的种子节点,将无法获取奖励。如果排名最后的分值相同,则按照领取收益的时间来确定。

提示

在添加种子候选人前,你应当准备好应对挑战的数据,以免来不及准备数据错过窗口期,导致不必要的损失。不过如果你的数据准确,这种情况应该非常罕见,因为有其他用户纠正错误的挑战。

# 增加种子候选人

确定种子后,你可以通过调用 zdRefreshSeeds.add(target, score) 来添加一个种子候选人。需要确保你的账户余额足够抵押,系统会自动扣除。

# 领取收益

种子的收益领取,需要在所有种子被确认后,这要求所有针对种子的挑战全部完成并领取。调用 zdRefreshSeeds.harvestSeed(seed) 即可领取,系统将会把你的抵押金额和收益发送给你。

上次编辑于: 2021年11月16日 23:48
贡献者: DarkingLee