鉴于下面这个互锁图,我需要什么算法才能找到两点之间(可能是最短的)允许路径?我对这个理论感兴趣,例如Dijkstra可以处理这个,它是否必须是有向图,可能还有其他约束......

更多上下文 .

enter image description here
红色按钮定义路径的开始/结束,如果它有效* .
绿色指示灯如果亮起,则显示任何活动路线 .
黄色指示灯如果亮起,则显示每个开关的位置 .

*定义"valid route":列车必须通过的任何数量的开关,而不改变方向,以达到其目标轨道 .

上面的例子:列车进入主轨道#200并且将被移动到轨道#12,或者相反 .

Invalid route example (需要改变方向):
enter image description here

Two valid routes (绿色路线有利):
enter image description here

我在学校接触过Dijkstra,但这已经超出了我的想象 . 欢迎任何指示 .

TL; DR:问题:

  • 我应该使用哪种算法?

  • 边缘重量?

  • 定向边缘?

  • ......