Ask Your Question
0

Find a minimum (A, B)-vertex separator

asked 2025-05-29 17:22:12 +0200

licheng gravatar image

updated 2025-06-01 06:15:10 +0200

Let $A$ and $B$ be two proper subsets of the vertex set of a graph $G$.

An (A, B)-vertex separator is a set of vertices $S$ such that, after removing $S$ from $G$, there is no path from any vertex in $A$ to any vertex in $B$. A minimum (A, B)-vertex separator is such a set $S$ with the smallest possible size. (see the concept in Menger's theorem).

In sagemath, we have vertex_cut to return a minimum vertex cut between non-adjacent vertices ๐‘  and ๐‘ก. My problem requires an extension of this functionality.

Similarly, it is also necessary to extend edge_cut, edge_disjoint_paths(), and vertex_disjoint_paths() from two vertices to two subsets.


I would like to give some additional explanation on the comments from Max Alekseyev.

Let $G$ be a graph as shown on the left side in the following picture, and assume that $A={a,b}$ and $B={c,d}$.

image description

Then we can check that $\{ x, y, z \}$ is the minimum (A, B)-vertex separator. If we simply add a new vertex s connected to all vertices from A, and a vertex t connected to all vertices from B, then we will get the minimum (s, t)-vertex separator $\{a,b\}$ or $\{c,d\}$, but that's not what we want.

edit retag flag offensive close merge delete

Comments

Simply add a new vertex $s$ connected to all vertices from $A$, and a vertex $t$ connected to all vertices from $B$. Then find a cut between these two vertices.

Max Alekseyev gravatar imageMax Alekseyev ( 2025-05-30 06:12:47 +0200 )edit

It may not be true, for example, the cut between s and t in the new graph(graph obtained by doing your operation) may be equal to A, then we cannot see anything. I am not sure whether they are equivalent

licheng gravatar imagelicheng ( 2025-05-30 06:57:34 +0200 )edit

The definition you gave does not exclude the case $S=A$.

Max Alekseyev gravatar imageMax Alekseyev ( 2025-05-30 12:51:03 +0200 )edit

@ Max Alekseyev Thank you, see the detailed explanation in the main text.

licheng gravatar imagelicheng ( 2025-06-01 05:51:26 +0200 )edit

1 Answer

Sort by ยป oldest newest most voted
1

answered 2025-05-30 08:41:59 +0200

updated 2025-05-31 11:59:33 +0200

A valid construction is to merge the vertices of $A$ to a single vertex $a$ and the vertices of $B$ to a single vertex $b$. Then it remains to find a minimum cut between $a$ and $b$. You can use method G.merge_vertices(A) which will merge all the vertices in $A$ to the first vertex of the list $A$.

edit flag offensive delete link more

Comments

Thank you, It seems correct, but if A and B have an intersection, it appears that we can only contract A\B and B\A

licheng gravatar imagelicheng ( 2025-06-01 06:06:32 +0200 )edit

The definition of what you are looking for must be clarified when $A\cap B\neq\emptyset$ and when $A$ and $B$ are connected by at least one edge. The expected behavior of such cases is not unique.

David Coudert gravatar imageDavid Coudert ( 2025-06-01 10:04:11 +0200 )edit

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

1 follower

Stats

Asked: 2025-05-29 17:22:12 +0200

Seen: 64 times

Last updated: Jun 01