From c7e62f6374e50bcd5022e9aa8aa47c7e1fc3fbfa Mon Sep 17 00:00:00 2001 From: Razin Shaikh Date: Wed, 26 Jun 2024 18:38:45 +0100 Subject: [PATCH 1/2] first step to self loops --- pyzx/graph/multigraph.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pyzx/graph/multigraph.py b/pyzx/graph/multigraph.py index 617b683e..f2d2a858 100644 --- a/pyzx/graph/multigraph.py +++ b/pyzx/graph/multigraph.py @@ -209,7 +209,7 @@ def remove_vertices(self, vertices): e = self.graph[v][v1] self.nedges -= e.s + e.h del self.graph[v][v1] - del self.graph[v1][v] + if v != v1: del self.graph[v1][v] # remove the vertex del self.graph[v] del self.ty[v] @@ -270,7 +270,7 @@ def edges(self, s=None, t=None): if s == None: for v0,adj in self.graph.items(): for v1, e in adj.items(): - if v1 > v0: + if v1 >= v0: for _ in range(e.s): yield (v0, v1, EdgeType.SIMPLE) for _ in range(e.h): yield (v0, v1, EdgeType.HADAMARD) for _ in range(e.w_io): yield (v0, v1, EdgeType.W_IO) From 61ac5850db0ad3fc364d33d0d73ba2242a7d9958 Mon Sep 17 00:00:00 2001 From: Razin Shaikh Date: Wed, 26 Jun 2024 18:49:41 +0100 Subject: [PATCH 2/2] self loop support: avoid deleting self edges twice --- pyzx/graph/multigraph.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyzx/graph/multigraph.py b/pyzx/graph/multigraph.py index f2d2a858..66407ae7 100644 --- a/pyzx/graph/multigraph.py +++ b/pyzx/graph/multigraph.py @@ -244,7 +244,7 @@ def remove_edge(self, edge): if e.is_empty(): del self.graph[s][t] - del self.graph[t][s] + if s != t: del self.graph[t][s] self.nedges -= 1