29 lines
756 B
Python
29 lines
756 B
Python
|
|
|
|
|
|
|
|
def creates_cycle(connections: list[tuple[int, int]], test: tuple[int, int]) -> bool:
|
|
"""
|
|
Returns true if the addition of the 'test' connection would create a cycle,
|
|
assuming that no cycle already exists in the graph represented by 'connections'.
|
|
https://github.com/CodeReclaimers/neat-python/blob/4928381317213ee3285204ae1f2a086286aa3a10/neat/graphs.py#L4
|
|
"""
|
|
|
|
i, o = test
|
|
if i == o:
|
|
return True
|
|
|
|
visited = {o}
|
|
while True:
|
|
num_added = 0
|
|
for a, b in connections:
|
|
if a in visited and b not in visited:
|
|
if b == i:
|
|
return True
|
|
|
|
visited.add(b)
|
|
num_added += 1
|
|
|
|
if num_added == 0:
|
|
return False
|