基于leader-follower算法的超级节点研究(2)
时间:2012-01-26 13:45来源:网络(转载) 作者:王小娟 周竹荣 点击:次
整个?P2P?网可用一个无向图G来表示,其中?P2P?网络节点构成图的节点,节点之间的逻辑连接就是图的边。G=(V,E)是一个无向图。其中V={V1,V2,,Vi}此处是否应该为V={V1,V2,,Vi},请明确。是节点集,E={E1,E2,,Ej}此处是
整个?P2P?网可用一个无向图G来表示,其中?P2P?网络节点构成图的节点,节点之间的逻辑连接就是图的边。G=(V,E)是一个无向图。其中V={V1,V2,…,Vi}此处是否应该为“V={V1,V2,…,Vi}”,请明确。是节点集,E={E1,E2,…,Ej}此处是否应该为“E={E1,E2,…,Ei}”,请明确。另外V与E的下标,均用了“i”,这可能在数目表示上会相同,请对此作相应调整。是节点之间逻辑连接的边集,图G=(V,E)是簇C1,…,Cq的集合。簇内普通节点和超级节点之间通过式(4)计算其语义相似度,建立连接。??
簇(Cluster)可形式化定义为:?
?Cluster={ClusterID,Sni,SubsetOfOrdinaryNodeSet}?
1)ClusterID。簇的唯一标识。?
2)Sni。簇中起领导作用的超级节点。?
3)SunsetOfOrdinaryNodeSet。和簇中超级节点语义相似的普通节点集。?
在基于超级节点的对等网中,Sni代表超级节点,形式化定义为:?
SuperNode=(SnID,C,IC)?
SuperNodeSet={Sn1,Sn2,…,Snk}?
且满足以下三个条件:?
1)每一个Ci都是节点集(?Ci,Ci?V)的非空子集,且?∪?i=1qCi=V;?
2)任意属于相同簇Ci的节点,1≤i≤qi,节点和簇Ci的领导者超级节点,都是通过式(4)计算,其语义是相似的;?
3)任意两个属于不同的簇(例如Ci和Cj)的节点,它们是没有语义相似的节点。?
定义3 通用类节点。通用类节点(?General Class Node, GN?)是一个虚拟节点,其作用是将与各超级节点语义不匹配的新节点vi,交由?GN?管理。这些节点构成一个集合GN={v1,v2,…,vi},|GN|=n表示GN中节点的数目。?
定义一个Max值来判断GN中的节点聚簇分裂时间,??vi∈?V:|GN|≥Max时,GN中节点根据语义相似度开始分裂,然后聚簇。??
2.2 算法思想?
文献[3]采用leader-follower算法创建超级节点:?对每个新到来的节点v,计算其语义相似度,如果存在与之匹配的超级节点SN,则将v连接到SN;否则,则以vu此处是否应该为“v”?请明确。构造一个新的超级节点。?
这种方法的效率较低,并且所选择的超级节点良莠不齐。例如有k个新进节点,假设其语义相似度互不匹配,且不存在超级节点与之匹配,则文献[3]的方法会生成k个新的超级节点,且不能保证每个超级节点的性能都是最优的。??
本文对文献[3,5]的方法进行改进:?
1)提出了通用类节点GN的概念,GN是一个特殊的超级节点,该节点语义相似度为零,只有管理普通节点的功能。如果新加入节点和超级节点之间语义不匹配,则新节点都交给GN管理。?
2)当GN管理的节点达到了一定的规模,对GN进行分裂;对GN所管理的普通节点,根据语义相似度进行聚簇;对簇中的节点,采用合并排序算法计算出其超级节点,从而形成一个新簇;对于不能聚簇的普通节点,仍然由通用类节点管理。?
假设,若新到节点有语义匹配的超级节点,则将新节点加入到该超级节点中;否则加入到通用类节点,交由通用类节点管理。因此,本文方法的总体结构如图1所示。?
2.2.1 算法改进?
本文提出一种改进的算法——I_LF (Improved Leader-Follower),引入通用类节点?GN?,如果新加入节点和超级节点之间语义不匹配,则交由通用类节点管理,当通用类节点管理的节点数达到一定规模后,采用分裂算法将其分裂为若干语义相似簇,最后用合并排序算法从中选择最优节点作为超级节点。?算法中Sni是第i个聚簇中心,η表示学习速度,θ代表阈值。具体算法描述如算法1。??
算法1 I_LF算法。
程序前
?
Begin initialize ?η,θ??
?SnID?=-1?
for each ?Sni? in ?SuperNodeSet??
?i?=1,?found?=false?
?Sni←x??
Do 接受新的?x??
if‖?x?-?Sni?‖≤?θ??
then ?Sni←Sni+ηx?,?found?=true?
if ?SnID?≥0?
?ClusterID?=get ?Cluster??id?? from ?Sn?? id ??(?SnID?)?
Until 无其他模式?
If not found?
?GN←x?//引入通用类节点?
Else return ?GN??
End
程序后
2.2.2 基于合并排序算法的超级节点?
?为解决文献[3]中超级节点性能差异大的问题,本文采用合并排序选择算法。以节点的在线时长、计算能力和存储能力三个参数为依据,选择出性能最优的节点作为超级节点。合并排序算法用在初始化的时候选择超级节点和对通用类节点GN中的节点语义聚簇后从新簇中选择超级节点。?
本文定义表征超级节点Sni性能的参数集为Sni={Ci,Si,Ti}分别表示节点的计算能力、存储能力和在线时间。?
根据软件系统自动记录的在线时间与上线次数的比值来计算在线时长,计算公式[6]如式(5):?
uptimeAVE=uptime/time(5)?
根据文献[11],本文用式(6)来衡量超级节点的性能,如式(6):?
Merit[vi]=α×capacity+β×uptimeAVE(6)?
其中:capacity包含节点的计算能力和存储能力,它表示节点对新来的信息进行处理的能力,在所有节点的集合S中,本文根据它们的capacity与uptimeAVE之和为依据来选择超级节点;α和β分别为capacity和uptime的权重,并且α+β=1。权重的信息可以根据侧重点而设定。把所有的Meri[vi]进行排序,选择最好的一个作为超级节点。具体算法如算法2所示。??
算法2 合并排序算法。
程序前
?
??int??[]? arr=?{?Merit?[?v1?]?,Merit?[?v2?]?,…,Merit?[?vi?]}Merit?[?vi?]?=α×capacity+β×uptimeAVE? (责任编辑:南粤论文中心)
------分隔线----------------------------