Input: Network G(V, E), target nodes O | |
Initialize: B0 ←(R0, L0) //the right side R0 is made of target nodes O, and the left side L0 is made of nodes from which the targes could be reachable. m 0 ←Matching(B0) //Find maximum matching m 0 among bipartite graph B0 CF(V0, m0) ←Subgraph(V0, m0) // Let V0 = R0∪L0, we obtain a subgraph CF(V0, m0) for paired nodes (vi0,vj0)∈CF(V0, m0) do // if we could find a path from node vi0∈L0 to vj0∈R0, add edge ek0 = (vi0,vj0) to TCT . E0← E0∪ek0 end While L n ≠ ∅ (n ≥ 1) do R n ← L n-1 //Let the set of nodes in L n-1 to be the new R n set B n ←(Rn, Ln) //get a new bipartite graph B n . m n ←Matching(Bn) //Calculate a maximum matching m n in B n V n = V n-1 ∪L n CF(V n , m n ) ←Subgraph(V n , m n ) for paired nodes (vin,vjn)∈CF(V n , m n ) do // vin∈Ln, vjn∈R n If there exists a directed path from vin to vjn , add edge ekn = (vin,vjn) to TCT. Let En = En-1∪(∪ekn). End | |
Output: The target control tree, TCT ≡ (V TCT , E TCT ) = (V n , E n ) |