2016-11-30 9 views
1

私は新しいstackoverflowです。私は自分の問題に合ったトピックを探しましたが、残念ながら私は見つけませんでした。だから私は新しいトピックを開いています。発生行列を作成する

特定の入力から入射行列を作成する関数をPythonで実装する必要があります。私の問題は、私はindecesにアクセスする方法をよく理解していなかったので、各列には2つではなく1つの '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

あなたは、エッジの辞書が – Navidad20

+0

グラフ= incidence_matrix(4、[(1,2)、(0どのように見えるかを示すことができ、 1)、(0,2)]) –

答えて

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 
+0

mh ...これは正しい出力ではありません。私はあなたに行列を表示するためにチャットで入力をフォーマットする方法を知らないが、プログラムの出力は でなければならない[[0,1,1] [1,1,0] [1,0,1] [ 0,0,0]]であるが、[[0,1,1,0] [0,0,1,0] [0,0,0,0] [0,0,0,0]] –

+0

Iどのようにしてエッジを動作させたいのか混乱させます.4つの頂点を置くと、各ペアの間でマッチしたくないのですか? – Navidad20

+0

はい、私は発生率のマトリックスとして行います。あなたが私に与えた出力は隣接行列です - あるいは今私は間違っていますか? –

関連する問題