Graph Partitioning API Reference
Data
Data model for Graph Partitioning use case.
GraphPartitioningData
Bases: UcData
Data for the Graph Partitioning use case.
The graph partitioning problem divides nodes into two equal-sized groups while minimizing the number (or weight) of edges crossing between them.
Attributes:
-
name(Literal['graph_partitioning']) –Identifier for this data type.
-
adjacency_matrix(NumPyArray) –Symmetric weighted 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.
Returns:
-
Axes–The axes with the plot.
to_string() -> str
Return a string representation of the data.
from_graph(graph: nx.Graph) -> GraphPartitioningData
staticmethod
Create data from a NetworkX graph.
Parameters:
-
graph(Graph) –A NetworkX graph with optional edge weights.
Returns:
-
GraphPartitioningData–The graph partitioning data instance.
from_adjacency_matrix(adjacency_matrix: np.ndarray | list[list[float]], node_names: list[int | str]) -> GraphPartitioningData
staticmethod
generate_random(n_nodes: int = 6, edge_prob: float = 0.5, seed: int | None = None) -> GraphPartitioningData
staticmethod
Generate a random graph partitioning instance.
Parameters:
-
n_nodes(int, default:6) –Number of nodes (should be even for equal partition).
-
edge_prob(float, default:0.5) –Probability of an edge between any two nodes.
-
seed(int | None, default:None) –Random seed for reproducibility.
Returns:
-
GraphPartitioningData–A randomly generated data instance.
Formulation
Formulation for Graph Partitioning use case.
GraphPartitioningFormulation
Bases: UcFormulation[GraphPartitioningData, GraphPartitioningSolution]
Constraint-based formulation for Graph Partitioning.
Mathematical Formulation
Decision Variables: x[i] in {0,1} — 1 if node i in partition 1, else partition 0
Objective: Minimize sum_{(i,j) in edges} w_ij * (x[i] + x[j] - 2x[i]x[j]) (edges crossing between partitions)
Constraints: 1. Equal partition: sum_i x[i] == n // 2
to_string(data: GraphPartitioningData) -> str
staticmethod
Format the formulation as a string.
Parameters:
-
data(GraphPartitioningData) –The problem data.
Returns:
-
str–Formatted description of the formulation.
formulate(data: GraphPartitioningData) -> Model
staticmethod
Formulate the graph partitioning problem.
Parameters:
-
data(GraphPartitioningData) –The problem data.
Returns:
-
Model–A Luna Model ready to be solved.
interpret(solution: Solution, data: GraphPartitioningData) -> GraphPartitioningSolution
staticmethod
Extract the graph partitioning solution.
Parameters:
-
solution(Solution) –The solver solution.
-
data(GraphPartitioningData) –The problem data.
Returns:
-
GraphPartitioningSolution–Structured solution with partition assignments.
Solution
Solution model for Graph Partitioning use case.
GraphPartitioningSolution
Bases: UcSolution
Solution for the Graph Partitioning use case.
Attributes:
-
name(Literal['graph_partitioning']) –Identifier for this solution type.
-
partitions(list[list[int | str]]) –Two partitions of node names.
-
cut_edges(int) –Number of edges crossing between partitions.
-
cut_weight(float) –Total weight of edges crossing between partitions.
-
is_valid(bool) –Whether partitions are of equal size.
plot(data: GraphPartitioningData | None = None, *, ax: Axes | None = None) -> Axes
Plot the graph partitioning solution.
Parameters:
-
data(GraphPartitioningData | None, default:None) –Problem data. Required.
-
ax(Axes | None, default:None) –Matplotlib axes to draw on.
Returns:
-
Axes–The axes with the plot.
to_string() -> str
Return a string representation of the solution.
Instance
Instance model for GraphPartitioning use case.
GraphPartitioningInstance
Bases: UcInstance[GraphPartitioningData, GraphPartitioningFormulation, GraphPartitioningSolution]
Instance combining data and formulation for Graph Partitioning.
Collection
Collection of Graph Partitioning instances.
GraphPartitioningCollection
Bases: UcInstanceCollection[GraphPartitioningInstance]
Collection of Graph Partitioning instances.
from_random(min_nodes: int, max_nodes: int, edge_prob: float = 0.5, num_instances: int = 1, *, seed: int | None = None) -> GraphPartitioningCollection
classmethod
Generate random graph partitioning instances.
Parameters:
-
min_nodes(int) –Minimum number of nodes (even values only).
-
max_nodes(int) –Maximum number of nodes.
-
edge_prob(float, default:0.5) –Edge probability.
-
num_instances(int, default:1) –Instances per size.
-
seed(int | None, default:None) –Random seed.
Returns:
-
GraphPartitioningCollection–Collection of generated instances.