Блог пользователя darkkcyan

Автор darkkcyan, история, 4 года назад, По-английски

Hello everyone! There is a problem in an Olympiad from my country 7 years ago, but I could not solve it, nor some of my friends. So I wanted to ask for help with this problem. The problem is as follows:

Given a bipartite graph with $$$n$$$ nodes on the left side and $$$m$$$ nodes on the right side. There is also a weight matrix $$$C$$$, $$$C_{i,j}$$$ is the weight of the edge connecting the $$$i$$$-th node on the left side to the $$$j$$$-th node on the right side. The problem ask to find a sub-tree of the graph with minimum total edge weight and it connects every nodes on the left side. In other word, we need to find a minimum Steiner tree, whose terminals are nodes on the left side. It is guaranteed that the answer exists.

Constraints: $$$n, m \le 1000$$$. $$$-1 \le C_{i, j} \le 10000$$$. $$$C_{i, j} = -1$$$ means there is no edge connecting the $$$i$$$-th node on the left side and $$$j$$$-th node on the right side (or it can be considered $$$+\infty$$$).

Here is the samples from the problem statement.

Sample 1
Sample 2

Also some interseting examples that my friend has drawn:

Friend's graph 1
Friend's graph 2

I have done some Googling, but it's no good. I have found a Wikipedia article called Quasi bipartitie graph and there were only approximating solutions. But I'm not sure if this article has anything to do with this problem.

Please help me find a solution to this problem, or maybe help me prove this is an NP problem, because I'm really depressed :(.

  • Проголосовать: нравится
  • +78
  • Проголосовать: не нравится

»
4 года назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

Auto comment: topic has been updated by darkkcyan (previous revision, new revision, compare).

»
4 года назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

I think MCMF might work,consider a new graph with $$$cap_{i,j}=1,cost_{i,j}=c_{i,j}$$$,and also connect s to all left nodes,right nodes to t.Since you have to choose n+m-1 edges(it's a tree),you can add an additional edge s'->s,with capacity of n+m-1 and cost of inf.Then it becomes a max flow min cost problem.

  • »
    »
    4 года назад, скрыть # ^ |
     
    Проголосовать: нравится +19 Проголосовать: не нравится

    Thank you for your response. But the tree that we need to find does not need to have $$$n + m - 1$$$ edges, because we don't need to connect all the nodes on the right sides, but only nodes on the left sides. Please see 2 additional graphs that my friends has drawn. In both of them, there are 5 nodes, but we only need to connect $$$3$$$ edges in total.

    Also the flow model don't really guarantee the connectivity condition.

»
4 года назад, скрыть # |
Rev. 2  
Проголосовать: нравится +37 Проголосовать: не нравится

Apparently, it is an NP-hard problem.

Let's take a Set Cover Problem with $$$U = \lbrace 1,2,\dots,n \rbrace$$$ and $$$S = \lbrace S_1, S_2,\dots,S_m \rbrace$$$. Now we build a bipartite graph with $$$n+1$$$ nodes on left side, and $$$m$$$ nodes on right side. All the weights of existing edges would be equal.

Node $$$0$$$ on the left side is connected to every node on the right side. Node $$$v \gt 0$$$ on the left side is connected to node $$$t$$$ on the right side iff $$$v \in S_t$$$.

So, if we solve a task from the blog on a constructed graph, we will use the minimal number of nodes on the right side, and so we solve a Set Cover Problem.

P.S.: how to use curly brackets in cf tex? backslash doesn't help :(

P.P.S.: now I can use them! thanks!