Algorithm: Find_Path(G, S, D) |

Input: G = (V, E) |

Edge-weighted graph |

(network topology) |

with an SNR value |

on each link: |

S: source node; |

D: destination node. |

Output:* *Best path array from S to D. |

Step 1: For every edge (u,v) in E(G), |

compute cooperative metric of |

link (u,v), (Link PDR/ |

Throughput/Energy Efficiency) |

based on the given SNR values, |

for each potential relay with |

different MAC schemes (e.g., |

*CoopMAC* and *C-ARQ*). |

Step 2: Compare all cooperative metrics, |

select the optimal value as |

cooperative weight, w*⋆ *(u,v). |

Step 2: Compare w*⋆ *(u,v) with non- |

cooperative link metric w(u,v), |

select the better value as |

new weight, w′(u,v). |

Step 4: Generate G′ = (V,E′) with |

new weight matrix, w**′**. |

Step 5: Use the modified Dijkstra’s |

algorithm to find the best |

path from S to D. |