решения этого можно найти с помощью стандартных алгоритмов дискретных маршрутизации
этих алгоритмов необходим набор узлов (старта, назначения, ваших городов) и ребер между этими узлами (представляющих возможные дорогами или в более общем плане расстояние между местами.)
узлами и ребрами образует граф ... начальная точку и назначения известно ... Теперь вы можете использовать алгоритмы, такие как A * или djikstra решить маршрут вдоль этого графика
типичных проблемой для этого подхода может быть то, что у вас нет определений для ребер (u прямые пути соседей между местоположениями). Вы могли бы создать такую «дорожную сеть» различными способами, например:
Initialize «идентификатор_сеть» с 0
принять Ваше местонахождение, и найти ближайшее другое место. измерить расстояние и умножить его на коэффициент. теперь подключите каждое местоположение к исходному местоположению, которое имеет расстояние меньше этого значения и еще не подключено к текущему местоположению. добавьте все местоположения, которые были связаны этим шагом со списком. отметьте текущее местоположение текущим «Network_ID», повторите этот шаг для следующего местоположения в этом списке. если в вашем списке заканчивается место, увеличьте «Network_ID» и выберите случайное местоположение, которое еще не обработано, и повторите шаг
после того, как все местоположения обработаны, у вас есть одна или несколько дорожных сетей (если несколько, они еще не подключены, добавьте подходящую границу между ними или перезапустите процесс с большим коэффициентом).
вы должны убедиться, что либо начальный, либо конечный пункт имеют один и тот же сетевой_идентификатор или что обе сети были подключены
Имеет ли y наша таблица городов включает данные привязки? например «город А в город Б, сесть на дорогу № 57»? Помещения сами по себе бесполезны, если у вас нет данных о том, как они соединяются. В противном случае простым ответом будет «диск непосредственно между пусковыми и конечными точками» –