Как рассчитать наиболее оптимальные маршруты движения одновременно с mySQL? - PullRequest
0 голосов
/ 21 апреля 2020

Мне нужно знать, какие маршруты движения наиболее оптимальны для каждого из народов одновременно (скажем, на 4 часа). Эти народы начинаются одновременно из Города А (* см. Таблицу).

У меня есть три mysql таблицы, как показано ниже:

Таблицы

people:
id    name
1     People A
2     People B
3     People C

city:
id    name
1     City A
2     City B
3     City C
...   ...
26    City Z

distance:
fromCity toCity distance (km) time (appox. travel in minutes)
1        2      5.0            30
1        3      3.0            25
1        4      6.0            42
...
2        3      4.0            27
2        4      7.0            53
2        5      6.0            50
...

Результат, который я ожидал:

People    Travel
Name      Route
========  ======
People A  City A -> City B -> City C -> City D
People B  City A -> City G -> City H -> City J -> City L
People C  City A -> City M -> City N -> City P

Описание: Все народы начинают с Города А, и у каждого из них есть свои собственные путешествия Маршруты и посещенные города могут относиться только к одному человеку. Пример:

Peope A has route:
City A -> City B -> City C -> City D.

=> Then City B, City C, and City D only visited by people A.

People B has route:
City A -> City G -> City H -> City J -> City L.

=> Then City G -> City H -> City J -> City L only visited by people B.
...

Сейчас я могу только запросить город и расстояние:

select
    distance.fromCity
    (select city.name from city where id = distance.fromCity) as fromCityName,
    distance.toCity,
    (select city.name from city where id = distance.toCity) as toCityName,
    distance,
    time
from distance

Не знаю, как рассчитать оптимальные пути для этих народов?

Заранее спасибо.

1 Ответ

0 голосов
/ 21 апреля 2020

Это похоже на проблему путешествующего продавца. Так что вам нужен алгоритм для поиска кратчайшего пути.

Пример хранимой процедуры для алгоритма кратчайшего пути Дейкстры можно найти здесь.

http://www.artfulsoftware.com/infotree/qrytip.php?id=766&m=0

Для общего понимания алгоритма, вы можете начать здесь https://en.wikipedia.org/wiki/Dijkstra%27s_algorithm

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...