[pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci
This commit is contained in:
pre-commit-ci[bot] 2024-10-14 15:43:53 +00:00
parent a547676800
commit ddf9b59866

View File

@ -4,8 +4,15 @@ from collections import deque
class BlossomAuxData: class BlossomAuxData:
"""Class to hold auxiliary data during the blossom algorithm's execution.""" """Class to hold auxiliary data during the blossom algorithm's execution."""
def __init__(self, queue: deque, parent: list[int], base: list[int], def __init__(
in_blossom: list[bool], match: list[int], in_queue: list[bool]): self,
queue: deque,
parent: list[int],
base: list[int],
in_blossom: list[bool],
match: list[int],
in_queue: list[bool],
):
self.queue = queue self.queue = queue
self.parent = parent self.parent = parent
self.base = base self.base = base
@ -87,9 +94,9 @@ class EdmondsBlossomAlgorithm:
parent[y] = current # Update the parent parent[y] = current # Update the parent
augmenting_path_found = True augmenting_path_found = True
# Augment along this path # Augment along this path
EdmondsBlossomAlgorithm.update_matching(match, EdmondsBlossomAlgorithm.update_matching(
parent, match, parent, y
y) )
break break
# Case 2: y is matched; add y's match to the queue # Case 2: y is matched; add y's match to the queue
@ -102,16 +109,25 @@ class EdmondsBlossomAlgorithm:
else: else:
# Case 3: Both current and y have a parent; # Case 3: Both current and y have a parent;
# check for a cycle/blossom # check for a cycle/blossom
base_u = EdmondsBlossomAlgorithm.find_base(base, base_u = EdmondsBlossomAlgorithm.find_base(
parent, base, parent, current, y
current, )
y)
if base_u != EdmondsBlossomAlgorithm.UNMATCHED: if base_u != EdmondsBlossomAlgorithm.UNMATCHED:
EdmondsBlossomAlgorithm.contract_blossom(BlossomData( EdmondsBlossomAlgorithm.contract_blossom(
BlossomAuxData(queue, parent, BlossomData(
base, in_blossom, BlossomAuxData(
match, in_queue), queue,
current, y, base_u)) parent,
base,
in_blossom,
match,
in_queue,
),
current,
y,
base_u,
)
)
# Create result list of matched pairs # Create result list of matched pairs
matching_result = [] matching_result = []
@ -181,16 +197,20 @@ class EdmondsBlossomAlgorithm:
blossom_data: The data related to the blossom to be contracted. blossom_data: The data related to the blossom to be contracted.
""" """
# Mark vertices in the blossom # Mark vertices in the blossom
for x in range(blossom_data.u, for x in range(
blossom_data.aux_data.base[blossom_data.u] != blossom_data.lca): blossom_data.u,
blossom_data.aux_data.base[blossom_data.u] != blossom_data.lca,
):
base_x = blossom_data.aux_data.base[x] base_x = blossom_data.aux_data.base[x]
match_base_x = blossom_data.aux_data.base[blossom_data.aux_data.match[x]] match_base_x = blossom_data.aux_data.base[blossom_data.aux_data.match[x]]
# Mark the base as in a blossom # Mark the base as in a blossom
blossom_data.aux_data.in_blossom[base_x] = True blossom_data.aux_data.in_blossom[base_x] = True
blossom_data.aux_data.in_blossom[match_base_x] = True blossom_data.aux_data.in_blossom[match_base_x] = True
for x in range(blossom_data.v, for x in range(
blossom_data.aux_data.base[blossom_data.v] != blossom_data.lca): blossom_data.v,
blossom_data.aux_data.base[blossom_data.v] != blossom_data.lca,
):
base_x = blossom_data.aux_data.base[x] base_x = blossom_data.aux_data.base[x]
match_base_x = blossom_data.aux_data.base[blossom_data.aux_data.match[x]] match_base_x = blossom_data.aux_data.base[blossom_data.aux_data.match[x]]
# Mark the base as in a blossom # Mark the base as in a blossom