Skip to content

[Model] MinimumMaximalMatching #832

@isPANN

Description

@isPANN

Motivation

MINIMUM MAXIMAL MATCHING (P21) from Garey & Johnson, A1.1 GT10. A classical NP-complete graph problem equivalent to Minimum Edge Dominating Set — the optimal values coincide (Yannakakis & Gavril, 1978). Useful as a reduction target from Vertex Cover (the original NP-completeness proof is by transformation from Vertex Cover for cubic graphs). Remains NP-complete for planar graphs and bipartite graphs with maximum degree 3.

Definition

Name: MinimumMaximalMatching
Reference: Garey & Johnson, Computers and Intractability, A1.1 GT10

Mathematical definition:

Given a graph G = (V, E), find a maximal matching of minimum cardinality. A matching is a subset E' ⊆ E such that no two edges in E' share a common endpoint. A matching E' is maximal if every edge in E \ E' shares at least one endpoint with some edge in E'. The objective is to minimize |E'| over all maximal matchings.

Variables

  • Count: |E| (one per edge)
  • Per-variable domain: {0, 1}
  • Meaning: Whether each edge is included in the matching (1) or not (0). The objective minimizes the number of selected edges subject to the matching being maximal.

Schema (data type)

Type name: MinimumMaximalMatching
Variants: graph: SimpleGraph

Field Type Description
graph SimpleGraph The input graph G = (V, E)

Complexity

  • Best known exact algorithm: 1.3160^num_vertices by Xiao and Nagamochi (2014), "A Refined Exact Algorithm for Edge Dominating Set", Theoretical Computer Science 560, pp. 207–216. The minimum maximal matching problem is equivalent to the minimum edge dominating set problem (the size of a minimum edge dominating set equals the size of a minimum maximal matching). The algorithm uses branch-and-reduce with measure-and-conquer analysis, exploiting clique-producing vertices and cycle structures.

Extra Remark

Full book text:

INSTANCE: Graph G = (V,E), positive integer K ≤ |E|.
QUESTION: Is there a subset E' ⊆ E with |E'| ≤ K such that E' is a maximal matching, i.e., no two edges in E' share a common endpoint and every edge in E−E' shares a common endpoint with some edge in E'?
Reference: [Yannakakis and Gavril, 1978]. Transformation from VERTEX COVER for cubic graphs.
Comment: Remains NP-complete for planar graphs and for bipartite graphs, in both cases even if no vertex degree exceeds 3. The problem of finding a maximum "maximal matching" is just the usual graph matching problem and is solvable in polynomial time (e.g., see [Lawler, 1976a]).

How to solve

  • It can be solved by (existing) bruteforce.
  • It can be solved by reducing to integer programming.
  • Other:

Reduction Rule Crossref

The direct MinimumMaximalMatching → ILP rule will be implemented together with this model (per project convention for models with direct ILP solvability).

Example Instance

Consider the path graph on 6 vertices: v0 — v1 — v2 — v3 — v4 — v5, with edges E = {(v0,v1), (v1,v2), (v2,v3), (v3,v4), (v4,v5)}.

All maximal matchings of this graph:

  • {(v0,v1), (v2,v3), (v4,v5)} — size 3
  • {(v0,v1), (v3,v4)} — size 2
  • {(v1,v2), (v3,v4)} — size 2
  • {(v1,v2), (v4,v5)} — size 2

For example, E' = {(v1,v2), (v3,v4)} is a maximal matching of size 2: no two edges share an endpoint, and every other edge is adjacent to some edge in E' — (v0,v1) shares v1 with (v1,v2), (v2,v3) shares v2 with (v1,v2) and v3 with (v3,v4), and (v4,v5) shares v4 with (v3,v4).

A single edge like {(v2,v3)} is NOT a maximal matching because (v0,v1) shares no endpoint with it, so it could still be added.

Expected Outcome

Optimal value: Min(2)
Optimal solution: E' = {(v1,v2), (v3,v4)} (or equivalently {(v0,v1), (v3,v4)} or {(v1,v2), (v4,v5)})
Suboptimal feasible solution: {(v0,v1), (v2,v3), (v4,v5)} with value 3 — this is maximal but not minimum.

Metadata

Metadata

Assignees

No one assigned

    Labels

    GoodAn issue passed all checks.modelA model problem to be implemented.

    Type

    No type

    Projects

    Status

    Done

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions