Skip to content

Commit ba0bfd0

Browse files
authored
Code cleanup
1 parent 8ea1bc8 commit ba0bfd0

File tree

1 file changed

+13
-16
lines changed

1 file changed

+13
-16
lines changed

2023/25/part1.py

Lines changed: 13 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -53,30 +53,27 @@ def visualize(edges):
5353

5454
# Ref: https://en.wikipedia.org/wiki/Minimum_cut
5555
# Ref: https://en.wikipedia.org/wiki/Karger%27s_algorithm
56-
def kargers_algorithm(adjacency_dict):
57-
adj = deepcopy(adjacency_dict)
56+
def kargers_algorithm(edges_multigraph):
57+
edges_contracted = deepcopy(edges_multigraph)
5858
merges = defaultdict(int)
5959

60-
while len(adj) > 2:
61-
node_keep = random.choice(list(adj))
62-
node_remove = random.choice(list(adj[node_keep]))
60+
while len(edges_contracted) > 2:
61+
node_keep = random.choice(list(edges_contracted))
62+
node_remove = random.choice(list(edges_contracted[node_keep]))
6363

64-
merges[node_keep] += 1 + merges[node_remove]
65-
del merges[node_remove]
64+
merges[node_keep] += 1 + merges.pop(node_remove, 0)
6665

67-
for node_n in adj[node_remove]:
68-
nbr_edges = adj[node_n][node_remove]
69-
del adj[node_n][node_remove]
66+
for node_n in edges_contracted[node_remove]:
67+
nbr_edges = edges_contracted[node_n].pop(node_remove)
7068

7169
if node_n != node_keep:
72-
adj[node_n][node_keep] += nbr_edges
73-
adj[node_keep][node_n] += nbr_edges
70+
edges_contracted[node_n][node_keep] += nbr_edges
71+
edges_contracted[node_keep][node_n] += nbr_edges
7472

75-
del adj[node_remove]
73+
del edges_contracted[node_remove]
7674

77-
cut = sum(count for edges in adj.values() for count in edges.values()) / 2
78-
# The node itself is not counted in the merged stats.
79-
component_sizes = [1 + c for c in merges.values()]
75+
cut = sum(count for edges in edges_contracted.values() for count in edges.values()) / 2
76+
component_sizes = [1 + c for c in merges.values()] # The node itself is not counted in the merged stats.
8077
return cut, component_sizes
8178

8279

0 commit comments

Comments
 (0)