Ultima modifica:
Buongiorno a tutti,
mi sto cimentando da poco nel linguaggio python e sto provando a rapprensentare un grafo a partire dalla sua matrice di adiacenza.
La matrice di adiacenza l'ho caricata da un file csv.
Quello che ho provato a fare è questo:
Il problema che riscontro è nella linea evidenziata in rosso, ed è il seguente:
"IndexError: list index out of range", da quello che ho capito l'errore sta nel fatto che gli indici siano fuori dalla lista.
La matrice è una matrice 6 * 6, quindi gli indici dovrebbero andare da 0 a 5, ho provato anche a fare varie prove ma non riesco a capire dove sto sbagliando.
c'è qualcuno che mi può aiutare, soprattutto a capire quale è l'errore concettuale che c'è dietro.
Grazie
mi sto cimentando da poco nel linguaggio python e sto provando a rapprensentare un grafo a partire dalla sua matrice di adiacenza.
La matrice di adiacenza l'ho caricata da un file csv.
Quello che ho provato a fare è questo:
Codice:
import csv
import numpy as np
from pythonds import*
with open("grafo.csv", newline="") as csvfile:
grafo = list(csv.reader(csvfile,delimiter=",")) # grafo contiene il contenuto del filecsv
for row in grafo:
print(', '.join(row)) # stampo la matrice di adiacenza
g=Graph()
num_colonne = len(grafo)
for v in range (1, num_colonne+1):
g.addVertex(v)
print ("vertici del grafo: ", g.getVertices())
for u in range(0,num_colonne -1):
for v in range(0,num_colonne -1):
if grafo[u][v]==1:
g.addEdge(u,v)
print(u,v)
Il problema che riscontro è nella linea evidenziata in rosso, ed è il seguente:
"IndexError: list index out of range", da quello che ho capito l'errore sta nel fatto che gli indici siano fuori dalla lista.
La matrice è una matrice 6 * 6, quindi gli indici dovrebbero andare da 0 a 5, ho provato anche a fare varie prove ma non riesco a capire dove sto sbagliando.
c'è qualcuno che mi può aiutare, soprattutto a capire quale è l'errore concettuale che c'è dietro.
Grazie
Python:
import csv
import numpy as np
from pythonds import*
with open("grafo.csv", newline="") as csvfile:
grafo = list(csv.reader(csvfile,delimiter=",")) # grafo contiene il contenuto del filecsv
for row in grafo:
print(', '.join(row)) # stampo la matrice di adiacenza
g=Graph()
num_colonne = len(grafo)
print(len(grafo))
for v in range (1, num_colonne+1):
g.addVertex(v)
print ("vertici del grafo: ", g.getVertices())
for u in range(0,num_colonne -1):
for v in range(0,num_colonne -1):
print(u,v)
if grafo[u][v]==1:
g.addEdge(u,v)