Complexity of branch and bound for finding optimal Boolean assignment in a logic-constrained graph

StackOverflow https://stackoverflow.com/questions/23569076

Frage

The problem:

I have a graph in which the boolean state of each vertex is constrained by a logical relation given the states of connected vertices. The edges describe reactions, where each reaction has a set of activators (that promote it), repressors (that inhibit the reaction), and products (that can be turned on when the reaction occurs). For some of the vertices, there is a known boolean assignment of which state they should be in. My goal is to find an assignment of all the booleans in the graph that maximizes agreement with the known assignments while obeying the logical constraints of the graph.

EDIT: Here is the ILP objective and the constraints I am proposing to use: http://i.imgur.com/kSUoVdt.jpg

Basically, my objective is to find an assignment of state to all species in the graph that most closely agrees with the "true" assignment of states (M), which are known from data. Not all species in the graph have a known state.

The first constraint specifies that a reaction can only occur if all of the activating species and none of the inhibiting species are TRUE.

The second constraint says that a species can be TRUE if one of the reactions that produces it is TRUE, or if it is specified as an input node.

From what I've read so far, this problem is a good candidate for a B&B approach. However, I am having trouble estimating what the time complexity will be for B&B and for a brute force search. My guess is that a brute force search will be 2^n, where n=number of vertices, since this is the total number of nodes that would be generated by the B&B tree in the worst case. But it seems like the number of constraints that have to be evaluated should also factor into the complexity for B&B and brute force, but I'm not sure how.

War es hilfreich?

Lösung

If I were going to feed this problem to an ILP solver, then this is the formulation that I would try first. (Emphasis on first, because this activity usually involves a fair amount of trial and error.)

min   sum_{species i measured true} x_i
    - sum_{species i measured false} x_i
subject to
  for each species i inhibiting reaction j:
    x_i + y_j <= 1
  for each species i activating reaction j:
    x_i - y_j >= 0
  for each non-input species i:
    x_i - sum_{reaction j producing species i} y_j <= 0
(binary)
  for each species i:
    x_i in {0, 1}
  for each reaction j:
    y_j in {0, 1}

I split your constraint (1) because I don't think that it does what you want with binary constraints on the variables. I don't have a lot of intuition about what the relaxation quality will be like (if it's bad, my guess is that summing the y_js will be to blame). Another possibility would be to use a constraint solver; I have much less experience with those.

Researchers in combinatorial optimization tend to favor experimental evaluations over theoretical asymptotic time bounds, because the latter are hard to come by and usually unduly pessimistic. In the worst case, branch and bound won't obtain any useful bounds, and the cost will be brute force times the cost of evaluating each node (probably polynomial).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top