Skip to content

Commit 9e1d5f3

Browse files
[pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
1 parent b4cf6eb commit 9e1d5f3

File tree

1 file changed

+29
-10
lines changed

1 file changed

+29
-10
lines changed

graphs/edmonds_blossom_algorithm.py

Lines changed: 29 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,9 @@
55

66
class EdmondsBlossomAlgorithm:
77
@staticmethod
8-
def maximum_matching(edges: list[tuple[int, int]], vertex_count: int) -> list[tuple[int, int]]:
8+
def maximum_matching(
9+
edges: list[tuple[int, int]], vertex_count: int
10+
) -> list[tuple[int, int]]:
911
"""
1012
Finds the maximum matching in a general graph using Edmonds' Blossom Algorithm.
1113
@@ -80,10 +82,16 @@ def maximum_matching(edges: list[tuple[int, int]], vertex_count: int) -> list[tu
8082
EdmondsBlossomAlgorithm.contract_blossom(
8183
BlossomData(
8284
BlossomAuxData(
83-
queue, parent, base, in_blossom,
84-
match, in_queue
85+
queue,
86+
parent,
87+
base,
88+
in_blossom,
89+
match,
90+
in_queue,
8591
),
86-
current_vertex, neighbor, base_vertex
92+
current_vertex,
93+
neighbor,
94+
base_vertex,
8795
)
8896
)
8997

@@ -96,7 +104,9 @@ def maximum_matching(edges: list[tuple[int, int]], vertex_count: int) -> list[tu
96104
return matching_result
97105

98106
@staticmethod
99-
def update_matching(match: list[int], parent: list[int], current_vertex: int) -> None:
107+
def update_matching(
108+
match: list[int], parent: list[int], current_vertex: int
109+
) -> None:
100110
"""
101111
Updates the matching along the augmenting path found.
102112
@@ -155,7 +165,7 @@ def find_base(
155165
current_vertex_v = parent[current_vertex_v]
156166

157167
@staticmethod
158-
def contract_blossom(blossom_data: 'BlossomData') -> None:
168+
def contract_blossom(blossom_data: "BlossomData") -> None:
159169
"""
160170
Contracts a blossom in the graph, modifying the base array
161171
and marking the vertices involved.
@@ -171,7 +181,9 @@ def contract_blossom(blossom_data: 'BlossomData') -> None:
171181
current_vertex_u = blossom_data.u
172182
while blossom_data.aux_data.base[current_vertex_u] != blossom_data.lca:
173183
base_u = blossom_data.aux_data.base[current_vertex_u]
174-
match_base_u = blossom_data.aux_data.base[blossom_data.aux_data.match[current_vertex_u]]
184+
match_base_u = blossom_data.aux_data.base[
185+
blossom_data.aux_data.match[current_vertex_u]
186+
]
175187
blossom_data.aux_data.in_blossom[base_u] = True
176188
blossom_data.aux_data.in_blossom[match_base_u] = True
177189
current_vertex_u = blossom_data.aux_data.parent[
@@ -181,7 +193,9 @@ def contract_blossom(blossom_data: 'BlossomData') -> None:
181193
current_vertex_v = blossom_data.v
182194
while blossom_data.aux_data.base[current_vertex_v] != blossom_data.lca:
183195
base_v = blossom_data.aux_data.base[current_vertex_v]
184-
match_base_v = blossom_data.aux_data.base[blossom_data.aux_data.match[current_vertex_v]]
196+
match_base_v = blossom_data.aux_data.base[
197+
blossom_data.aux_data.match[current_vertex_v]
198+
]
185199
blossom_data.aux_data.in_blossom[base_v] = True
186200
blossom_data.aux_data.in_blossom[match_base_v] = True
187201
current_vertex_v = blossom_data.aux_data.parent[
@@ -203,8 +217,13 @@ class BlossomAuxData:
203217
"""
204218

205219
def __init__(
206-
self, queue: deque, parent: list[int], base: list[int], in_blossom: list[bool],
207-
match: list[int], in_queue: list[bool]
220+
self,
221+
queue: deque,
222+
parent: list[int],
223+
base: list[int],
224+
in_blossom: list[bool],
225+
match: list[int],
226+
in_queue: list[bool],
208227
) -> None:
209228
self.queue = queue
210229
self.parent = parent

0 commit comments

Comments
 (0)