Research Article

Efficient Congestion Mitigation Using Congestion-Aware Steiner Trees and Network Coding Topologies

Algorithm 1

Algorithm NC.
Algorithm NC ( 𝐺 , 𝑠 𝑖 , 𝑠 𝑗 , 𝑇 𝑖 𝑗 , 𝑇 ξ…ž 𝑖 , 𝑇 ξ…ž 𝑗 ) :
 (1) Find a Steiner tree πœ™ 𝑖 connects 𝑠 𝑖 to terminals in 𝑇 ξ…ž 𝑖
 (2) Find a Steiner tree πœ™ 𝑗 connects 𝑠 𝑗 to terminals in 𝑇 ξ…ž 𝑗
 (3) For each link 𝑒 ∈ 𝑇 ξ…ž 𝑖 βˆͺ 𝑇 ξ…ž 𝑗 update πœ‚ ( 𝑒 )
 (4) Find a Steiner tree  πœ™ that connects s 𝑖 to terminals in 𝑇 𝑖 𝑗
 (5) Assign zero cost to all edges in  πœ™
 (6) For each terminal 𝑑 ∈ 𝑇 𝑖 𝑗 let 𝑑 ( 𝑑 ) be the shortest distance between 𝑠 𝑗 and 𝑑
 (7) For all terminals 𝑑 ∈ 𝑇 𝑖 𝑗 in the increasing order of 𝑑 ( 𝑑 ) do:
 (8)  Let 𝐺 ξ…ž ( 𝑉 ξ…ž , 𝐸 ξ…ž ) be a graph formed from 𝐺 ( 𝑉 , 𝐸 ) by reversing all edges in 𝑃 𝑖 , 𝑑 , where 𝑃 𝑖 , 𝑑 is a path from 𝑠 𝑖 to 𝑑 in  πœ™
 (9)  Find shortest path 𝑃 𝑗 , 𝑑 from source 𝑠 𝑗 to terminal 𝑑 in 𝐺 ξ…ž ( 𝑉 ξ…ž , 𝐸 ξ…ž )
 (10)   Assign zero cost to all edges of 𝑃 𝑗 , 𝑑
 (11) For each edge 𝑒 ( 𝑣 , 𝑒 ) ∈ 𝑃 𝑗 , 𝑑   do
 (12)   If there exists an edge 𝑒 ξ…ž  πœ™ ( 𝑒 , 𝑣 ) ∈ , remove 𝑒 ξ…ž ( 𝑒 , 𝑣 ) from  πœ™
 (13)  Otherwise, add 𝑒 ( 𝑣 , 𝑒 ) to  πœ™
 (14) Return  πœ™ , πœ™ 𝑖 , and πœ™ 𝑗