Я использую igraph- python. Я пытаюсь решить проблему, называемую самым длинным индуцированным путем, я вначале выбираю случайный узел, нахожу его соседей, затем выбираю один из соседей на основе значения центральности близости, удаляю другие и т. Д. Мой код следующий:
from random import randint
import networkx as nx
import numpy as np
from igraph import *
from numpy import random
def maximum(a, n):
maxpos = a.index ( max ( a ) )
return maxpos
G = Graph ()
G.add_vertices(5)
G.add_edges([(0, 1), (0, 2),(1,3),(2,3),(3,4)])
n = G.vcount()
first = random.randint(n)
neigh = G.neighbors(first)
clos = G.closeness(vertices=neigh)
induced_path = first
G.delete_vertices(first)
while len(neigh) > 0:
pos = maximum(clos, len(clos))
j= neigh[pos]
np.append(induced_path,j)
print(induced_path)
neigh = np.setdiff1d(neigh,j)
G.delete_vertices(neigh)
neigh = G.neighbors(j)
clos = G.closeness(vertices=neigh)
G.delete_vertices(j)
print(len(induced_path))
, когда я запускаю этот код python, выдающий мне эту ошибку:
Cannot create iterator, invalid vertex id, Invalid vertex id
также существует проблема в линии поиска соседей из j следующим образом:
cannot get neighbors, Invalid vertex id
Traceback:
File "E:/inducedpath/indu.py", line 30, in <module> G.delete_vertices(neigh) igraph._igraph.InternalError: Error at c:\projects\python-igraph\vendor\build\igraph\igraph-0.8.0-msvc\src\iterators.c:764: Cannot create iterator, invalid vertex id, Invalid vertex id