Единый алгоритм поиска стоимости 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

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

0 ответов

Другие вопросы по тегам