什么样的数据结构适合于用道岔来表示铁路?

时间:2019-07-04 03:02:59

标签: algorithm go data-structures

我试图将铁路中的路径表示为数据结构,但我很难表示出道岔。

这感觉像一个图形问题,但是与常规图形相比有所不同。 铁路道岔是连接到其他三个顶点的顶点。 A,B和C。 但是,在铁路系统中,图形是通过一个方向遍历的。 因此,您可以采用路径B->道岔-> A和C->道岔-> A,但不能采用路径B->道岔-> C。

是否有一个(图形)数据结构可以表示带有方向的路径?

这种数据结构将为软件系统提供基础,以使小型铁路模型自动化。

2 个答案:

答案 0 :(得分:3)

您可以将道岔表示为2个顶点-每个道岔状态都代表一个。因此,如果您具有源A,目的地BC以及可以在BC之间切换的道岔-该道岔将有2个顶点: TBTC。此外,您还将具有以下优势:A->TBTB->BA->TCTC->C

这使您可以从A -> TB -> BA -> TC -> C出发。而且,由于您在TBTC之间没有没有优势,因此您将无法直接从B -> C出发

答案 1 :(得分:2)

每条路径都可以视为顶点,而两条路径之间的连接可以视为边缘。

B->
A
C->

这可以表示为Go地图中的图形,

看看以下内容, 在您的示例中,从B-> A和C-> A存在定向连接。这可以在地图中如下表示。

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

映射中的每个键代表定向连接的起始路径。相应键的数组中的每个值都是目标路径。