HEED分簇算法包括以下几个步骤:
l)初始化阶段:每个节点计算其包括计算邻居节点的个数,以及自身的AMRP的值,并且设定初始的成为簇头节点的概率。
2)迭代阶段:每个节点在每轮的循环中如果发现自身周围有临时簇头节点则进行相应的判断:如果自身也是临时簇头(tentativeclusterhead),并且自身的AMRP的值最小,则宣布自身为最终簇头,否则进行下一轮;如果邻居节点中没有节点宣布自己为临时簇头则自身按照一定的概率成为临时簇头。
备选簇头状态: 当节点 簇首比例< 1时, 节点为备选簇头状态, 若之后发现具有通信代价更小的簇头节点, 则其改变状态为普通节, 加入该候选簇头。
最终簇头状态: 当节点 簇首比例= 1时,节点作为最终簇头状态, 并向其邻居节点广播。
3)在迭代结束后,如果临时簇头的邻居中没有其他的临时簇头或者他们的AMRP都比自身小,则该临时簇头关宣布自身为最终的簇头(finalcluster head),其他节点周围若没有发现最终的簇头节点也宣布自身为最终的簇头节点。否则加入AMRP值最小的临时簇头。