Files
ne-assignments/Abschlussprojekt/graphs.py
2023-07-16 20:00:15 +02:00

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