Minimal Maximal Matching API Reference
Data
Data model for Minimal Maximal Matching use case.
MinimalMaximalMatchingData
Bases: UcData
Data for the Minimal Maximal Matching use case.
Finds a maximal matching with the minimum number of edges. A matching is maximal if no more edges can be added without violating the matching property (no shared vertices).
Attributes:
-
name(Literal['minimal_maximal_matching']) –Identifier for this data type.
-
adjacency_matrix(NumPyArray) –Symmetric binary adjacency matrix.
-
node_names(list[int | str]) –Node identifiers.
plot(*, ax: Axes | None = None) -> Axes
Plot the graph instance.
Parameters:
-
ax(Axes | None, default:None) –Matplotlib axes to draw on. Creates a new figure if
None.
Returns:
-
Axes–The axes with the plot.
to_string() -> str
from_adjacency_matrix(adjacency_matrix: np.ndarray, node_names: list[int | str]) -> MinimalMaximalMatchingData
staticmethod
Create data from an adjacency matrix.
Parameters:
-
adjacency_matrix(ndarray) –Symmetric binary adjacency matrix.
-
node_names(list[int | str]) –List of node identifiers.
Returns:
-
MinimalMaximalMatchingData–The data instance.
generate_random(n_nodes: int = 5, edge_prob: float = 0.5, seed: int | None = None) -> MinimalMaximalMatchingData
staticmethod
Generate a random instance.
Parameters:
-
n_nodes(int, default:5) –Number of nodes, by default 5.
-
edge_prob(float, default:0.5) –Probability of an edge between any two nodes, by default 0.5.
-
seed(int | None, default:None) –Random seed for reproducibility, by default None.
Returns:
-
MinimalMaximalMatchingData–A randomly generated data instance.
Examples:
Formulation
Formulation for Minimal Maximal Matching use case.
MinimalMaximalMatchingFormulation
Bases: UcFormulation[MinimalMaximalMatchingData, MinimalMaximalMatchingSolution]
Constraint-based formulation for Minimal Maximal Matching.
Mathematical Formulation
Decision Variables: y_e ∈ {0, 1} -- 1 if edge e is in the matching.
Objective: minimize Σ_e y_e
Constraints: 1. Matching: for each node v: Σ_{e incident to v} y_e ≤ 1 2. Maximal: for each edge (u,v): y_(u,v) + Σ_{e≠(u,v) incident to u} y_e + Σ_{e≠(u,v) incident to v} y_e ≥ 1
to_string(data: MinimalMaximalMatchingData) -> str
staticmethod
Format the formulation as a string.
Parameters:
-
data(MinimalMaximalMatchingData) –The problem data.
Returns:
-
str–Formatted description of the formulation.
formulate(data: MinimalMaximalMatchingData) -> Model
staticmethod
Formulate the Minimal Maximal Matching problem.
Parameters:
-
data(MinimalMaximalMatchingData) –The problem data containing the graph structure.
Returns:
-
Model–A Luna Model ready to be solved.
interpret(solution: Solution, data: MinimalMaximalMatchingData) -> MinimalMaximalMatchingSolution
staticmethod
Extract a Minimal Maximal Matching solution from the solver result.
Parameters:
-
solution(Solution) –The solver solution.
-
data(MinimalMaximalMatchingData) –The original problem data.
Returns:
-
MinimalMaximalMatchingSolution–Structured solution with matching edges and validity.
Raises:
-
NoSolutionFoundError–If the solver did not find any solution.
Solution
Solution model for Minimal Maximal Matching use case.
MinimalMaximalMatchingSolution
Bases: UcSolution
Solution for the Minimal Maximal Matching use case.
Attributes:
-
name(Literal['minimal_maximal_matching']) –Identifier.
-
matching_edges(list[tuple[int | str, int | str]]) –Edges in the matching.
-
matching_size(int) –Number of edges in the matching.
-
is_valid(bool) –Whether the matching is valid (no shared vertices) and maximal.
plot(data: MinimalMaximalMatchingData | None = None, *, ax: Axes | None = None) -> Axes
Plot the solution on the problem graph.
Matching edges are highlighted in green; other edges are grey.
Parameters:
-
data(MinimalMaximalMatchingData | None, default:None) –Problem data. Required.
-
ax(Axes | None, default:None) –Matplotlib axes to draw on. Creates a new figure if
None.
Returns:
-
Axes–The axes with the plot.
Raises:
-
ValueError–If data is
None.
to_string() -> str
Format the solution as a human-readable string.
Returns:
-
str–String representation of the solution.
Instance
Instance model for Minimal Maximal Matching use case.
MinimalMaximalMatchingInstance
Bases: UcInstance[MinimalMaximalMatchingData, MinimalMaximalMatchingFormulation, MinimalMaximalMatchingSolution]
Instance combining data and formulation for Minimal Maximal Matching.
Collection
Collection of Minimal Maximal Matching instances.
MinimalMaximalMatchingCollection
Bases: UcInstanceCollection[MinimalMaximalMatchingInstance]
Collection of Minimal Maximal Matching instances.
Provides methods to generate benchmark instances with various characteristics for testing and evaluation.
from_random(min_nodes: int, max_nodes: int, edge_prob: float = 0.5, num_instances: int = 1, *, seed: int | None = None) -> MinimalMaximalMatchingCollection
classmethod
Generate random Minimal Maximal Matching instances.
Parameters:
-
min_nodes(int) –Minimum number of nodes.
-
max_nodes(int) –Maximum number of nodes.
-
edge_prob(float, default:0.5) –Edge probability, by default 0.5.
-
num_instances(int, default:1) –Number of instances per size, by default 1.
-
seed(int | None, default:None) –Random seed for reproducibility, by default None.
Returns:
-
MinimalMaximalMatchingCollection–Collection containing generated instances.
Examples: