Algorithm 无向图中路径冲突的检测算法
我正在为一条铁路做一个模拟器,它由一个无向图表示,其中边是火车轨道,顶点是道岔 每个道岔之间只有一条轨道,允许列车双向行驶 我用Dijkstra单最短路径算法计算每列火车的方向。但现在我需要能够检测到碰撞,并得到结果 例如,假设有两列火车A和B A的路径=(Gt Mx Lg Nm Lg) 当前轨道为Gt 对于B=(Gk Lg Nm Bx A1) 你可以很容易地看到这些火车会在某一点上相互撞击,我正在寻找一种方法来预测和防止这种情况Algorithm 无向图中路径冲突的检测算法,algorithm,graph,path,Algorithm,Graph,Path,我正在为一条铁路做一个模拟器,它由一个无向图表示,其中边是火车轨道,顶点是道岔 每个道岔之间只有一条轨道,允许列车双向行驶 我用Dijkstra单最短路径算法计算每列火车的方向。但现在我需要能够检测到碰撞,并得到结果 例如,假设有两列火车A和B A的路径=(Gt Mx Lg Nm Lg) 当前轨道为Gt 对于B=(Gk Lg Nm Bx A1) 你可以很容易地看到这些火车会在某一点上相互撞击,我正在寻找一种方法来预测和防止这种情况 已经研究过联合查找或Knuth算法x,但我希望你们中的任何人都
已经研究过联合查找或Knuth算法x,但我希望你们中的任何人都能更好地解决这个问题。如果您对时间限制不感兴趣,那么您可以使用应用于网络的混合整数规划 每列火车有一个起点和一个终点。 对于每列列车:
- 创建一个可以在您的网络中流通的“产品”
- 在源节点创建“源”,输出产品(容量为1)
- 在目标节点上创建一个“接收器”,该接收器使用相同的产品(容量为1)
如果你想使用Python,你可以看到这篇文章:你的算法需要考虑时间吗?你有每列火车的速度吗?我有每列火车的速度,还有一个计算顶点之间距离的函数。如果这样做会很好,但如果它不考虑时间就可以工作,我已经很高兴了。您是否正在尝试寻找节点不相交的路径?不一定因为这并不总是意味着会发生碰撞,一列火车可以比另一列火车晚很多时间使用该路径。在这种情况下,没有碰撞。这都是关于知道什么时候在哪个轨道上上锁。