Я бы предложил создать разные модели данных, которые бы обрабатывали разные части вашей проблемы (потому что у вас разные ограниченные контексты).
Использование ориентированного графа не составляет труда.Вы должны реализовать его очень абстрактно, чтобы вы могли повторно использовать достойные, проверенные алгоритмы поиска пути.В зависимости от выбранного вами алгоритма (A *, вероятно, является хорошим кандидатом), ваша модель данных должна быть оптимизирована для этого алгоритма.В случае A * это начинается с определения значимой, практически релевантной топологической сортировки на ваших станциях метро (евклидово расстояние хорошо для начала, но, анализируя природу ваших данных и настраивая их, вы, вероятно, получите приличный прирост производительности).Другим аспектом является использование кешей для различных вычислений и быстрое удаление станций.
Для представления вы хотите создать другую модель вашего графика, которая может содержать всю информацию, относящуюся к представлению (цвета, тексты и т. Д.).