I am interested in the following problem : let $G=(V,E)$ be a connected graph. I would like to disconnect the graph by removing a vertex (an articulation point), such that the resulting number of connected components is maximized.
A dirty algorithm would be to iteratively remove each vertex and count the resulting number of components.
I would prefer doing this with a MIP. For this I need a condition that ensures disconnectedness.
Any help is welcome. Thanks.
Let $x_{ij}=1$ if vertex $i$ is in component $j$. For each edge $\{i_1,i_2\} \in E$ you add a constraint that the vertices $i_1$ and $i_2$ have to be in the same component: $x_{i_1,j} = x_{i_2,j}$. Let $y_i$ be the vertex that gets removed. If you rewrite the previous equality constraint as two inequalities, they become $x_{i_1,j} \leq x_{i_2,j} + y_{i_1} + y_{i_2}$ and $x_{i_1,j} \geq x_{i_2,j} - y_{i_1} - y_{i_2}$, so that the inequalities are always satisfied if either $y_{i_1}$ or $y_{i_2}$ is $1$. Lastly, add a binary variable $z_j$ to indicate if component $j$ is contains a vertex: $z_j \leq \sum_i x_{ij}$.
The full problem becomes: $$\begin{align} \max \quad & \sum_j z_j \\ \text{s.t.} \quad & x_{i_1,j} \leq x_{i_2,j} + y_{i_1} + y_{i_2} \quad \forall \{i_1,i_2\} \in E \; \forall j \\ & x_{i_1,j} \geq x_{i_2,j} - y_{i_1} - y_{i_2} \quad \forall \{i_1,i_2\} \in E \; \forall j\\ &\sum_j x_{ij} = 1 \quad \forall i\\ &\sum_i y_i = 1 \\ &z_j \leq \sum_i x_{ij} \quad \forall j \\ &x,y,z \text{ binary.} \end{align}$$ You can start with a set for $j$ of small cardinality, and gradually increase the cardinality until the optimal value is less than the cardinality. In the optimal solution, one $j$ is used for the removed vertex, so the answer is one less than the optimal value.