## 3 Cooperative Communication Algorithms
### End-to-End Reliability Model  
Given duty cycle \(\mu\) and cooperative node \(K\), the probability formula for calculating the number of active cooperative nodes \(k\) is as follows:  
\[P_{k}=C_{k}^{k}\times\mu^{K-k}\times(1-\mu)^{k} \tag{1}\]  
Given \(k\) active cooperative nodes, the probability of successful transmission of the current hop is \(W_{k}\):  
\[W_{k}=P_{k}\times\left(1-f^{k}\right)=C_{k}^{k}\times\mu^{K-k}\times\left(1- \mu\right)^{k}\times\left(1-f^{k}\right) \tag{2}\] \begin{table}
\begin{tabular}{c c c} \hline \hline  & **Beaconless Geographic Routing** & **KCN** \\ \hline Number of potential forwarding & The number is uncertain and the & The quantity is k, and the \\ nodes per hop & reliability cannot be guaranteed & reliability can be predicted. \\  & Three-time handshake is required, & Reference nodes are selected \\ Delay of forwarding data & and the time is extended and & centrally, allocated slots are set, \\  & uncertain. & and the delay is smaller. \\ Remaining Energy of & Not considered & Will consider \\ Forwarding Node & & \\ Regular redistribution & No & Yes \\ Node dormancy & No & Yes \\ \hline \hline \end{tabular}
\end{table} 
Table 1: Comparison of KCN and beacon-free routing. Figure 1: Collaborative Node Communication. Assuming that the number of active cooperative nodes in hop \(j\) is \(k\), the sending failure rate of node \(k\) is \(f_{k}(j)\):  
\[f_{k}(j)=P_{k}\times f^{k}=C_{K}^{k}\times\mu^{K-k}\times(1-\mu)^{k}\times f^{k} \tag{3}\]  
Then, the failure rate of hop \(j\) is the sum of the failure rate of each node:  
\[f_{k}(j)=\sum_{k=1}^{k=K}f_{k}(j)=f_{1}(j)+f_{2}(j)+\cdots+f_{K}(j) \tag{4}\]  
The successful transmission rate of pick \(j\) is \(W(j)\):  
\[ \begin{array}{ll}W(j)&=1-f(j)\\ &=1-f_{1}(j)-f_{2}(j)\ldots-f_{K}(j)\\ &=1-C_{K}^{0}\times\mu^{K}-C_{K}^{1}\times\mu^{K-1}-C_{K}^{2}\times\mu^{K-2} \Big{(}1-\mu^{2}\Big{)}f^{2}\\ &\quad-\ldots-C_{K}^{K-1}(1-\mu)^{K-1}f^{K-1}-C_{K}^{K}(1-\mu)^{K}f^{K}\end{array}  \tag{5}\]  
\(C_{K}^{0}\times\mu^{K}\) means that all KCNs fail to sleep, and \(C_{K}^{1}\times\mu^{K-1}\) means that one node is active, but fails to send. \(C_{K}^{2}\times\mu^{K-2}\Big{(}1-\mu^{2}\Big{)}f^{2}\) denotes that this jump has two active nodes, but all send failed. By analogy, \(C_{K}^{K}(1-\mu)^{K}f^{K}\) means that all \(K\) nodes are active but fail to send. Therefore, end-to-end reliability \(W=W(1)\times\ldots\times W(j)\times\ldots\times W(H)\). It is assumed that the reliability of each hop is the same. \[W=W(j)^{H} \tag{6}\]  
For network users, it is considered that they prefer as little end-to-end delay as possible to get network services faster. It is assumed in this paper that the delay is the sum of the queuing delays of the links in the transmission path. According to the M/M/1 model, the queuing delay of link \((i,j)\in E\) is defined as:  
\[\tau_{i,j}=\frac{1}{c_{i,j}-u_{i,j}} \tag{7}\]  
The average queuing delay \(\tau_{p}^{s,d}\) of path \(p\in P^{s,d}\) is the sum of queuing delays of each hop, that is:  
\[\tau_{p}^{s,d}=\sum_{(i,j)\in E}\frac{\delta_{i,j}^{s,d}(p)}{c_{i,j}-u_{i,j}} \tag{8}\]  
When link \((i,j)\) is on path \(p\), \(\delta_{i,j}^{s,d}(p)\) is 1; otherwise, it is 0, and the end-to-end delay between source-destination \((s,d)\) is:  
\[\tau^{s,d}=\sum_{p\in P^{s,d}}\alpha_{p}^{s,d}\tau^{s,d} \tag{9}\]  
According to the network users' requirement of minimizing the expected delay, the average end-to-end delay of user \(s\) is defined as:  
\[\frac{1}{t(s)} \tag{10}\]  
Assuming that there are multiple users in the network, each user wants to get the shortest average end-to-end delay. Obviously, due to the overlap of end-to-end paths, one user may be affected by the delay of another user. As a participant in the game, the end-to-end delay is the only income indicator. In this paper, the user's income function is defined as:  
\[\Pi\frac{1}{s}\frac{1}{t(s)} \tag{11}\]The distribution of traffic on each path will be adjusted by the reasonable users to maximize their income function.