Не уверен, почему вы определяете visited
, так как с циклом double for вы перебираете все элементы один раз.Более простой подход, все еще похожий на то, что вы делаете, это:
def edges(A):
edges = []
for i in range(len(A)):
for j in range(len(A[0])):
if (A[i][j] == 1):
edges.append((i,j))
return edges
print(edges(A))
[(0, 1), (0, 5), (1, 0), (1, 5), (2, 3), (2, 4), (3, 4), (5, 0)]
Однако вы можете легко сделать это с помощью networkx
.Вы можете создать график из матрицы смежности, используя from_numpy_matrix
, и распечатать список с ребрами, используя edges
:
A = np.array([[0, 1, 0, 0, 0, 1],
[1, 0, 0, 0, 0, 1],
[0, 0, 0, 1, 1, 0],
[0, 0, 0, 0, 1, 0],
[0, 0, 0, 0, 0, 0],
[1, 0, 0, 0, 0, 0]])
import networkx as nx
g = nx.from_numpy_matrix(A)
print(g.edges)
[(0, 1), (0, 5), (1, 5), (2, 3), (2, 4), (3, 4)]