创建关联矩阵

时间:2016-11-30 16:13:53

标签: python matrix

我是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)

1 个答案:

答案 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