Алгоритм python для поиска единой стоимости из файла .csv

#python #csv #uniform-cost-search

Вопрос:

Я строю такой график и использую библиотеку panda:

 def build_graph(citiesandlist): graph = {}  for l in citiesandlist:   edges = l.split()  n = edges[0]  graph[n] = {}   for i in range(1, len(edges) - 1, 2):  graph[n][edges[i]] = int(edges[i   1]) return graph  

И поиск по этому графику:

 def uniform_cost_search(graph, start, end):  queue = Q.PriorityQueue() queue.put((0, [start]))  while not queue.empty():  n = queue.get()  current = n[1][len(n[1]) - 1]   if end in n[1]:  print("Path found: "   str(n[1])   ", Cost = "   str(n[0]))  break   cost = n[0]  for neighbor in graph[current]:  temp = n[1][:]  temp.append(neighbor)  queue.put((cost   graph[current][neighbor], temp))  

Я могу запустить его в своем main.py:

 citiesanddist = [] df = pd.read_csv('cities.csv', sep='t', header=None)[0]  for i in range(1, len(df)):  citiesanddist.append(str(df[i]).replace(",", " "))  city1 = input("city1: ") city2 = input("city2: ")  graph = build_graph(citiesanddist) uniform_cost_search(graph, city1, city2)  

Например, мой файл .csv выглядит примерно так:

  • -Париж,Барселона,350 -Париж,Лион,70 -Лион,Антверпен,150

Проблема в том, что когда я ввел данные, такие как Париж, в Антверпен, алгоритм просто не увидит Антверпен на графике. Но это дает мне ответ, когда я сделал такой вклад, как Париж в Лион. То, что я пытаюсь сделать, — это заставить его работать в двух направлениях. Как я могу сделать так, чтобы это произошло?

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

1. При построении графика вам необходимо вставить обратные узлы в то же время, что и прямые узлы.