## 2 Related Work
### Clustering Approaches for Energy-Efficient NB-IoT  
Clustering techniques have proven to be beneficial in terms of enhancing the energy efficiency of the Internet of Things networks. They have also proven to be very effective in balancing the energy consumption of the network. This is because they allow an offload of the Bases Station which, despite the increasing number of nodes, results in more reliable communications. However, one of the major challenges of clustering has been the fact that the use of fixed cluster heads has proven to shorten the life cycle of the network. This is because most NB-IoT nodes are energy limited as they run on batteries, Therefore, using some selected NB-IoT nodes as relays to a group of others poses a serious energy burden to these which eventually die. As the later die, this results in the inability of some NB-IoT nodes to reach the BS. This problem, also often qualified as a \"hotspot problem\" has triggered various research interests within the community of scientists. The present section takes us through the different clustering approaches as applied to the specific case of NB-IoT systems in an attempt to resolve this issue. Several energy-efficient techniques have been developed for IoT networks in general and NB-IoT networks in particular. Some of the key techniques include but are not limited to the following,  
* Low-Energy Adaptive Clustering Hierarchy (LEACH) and its variants: LEACH is s a hierarchical technique that consists of nodes transmitting data packets to cluster heads which first aggregate the received packets, compress the aggregated data before forwarding it to the base station (sink). In LEACH, every single node uses a stochastic algorithm at each transmission round to determine if it is its turn to become a cluster head. Nodes that have been cluster heads cannot become cluster heads again for \(P\) rounds, where \(P\) is the desired percentage of cluster heads. Thereafter, each node has a \(1/P\) probability of becoming a cluster head again. At the end of each round, each node that is not a cluster head selects the closest cluster head and joins that cluster. The cluster head then creates a schedule for each node in its cluster to transmit its data. One major weakness of LEACH as applied to NB-IoT systems is that it is only reliable under the condition that the BS is within the radiation range of each NB-IoT node. Due to their geographical dispersion and mostly randomized locations in some applications, some NB-IoT nodes happen to be at non-communication range to the BS when their radio is operated in low-power (energy saving) modes. Therefore, most of the time, if the nodes' firmware is smart enough, it adjusts the radio transmission power to its maximum for the communication round in which a specific node plays the role of cluster head. Considering the multiple numbers of data packets from all the neighboring nodes and assuming that more and more NB-IoT nodes are added to the network (massive NB-IoT systems), that specific NB-IoT node depletes its residual energy and dies, this despite any form of network coding technique applied to save energy. There are other variants of the LEACH protocol that are proposed as a mechanism to enhance its performance. These include the LEACH centralized (LEACH-C) protocol [32]. The LEACH-C scheme is meant to improve the CH allocation in LEACH by using a centralized control algorithm to distribute the CH nodes throughout the system. In LEACH-C, the BS computes the average residual energy of the nodes across the network and only allows the nodes with residual battery powers equivalent to the computed average residual energy to work as CH in each round. The LEACH with fixed clusters (LEACH-F) is another centralized variant of LEACH.18 In LEACH-F, the setup phase is not required at all rounds, only the CH position rotates among the nodes. The data fusion oriented clustered routing protocol based on LEACH (DF-LEACH) is another variant of LEACH protocol [33].