2017-11-19 7 views
-1

私のコードは、第1のユーザ入力を取り込む隣接行列に変換することができない場合: 隣接リストデータを転送し、

  • n

    =グラフ

  • fileにおける頂点の数=ファイル

    :この場合

を計算するために、私のファイルが含ま.txtファイルであります

0 1 
2 1 
0 2 
1 3 

私のコードは、これを出力[[1, 2], [0, 2, 3], [1, 0], [1]]で隣接リストに変換することに成功しました。しかし問題は、それを隣接行列に変換することです。私は私のコードの主な問題は、この行であることを認識しています:

n = int(input("Enter the number of vertices: ")) ## E.g. 4 
file = input("Enter the filename: ") ## E.g. graph.txt 

vertices = [] 
matrix = [] ## define list 

for x in range(n): 
    matrix.append([0]*n]) ## append a list for n, e.g. if n = 4 then [[][][][]] 
    vertices.append([]) 

f =open(file) 

z = 0 
for line in f: ##loop statement until no more line in file 
    line = line.split() ## turn every line into a list 
    z+=1 



    for y in range(len(line)): 
     line[y] = line[y].strip() ## remove spaces 
     line[y] = int(line[y]) ## converts line list into integer 
      ## add value of line into main list 

    vertices[line[0]].append(line[1]) 
    vertices[line[1]].append(line[0]) 



for z in range(len(matrix)): 

    for x in range(len(vertices)): 
     matrix[z-1][vertices[x]] = 1 



print(vertices) 
print(matrix) 
+1

for z in range(len(matrix)): neighbors = vertices[z] for x in range(len(neighbors)): matrix[z][neighbors[x]] = 1 

または:パフォーマンスを実現するためには、vertices[z]の名前を作成するために、原則的には良いですか?そのループの 'z'の頭文字は0です。 –

答えて

0

あなたは可能性が-1指標としてz-1を使用しているすべての最初に:ここで

for x in range(len(vertices)): 
    matrix[z-1][vertices[x]] = 1 

は私の完全なコードです、それはちょうどzであるべきです。

第2に、内部ループのvertices[x]にはノード番号があるかのようにアクセスしていますが、ネストされたリストです。代わりに、vertices[z][x]が必要です。なぜあなたは `Z-1 'を使用している

for z, neighbors in enumerate(vertices): 
    for x in neighbors: 
     matrix[z][x] = 1 
関連する問題