资源描述:
《载体选举算法执行的代码解析》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、接收到NBREQ的过程收到NBREP上图:收到HOLD的新载体下图:收到HOLD的就载体一些新定义的函数:nbr()held()//表示函数变量所对应的节点ID所命令的持有hold信息的节点。nacked()//表示函数变量所对应的节点ID所命令的持有nack信息的节点resp_nbr_merg()//respectiveneighbormerge对数组中每一个节点对应的的nbr列表进行合//并,返回这个数组merg()//merge将邻节点列表信息合并函数contr_t_merg()//Contrasttomerge对照合并函数contr_t_ilim()//contra
2、sttoiliminate对比删除函数recruit()//新成员函数card()//数组自变量计数函数ret_argmax()//returnargmax使函数值最大的自变量,返回一个自变量构成的数组nb_resp_lookup()//respectively对邻节点数组进行分别查找,每个节点的邻节点分别返//回一个关于该节点的邻节点列表数组一些新定义的集合名称:cand_carrierseennew_carriecarriereliminated一些新定义的节点名称:S表示源节点X表示中间节点D表示目的节点源节点在执行“载体选举”步骤时的一般算法cand_carrier
3、:=nbr(S);seen:=contr_t_merg(nbr(S),{S});carrier:={“”};while(new_carrier:=ret_argmax(card(recruit({cand_carrier},{seen})))!={“”})do{carrier:=contr_t_merg({carrier},{new_carrier});seen:=contr_t_merg({seen},{new_carrier},resp_nbr_merg(new_carrier));cand_carrier:=contr_t_ilim({cand_carrier},{n
4、ew_carrier});}while(nb_resp_lookup({cand_carrier},{cand_carrier})=={“”})do{carrier:=contr_t_merg({carrier},{cand_carrier});}eliminated:=contr_t_ilim({cand_carrier},{carrier});中间节点在执行“载体选举”步骤时的一般算法cand_carrier:=contr_t_ilimi(nbr(Y),nbr(X),{X},{S},held(Y),nacked(Y));seen:=contr_t_merg(nbr(Y)
5、,nbr(X),{X},{Y},{S},held(Y),nacked(Y));carrier:={“”};while(new_carrier:=ret_argmax(card(recruit({cand_carrier},{seen})))!={“”})do{carrier:=contr_t_merg({carrier},{new_carrier});seen:=contr_t_merg({seen},{new_carrier},resp_nbr_merg(new_carrier));cand_carrier:=contr_t_ilim({cand_carrier},{ne
6、w_carrier});}while(nb_resp_lookup({cand_carrier},{cand_carrier})=={“”})do{carrier:=contr_t_merg({carrier},{cand_carrier});}eliminated:=contr_t_ilim({cand_carrier},{carrier});