Skip to content
This repository was archived by the owner on Nov 7, 2024. It is now read-only.

Commit df180d6

Browse files
authored
Remove duplicates in get_neighbors function (#591)
* Remove duplicates in get_neighbors function * use set to remove duplicates
1 parent 7103d14 commit df180d6

2 files changed

Lines changed: 20 additions & 2 deletions

File tree

tensornetwork/network_operations.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -888,10 +888,14 @@ def get_neighbors(node: BaseNode) -> List[Node]:
888888
All of the neighboring edges that share an `Edge` with `node`.
889889
"""
890890
neighbors = []
891+
neighbors_set = set()
891892
for edge in node.edges:
892893
if not edge.is_dangling() and not edge.is_trace():
893894
if edge.node1 is node:
894-
neighbors.append(edge.node2)
895-
else:
895+
if edge.node2 not in neighbors_set:
896+
neighbors.append(edge.node2)
897+
neighbors_set.add(edge.node2)
898+
elif edge.node1 not in neighbors_set:
896899
neighbors.append(edge.node1)
900+
neighbors_set.add(edge.node1)
897901
return neighbors

tensornetwork/tests/network_operations_test.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -513,3 +513,17 @@ def test_get_neighbors(backend):
513513
b[1] ^ b[2]
514514
result = tn.get_neighbors(b)
515515
assert result == [a, c]
516+
517+
def test_get_neighbors_no_duplicates(backend):
518+
with tn.DefaultBackend(backend):
519+
a = tn.Node(np.ones((2, 2, 2)))
520+
b = tn.Node(np.ones((2, 2, 2, 2, 2)))
521+
c = tn.Node(np.ones((2, 2, 2)))
522+
d = tn.Node(np.ones((2, 2)))
523+
b[0] ^ a[0]
524+
b[1] ^ a[1]
525+
b[2] ^ c[0]
526+
a[2] ^ d[1]
527+
b[3] ^ b[4]
528+
result = tn.get_neighbors(b)
529+
assert result == [a, c]

0 commit comments

Comments
 (0)