minimum connected subgraph containing a given set of nodes

后端 未结 4 2130
悲哀的现实
悲哀的现实 2020-12-29 05:11

I have an unweighted, connected graph. I want to find a connected subgraph that definitely includes a certain set of nodes, and as few extras as possible. How could this b

4条回答
  •  轻奢々
    轻奢々 (楼主)
    2020-12-29 06:11

    The easiest solutions will be the following:

    a) based on mst: - initially, all nodes of V are in V' - build a minimum spanning tree of the graph G(V,E) - call it T.
    - loop: for every leaf v in T that is not in N, delete v from V'.
    - repeat loop until all leaves in T are in N.

    b) another solution is the following - based on shortest paths tree.
    - pick any node in N, call it v, let v be a root of a tree T = {v}. - remove v from N.

    • loop: 1) select the shortest path from any node in T and any node in N. the shortest path p: {v, ... , u} where v is in T and u is in N. 2) every node in p is added to V'. 3) every node in p and in N is deleted from N. --- repeat loop until N is empty.

    At the beginning of the algorithm: compute all shortest paths in G using any known efficient algorithm.

    Personally, I used this algorithm in one of my papers, but it is more suitable for distributed enviroments. Let N be the set of nodes that we need to interconnect. We want to build a minimum connected dominating set of the graph G, and we want to give priority for nodes in N. We give each node u a unique identifier id(u). We let w(u) = 0 if u is in N, otherwise w(1). We create pair (w(u), id(u)) for each node u.

    • each node u builds a multiset relay node. That is, a set M(u) of 1-hop neigbhors such that each 2-hop neighbor is a neighbor to at least one node in M(u). [the minimum M(u), the better is the solution].

    • u is in V' if and only if: u has the smallest pair (w(u), id(u)) among all its neighbors. or u is selected in the M(v), where v is a 1-hop neighbor of u with the smallest (w(u),id(u)).

    -- the trick when you execute this algorithm in a centralized manner is to be efficient in computing 2-hop neighbors. The best I could get from O(n^3) is to O(n^2.37) by matrix multiplication.

    -- I really wish to know what is the approximation ration of this last solution.

    I like this reference for heuristics of steiner tree: The Steiner tree problem, Hwang Frank ; Richards Dana 1955- Winter Pawel 1952

提交回复
热议问题