Eu sou novo no fórum, e novo na linguagem Python. Estou fazendo um programinha que lê um arquivo .txt para obter os dados de um grafo. Efetuada a leitura, eu preciso criar uma matriz de adjacência para ele. a Matriz de adjacência é uma matriz binária que marca com 1 a existência de aresta entre dois vértices do grafo, no qual sua dimenção é n x n, onde n é o número de vértices contidos no grafo.
Para criar a criar a matriz de adjacência, iniciei uma matriz preenchendo-a com zeros da seguinte forma:
matrizAdjacencia = [[0 for i in range(1,numVertice+1)] for j in range(1,numVertice+1)]
Logo em seguida, para ler cada linha do arquivo e gerar a matriz, escrevi o seguinte código:
for i in range(1,numAresta+1):
str = arquivo.readline()
str = str.split()
origem = int(str[0])
destino = int(str[1])
distancia = int(str[2])
custo = (str[3])
custo = custo.split('\n')
custo = float(custo[0])
matrizAdjacencia[origem][destino] = 1
Porém quando executo o código, exibe o erro :
"matrizAdjacencia[origem][destino] = 1
IndexError: list index out of range"
Eu imaginei que o erro ocorresse por que o for está em relação ao número de arestas (100) e a inicialização da matriz foi em relação ao número de vértices (40), porém não me parece que estou percorrendo a matriz iniciada, estou apenas acessando os índices, e este erro não parece fazer sentido.
Pergunta
Fernandus
Olá Pessoal,
Eu sou novo no fórum, e novo na linguagem Python. Estou fazendo um programinha que lê um arquivo .txt para obter os dados de um grafo. Efetuada a leitura, eu preciso criar uma matriz de adjacência para ele. a Matriz de adjacência é uma matriz binária que marca com 1 a existência de aresta entre dois vértices do grafo, no qual sua dimenção é n x n, onde n é o número de vértices contidos no grafo.
Para criar a criar a matriz de adjacência, iniciei uma matriz preenchendo-a com zeros da seguinte forma:
matrizAdjacencia = [[0 for i in range(1,numVertice+1)] for j in range(1,numVertice+1)]
Logo em seguida, para ler cada linha do arquivo e gerar a matriz, escrevi o seguinte código:
for i in range(1,numAresta+1):
str = arquivo.readline()
str = str.split()
origem = int(str[0])
destino = int(str[1])
distancia = int(str[2])
custo = (str[3])
custo = custo.split('\n')
custo = float(custo[0])
matrizAdjacencia[origem][destino] = 1
Porém quando executo o código, exibe o erro :
"matrizAdjacencia[origem][destino] = 1
IndexError: list index out of range"
Eu imaginei que o erro ocorresse por que o for está em relação ao número de arestas (100) e a inicialização da matriz foi em relação ao número de vértices (40), porém não me parece que estou percorrendo a matriz iniciada, estou apenas acessando os índices, e este erro não parece fazer sentido.
Agradeço desde já a todos.
Link para o comentário
Compartilhar em outros sites
7 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.