## 4 Repetition-Based Cooperative Broadcasting Scheme
### Initial Broadcasting  
When a vehicle on the road detects a dangerous or emergency situation, the corresponding application installed on the OBU of the vehicle generates a safety message immediately, referred to as _labeled packet_, and the vehicle becomes the source node of broadcasting, denoted as \(S\). Then, the source node broadcasts the labeled packet to its one-hop neighbors in its own time slot. Due to channel errors, some nodes in OHS of \(S\) fail to receive the labeled packet after \(S^{\prime}\) broadcasting, while the other nodes in OHS of \(S\) receive and decode the labeled packet successfully. The nodes that receive and decode the labeled packet successfully can help rebroadcast it to the nodes that fail to receive it along with \(S\). The nodes that fail to receive the labeled packet become the target nodes of rebroadcasting. In addition, each labeled packet has a lifetime, denoted as \(T_{life}\). If the packet delay is larger than \(T_{life}\), the message in the labeled packet will not be valid anymore. Thus, rebroadcasting of the labeled packet should be done in its lifetime. To perform the cooperative rebroadcasting, the source node broadcasts the cooperation pattern along with the safety message in the labeled packet to its one-hop neighbors. The cooperation pattern contains the IDs of the predicted target nodes, the required number \(K\) of helpers, and the required times \(M_{R}\) of retransmission. Usually, the method to find out which nodes do not receive the labeled packet after broadcasting relies on ACKs or negative acknowledgements (NACKs) sent back by the nodes in OHS of \(S\)[20, 29]. However, the introduction of an ACK/NACK mechanism inevitably incurs extra delay, which is not suitable for safety messages with the strict delay demand. Therefore, we propose a hidden-Markov-model (HMM)-based method to predict the target nodes, i.e., the nodes that most likely fail in receiving the labeled packet. Let \(\mathcal{D}_{P}\) denote the set of the predicted target nodes. As shown in Figure 4, a hidden Markov model consists of a hidden Markov sequence \(I\), \(I=(i_{1},i_{2},\ldots,i_{T})\) and an observation sequence \(O\), \(O=(o_{1},o_{2},\ldots,o_{T})\), where \(T\) is the length of observation [32, 33, 34]. The hidden Markov sequence is used to describe the state transition of the fading channel, while the observation sequence is used to describe the reception result of packets. The fading channel has \(n\) states [35, 36, 37]: \(s_{1},s_{2},\cdots,s_{n}\). \(A\) is used to denote the state transition matrix of the fading channel. If the channel is in state \(i\) during the current slot, it will either stay in state \(s_{i}\) with probability \(a_{ii}\) or move to state \(s_{j}\) during its own slot in the next frame with probability \(a_{ij}\). Thus, \(A\) is:  
\[A=\left[ \begin{array}{ccc}a_{11}&\cdots&a_{1n}\\ \vdots&\ddots&\vdots\\ a_{n1}&\cdots&a_{nn}\end{array} \right] \tag{4}\]  
The observation sequence has two states: _successful_ and _failed_. \(B\) is used to denote the observation probability matrix of the reception result of packets. If the channel is in state \(s_{i}\) during the current slot, the reception result of the packet is either _successful_ with probability \(b_{i1}\) or _failed_ with probability \(b_{i2}\). Thus, \(B\) is:  
Figure 3: Procedure of repetition-based cooperative broadcasting (RBCB) scheme: (**a**) initial broadcasting, (**b**) helper selection, (**c**) cooperative rebroadcasting. In addition, \(\pi\) is used to denote the initial state distribution of the channel state, \(\pi=[\pi_{1},\pi_{2},\cdots,\pi_{n}]\), where \(\pi_{1},\pi_{2},\cdots,and\)\(\pi_{n}\) represent the probabilities that the initial state of channel is \(s_{1},s_{2},\cdots,and\)\(s_{n}\) respectively. Therefore, a hidden Markov model \(\lambda\) can be described by a three-tuple, \(\lambda=(A,B,\pi)\). For any node \(z\) in the network, it measures the received power of the packet when it receives a packet from its neighbors.