Networkx is_negatively_weighted Имеет Значение False, Но Используйте Возврат Дейкстры («Найдены противоречивые пути:», «отрицательные веса?»)

#python #networkx #dijkstra

Вопрос:

Я хотел использовать gragh,чтобы получить кратчайший путь, но networkx подсказал мне » Ошибка значения: («Найдены противоречивые пути:», «отрицательные веса?»)».После этого я проверил все грани грэга,все они были больше нуля. В конце концов, я использую nx.is_negatively_weighted(G, вес= «вес»), который возвращает значение False.однако Дейкстра также возвращается («Найдены противоречивые пути:», » отрицательные веса?»), когда я пытался найти кратчайший путь. ниже приведен мой код:

 def Get_Shortest_Car_To_Cus_Path( # 获得车辆到乘客的最短路径  car_names, # 符合条件的车辆编号们 (就算单个pd.data对象也没事)  cus_name, # 目标乘客  car_updata: bool = False, # 是否更新节点的车辆信息  cus_updata: bool = False, # 是否更新节点的乘客信息  weight: str = 'weight', # 计算最短路径的权重名称,有三类(weight, shape_len, wgs84_length)  **kwargs ):  G = kwargs['G']  # G = G.copy() # 创建副本,从副本导出  if car_updata: # 更新节点的车辆信息  G = Updata_G_Map_Car(  car_names=car_names,  **kwargs)  # 添加乘客的O点  if cus_updata:  G = Updata_G_Map_cus(  cus_names=[cus_name],  **kwargs  )  print(nx.is_negatively_weighted(G, weight='weight'))  if len(car_names) != 1:  length, path = nx.multi_source_dijkstra(G=G, sources=set(car_names), target=cus_name   '_出发地',  weight=weight)  else:  path = nx.dijkstra_path(G=G, source=str(car_names), target=cus_name   '_出发地', weight=weight)  length = path_lenght(G=G, path=path, weight=weight)  path = get_pure_path(old_path=path)  return length, path  

Каждый раз,когда я пытаюсь найти кратчайший путь, nx.is_negatively_weighted(G,вес= «вес») говорит мне, что граф не отрицательный, но nx.multi_source_dijkstra() говорит мне, что график имеет отрицательные веса. Почему это произошло?

Комментарии:

1. Что произойдет, если вы измените вызов nx.dijkstra_path(...) на «иметь аргумент weight='weight' «, а не weight=weight «нет»?