Skip to main content
. 2016 Sep 25;16(10):1576. doi: 10.3390/s16101576
Algorithm 2. MCH Selection (MCHS)
Run at any wireless node (e.g., u)
Input: Nmax
Output: The identifiers and approximate maximum transmission ranges of all neighbors
1. Initialize the state variable su as “undecided
2. for each entry (IDv, dv,u) in Lu,nei do initialize the state variable sv as “undecided
3. Compute node u’s Ru,intra according to the formulas (5) and (6)
4. Compute node u’s MCH eligibility metric MMu according to the Formula (7)
5. Initialize FLAG1 as true
6. for each entry (IDv, dv,u) in Lu,nei do
7.    if (sv == “undecided”) and (dv,u ≤ Ru,intra) then
8.     Compute node v’s MCH eligibility metric MMv according to the Formula (7)
9.  if (MMu < MMv) or (MMu == MMv && IDu > IDv) then FLAG1 = false
10.    end if
11. end for
12. if (FLAG1 == true) then
13.    Determine itself (i.e., node u) as the MCH and change the value of su as “decided MCH
14.    Broadcast the updated su to its neighbors to which the distance is not more than Ru,intra from it
15. else
16.    Set the timer tτ as τ
17.    Initialize FLAG2 as true
18.    while the timer tτ does not expire do
19.     if receive a state variable (e.g., sv) from any node (e.g., v) then
20.      if the received sv is “decided MCHthen
21.       Change the value of su as “decided non-MCH
22.       Broadcast the updated su to the neighbors to which the distance is not more than Ru,intra from u
23. FLAG2 = false
24. else update the initial value of sv kept in u as “decided non-MCH
25.      end if
26.     end if
27.    end while
28.    if (FLAG2 == true) then go to step 5
29. end if