Я пишу приложение в Javascript, которое использует карты Google и вычисляет полный маршрут между сериями ног, основанных на самых близких ногах.Расширенный алгоритм сортировки
Скажем, у меня есть 4 ноги на карте, каждая нога имеет начало и конец Широта и долгота. Пользователь указывает, какие две ноги являются началом и концом маршрута. Каждый конец ноги может подключаться только к другому ногу. Затем конец этой ноги соединяется с началом других ног и так далее. Код определяет, какие ноги начинают соединяться с основанной на ближайшей ноге, которую он может найти.
Нечто подобное, например (пунктирные линии ноги):
start-----------end <-connector-> start----------end <-connector-> start----------end
У меня есть массив всех координат ног, и я хочу, чтобы отсортировать этот массив, так что следует за правильное развитие соединений. Затем я могу использовать массив для генерации коннекторов путем линейного циклирования через него.
массив выглядит примерно так:
[
{start_lat: X, start_lng: X, end_lat: X, end_lng: X},
{start_lat: X, start_lng: X, end_lat: X, end_lng: X},
]
Те будут внутренние ноги. И тогда я буду иметь наружные ноги (две ноги, которые являются началом и концом всего маршрута), хранящиеся в переменных:
var start = {end_lat: X, end_lng: X}
var end = {start_lat: X, start_lng: X}
В качестве примера он может в конечном итоге что-то вроде:
start -> array[0] -> array[1] -> end
Или это может в конечном итоге, как:
start -> array[1] -> array[0] -> end
алгоритма необходимо для сортировки массива на основе пусковой ноги end_lat, end_lng и end_lat конец ноги, end_lng.
Конечным результатом будет большой маршрут, соединенный с кратчайшим путем.
Я изо всех сил пытаюсь придумать способ написания алгоритма сортировки, учитывающий эти уникальные факторы.
Трудно выразить это словами, и я не совсем уверен, как я могу помочь сделать его более ясным, но я отредактирую этот пост, если смогу придумать что-нибудь полезное для добавления. Благодарю.
Edit:
Вот картина того, что я говорю о:
черные линии ноги, красные линии являются соединители, мне нужно будет генерировать после того как я отсортировал массив координат ног в правильном порядке. Генерация разъемов не является частью этого алгоритма, но это всего лишь пример того, что я пытаюсь выполнить, чтобы вы могли понять общую картину. Поскольку вы видите, что между ногами имеются промежутки, ни одна из координат не перекрывается.
Не уверен, нужен ли вам алгоритм сортировки или алгоритм кратчайшего пути ...? Если вы реализуете алгоритм кратчайшего пути, например, Dijkstra, он выплюнет кратчайший путь, тогда вам просто нужно убедиться, что вы поддерживаете ссылку на исходные местоположения в массиве, чтобы «сортировать», как вы хотите. –
Может нарисовать картинку? У меня возникли проблемы с пониманием того, что вы хотите сделать. – mindvirus
mdkess Я добавил фотографию на главный пост. WilliamGaul Я думаю, что это сочетание обоих? – andro1d