我是stackoverflow的新手。我搜索了一个适合我的问题的主题,但不幸的是我找不到一个。所以我开了一个新主题。
我必须在python中实现一个函数,它从某个输入中创建一个关联矩阵。我的问题是我不太明白如何访问indeces,所以每列只有一个'1'而不是两个..:/
希望你们能帮助我......让我在这一个人心中失去理智
class incidence_matrix:
def __init__(self, vertices, edges):
self.vertices = vertices
self.edges = edges
self.liste = [[0 for i in range(vertices)] for i in range(vertices)]
#print(self.liste)
for i in range(0, vertices):
for j in range(0, len(edges)):
if edges[i][j-1] >= vertices or edges[i][j-1] < 0 or edges[i][j-1] >= vertices or edges[i][j-1] < 0:
print("Index out of range")
return
self.liste[edges[0][j+1]][edges[1][j+1]] = 1
self.liste[edges[1][j+1]][edges[0][j+1]] = 1
for x in range(0, vertices):
row = ""
for y in range(0, len(edges)):
row = row + str(self.liste[x][y]) + " "
print(row)
答案 0 :(得分:0)
这对你有用。它假设边是双向的。
class incidence_matrix:
def __init__(self, vertices, edges):
self.vertices = vertices
self.edges = edges
self.liste = [[0 for i in range(vertices)] for i in range(len(edges))]
for i in range(len(edges)):
v1, v2 = edges[i]
if v1 >= vertices:
continue
if v2 >= vertices:
continue
self.liste[i][v1] = 1
self.liste[i][v2] = 1
for i in range(len(edges)):
row = ' '.join([str(x) for x in self.liste[i]])
print(row)
输入:
graph = incidence_matrix(4, [(1,2),(0,1),(0,2)])
输出:
0 1 1 0
1 1 0 0
1 0 1 0