Единый алгоритм поиска стоимости Python из файла .csv
Я строю такой график и использую библиотеку панды:
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
Проблема в том, что когда я ввел данные типа Париж в Антверпен, алгоритм просто не увидит Антверпен на графике. Но это дает мне ответ, когда я дал такой ввод, как Париж в Лион. То, что я пытаюсь сделать, это заставить его работать в двух направлениях. Как я могу это сделать?