我试图将铁路中的路径表示为数据结构,但我很难表示出道岔。
这感觉像一个图形问题,但是与常规图形相比有所不同。 铁路道岔是连接到其他三个顶点的顶点。 A,B和C。 但是,在铁路系统中,图形是通过一个方向遍历的。 因此,您可以采用路径B->道岔-> A和C->道岔-> A,但不能采用路径B->道岔-> C。
是否有一个(图形)数据结构可以表示带有方向的路径?
这种数据结构将为软件系统提供基础,以使小型铁路模型自动化。
答案 0 :(得分:3)
您可以将道岔表示为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
出发
答案 1 :(得分:2)
每条路径都可以视为顶点,而两条路径之间的连接可以视为边缘。
B->
A
C->
这可以表示为Go地图中的图形,
看看以下内容, 在您的示例中,从B-> A和C-> A存在定向连接。这可以在地图中如下表示。
graph := map[string][]string{
"B": []string{"A"},
"C": []string{"A"},
}
映射中的每个键代表定向连接的起始路径。相应键的数组中的每个值都是目标路径。