# delete_edge() Won't Delete Edges from Graph

Title says it all, really. The following code only outputs complete graphs and I can't figure out why.

def SR(G):
H = G
for a in G.vertices():
for b in G.vertices():

for v in G.vertices():
for w in G.vertices():
for n in G[v]:
for m in G[w]:
if H.distance(v, m) >= H.distance(v, w):
G.delete_edge(v , w)

elif H.distance(n, w)  H.distance(v, w):
G.delete_edge(v , w)

return G


This is supposed to output the strong resolving graph of a particular graph $G$, which can be defined to be the graph formed by taking the vertices of $G$ and making a pair $u,v$ adjacent if for all $n \in N(u)$ and all $n' \in N(v)$, we have $d(n, v) \leq d(u, v)$ and $d(u, n') \leq d(u, v)$. In other words we connect vertices if nothing in their neighborhoods in the original graph is farther. Being new to sage I have no idea why my code above wouldn't work. What do I do?

edit retag close merge delete

Sort by ยป oldest newest most voted

H = G does not make a copy of the graph. G and H are the very same object in memory, and if you modify one the other also contains the modification. It is the very same memory address. If you want to copy your graph, use H = copy(G).

This is a behaviour that you should expect in any object-oriented language.

more

## Stats

Seen: 653 times

Last updated: Aug 07 '15