, поэтому я создаю код для расчета кратчайшего пути с использованием networkx. Я создал трехмерный массив, используя numpy, а затем рассчитал кратчайший путь, например:
import numpy as np
import networkx as nx
arr = np.random.randint(1, 100, size = (2, 5, 5)) #3D array
for i in arr:
graph = nx.from_numpy_array(i, create_using = nx.DiGraph)
path = nx.shortest_path(graph, 0, 3, weight = 'weight')
print(path)
Поскольку я использую две матрицы, я получил следующий вывод:
[0, 1, 3] #path1
[0, 3] #path2
После этого я решил создать функцию, которая будет выполнять ту же функцию, например:
import numpy as np
import networkx as nx
arr = np.random.randint(1, 100, size = (2, 5, 5)) #3D array
def shortest(prices):
for i in arr:
graph = nx.from_numpy_array(i, create_using = nx.DiGraph)
path = nx.shortest_path(graph, 0, 3, weight = 'weight')
return path
print(shortest(arr))
, и я получу следующий вывод:
[0, 1, 3] #same as path 1
И если я, если изменить позицию «обратного пути», подобного этому:
def shortest(precios):
for i in arr:
graph = nx.from_numpy_array(i, create_using = nx.DiGraph)
path = nx.shortest_path(graph, 0, 3, weight = 'weight')
return path
print(shortest(arr))
Я получил следующий вывод:
[0, 3] #same as path 2
Я не могу получить два пути в одном и том же выводе, используя мою функцию. Есть идеи, что здесь происходит? Я практиковался в использовании функций в python, так как я немного новичок в топи c, поэтому я надеялся, что вы поможете мне увидеть, что не так? Спасибо!