Какая структура данных подходит для представления железных дорог с явками? - PullRequest
1 голос
/ 04 июля 2019

Я пытаюсь представить пути на железной дороге в виде структуры данных, но мне сложно представить стрелочные переводы.

Это похоже на проблему с графом, но есть разница по сравнению с обычными графами. Железнодорожная стрелка - это вершина, соединенная с тремя другими вершинами. А, В и С. Но в железнодорожной системе график пересекается с направлением. Таким образом, вы можете выбрать путь B -> стрелка -> A и C -> стрелка -> A, но не можете выбрать путь B -> стрелка -> C.

Существует ли (графическая) структура данных, которая позволяет представлять пути с направлениями?

Эта структура данных послужит основой для программной системы для автоматизации малой модели железной дороги.

Ответы [ 2 ]

3 голосов
/ 04 июля 2019

Вы можете представить явку в виде 2-х вершин - по одной на каждое состояние явки.Поэтому, если у вас есть источник A и пункты назначения B и C и явка, которая может переключаться между B и C - у вас будет 2 вершины для этой явки: TB и TC.Также у вас будут следующие ребра: A->TB, TB->B, A->TC, TC->C

Это позволяет вам путешествовать с A -> TB -> B и с A -> TC -> C.И так как у вас не будет без края между TB и TC - вы не сможете путешествовать с B -> C напрямую

2 голосов
/ 04 июля 2019

Каждый путь может рассматриваться как вершина, а соединение двух путей - как ребро.

B ->
A
C ->

Это может быть представлено в виде графика на карте Go,

Взгляните на следующее, В вашем примере направленное соединение существует из B -> A и C -> A. Это может быть представлено на карте следующим образом.

graph := map[string][]string{
    "B": []string{"A"},
    "C": []string{"A"},
}

Каждый ключ на карте представляет начальный путь направленного соединения. Каждое значение в массиве соответствующего ключа является целевым путем.

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