The Pachira lotree------我们M2阶段的Reward算法
在Team Project的M1阶段,我们已经搭好了软件平台,即拥有了能够翻译网页的客户端。在M2阶段,Reward是我们的一个主要任务,下面我们来聊一聊我们的Reward的算法。
首先解释一下我们在M2阶段的Reward的机制。Reward就是给为改进翻译质量做出了贡献的人奖励。而且,凡是使用我们软件并且将我们的软件介绍给自己身边的人都有机会获得奖励。举个例子说明一下:A同学邀请B同学使用我们的软件,B同学在注册的时候会填写A是他的邀请人。那么一旦B为翻译做出了贡献,A也将会获得相应的奖励。同时,邀请A使用软件的人也会获得相应的奖励。
在邀请行为发生和新用户进行注册的时候,我们会在数据库中记录下用户之间的邀请关系,新用户在注册的时候要填写是谁邀请了他。该关系我们用树形结构表示:树的节点表示用户,箭头表示邀请关系,例如 表示A邀请了B。数据库中的结构将如图1所示。
一旦被邀请加入的用户为改进翻译质量做出了贡献,除了他本人会获得奖励之外,我们会采用一定的算法,根据这个人为系统做出的贡献的大小,给邀请他加入的人一定的奖励。在上图中,如果E做出了贡献,那么邀请他加入的D会获得一定奖励,同时邀请D加入的C也有相应的奖励。需要说明的是,整个树的根节点“系统节点”不会分摊大家的贡献,保证大家的奖励会被100%分发出去。做出的贡献越多,自己获得的奖励越多,同时也可以为邀请自己加入的人带来奖励。
同时我们的系统能够防止恶意刷分的行为。具体来说,Eve注册了若干小号,不妨假设他注册了两个小号e1和e2,为自己的大号e获得更多奖励。假设e,e1,e2三个账号各自产生的贡献分别为C(e),C(e1),C(e2),这样一来,三个号获得的收益分别是L(e),L(e1),L(e2)。Eve精力有限,他对系统只能有C(Eve)=C(e)+C(e1)+C(e2)这么多贡献。那么利用我们的算法,Eve将C(Eve)这么多贡献全部用在他自己的一个大号e上所获得的奖励L(eve),要比他恶意刷分获得的奖励的总和,即L(e)+L(e1)+L(e2),要多。
更详细的算法细节,我们参考了Thomas Moscibroda的论文《Lottery Trees:Motivational Deployment of Networked Systems》。欢迎大家积极讨论~~