Ошибка при вычислении кратчайшего пути с помощью Networkx - PullRequest
0 голосов
/ 17 июня 2020

Я использую библиотеку Networkx для вычисления кратчайшего пути в построенном мной графике. Это работает почти всегда, но мы обнаружили ошибку, возникающую при попытке найти путь между двумя краями. Когда мы вызываем функцию has_path (), она говорит, что между этими краями есть путь, но метод отображает только часть пути. Например, у нас есть путь: [A, B, C, D, E, F] -> путь от A до F. но метод возвращает только: [A, B, C, D]. Чтобы устранить неполадки, я попытался затем найти путь между D и F, чтобы увидеть, получу ли я другую часть пути, но выдает ошибку:

w = succ [path [-1]] IndexError: индекс списка вне допустимого диапазона. Таким образом, он в основном не работает с использованием метода shorttest_path .. есть какие-либо подсказки?

Это мой код для построения графика и расчета пути.

#Add the Nodes to the graph
    addNodes(grouplist, crossGraph)

    df = getData(groupNum, cnxn)
    for row in df.itertuples():
      # print("Row: " + str(row))
      crossGraph.add_edge(row[1], row[2])
    path = []
    # print(crossGraph.size())
    path = nx.shortest_path(crossGraph, source = opk, target = apk)

размер пути: 5 источник: STMST1S14PHR - место назначения: ONSNBA3N200SDR2G путь: ['STMST1S14PHR', 'NSCLM22675MRXADJ! A', 'MXMUSTX17542GATBP', 'MXMUSTX17542GATBP'! B ',' NSCMMA , 'NSCLM2594MXADJNOPB'] вот что я получаю, когда пытаюсь найти путь между источником и местом назначения. Затем я попытался вычислить путь между 'NSCLM2594MXADJNOPB' и 'ONSNBA3N200SDR2G', чтобы увидеть, могу ли я получить другую часть пути, но я получил следующее: размер пути: 6 источник: NSCLM2594MXADJNOPB - место назначения: ONSNBA3N200SDR2G path: ['ITSIUZ3 'TIDSN65HVD75DGK', 'ITSISL4485EIBZ', 'TIDSN65LBC176AD', 'STMST485ABDR', 'TISSN75HVD10DR', 'ONSNBA3N200SDR2G']

в последний раз я попытался найти путь между 'NSCMNXJ3 и' I25ENOPBUZ, но затем я ошибка:

File "C: \ Users \ MyName \ AppData \ Local \ Programs \ Python \ Python38-32 \ Lib \ site-packages \ networkx \ алгоритмы \ shorttest_paths \ generi c .py" ", строка 170, в кратчайшем_путье paths = nx.bidirectional_shortest_path (G, источник, цель) Файл" C: \ Users \ MyName \ AppData \ Local \ Programs \ Python \ Python38-32 \ Lib \ site-packages \ networkx \ алгоритмы \ Short_paths \ unweighted.py ", строка 237, в двунаправленном_shortest_path w = succ [path [-1]] IndexError: индекс списка вне диапазона

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...