我想要做的是创建一个程序,为驾驶考试分配路线。将有三条不同的路线,在某些点连接在一起。从不应该在一个交叉点有一个以上的学生。
解决这个问题的最佳方法是按时间安排这些交互点。
这不是我唯一的问题,我需要将路线平均分配给审查员。 因此,路线1将被提供给审查员1 路线2 - 考官2 路线3-考官3 ...
皇家鲍曼建议:
从开始计算碰撞时间。
1号线有6分。
{A,B,C,D,E,F}
2号线有5分。
{A,F,G,H,I}
3号线有6分。
{A,H,K,L,M,N}
可能的碰撞:
{A,F,H}
所以你需要计算以下时间:
路线1:A-> F,A-> A
路线2:A-> F,A-> H,A-> A
路线3:A-> H,A-> A
从这里,您可以计算产生碰撞的时差。
如果从路线1A到1F和5路需要20分钟 从2A路线到2F路线的分钟,然后你就知道发生了碰撞 如果在路线2开始预约15分钟后将会发生 你开始在1号公路预约。
然后你会有一组非工作碰撞:
1号线& 2碰撞:15,25,40
1号线& 3碰撞:25,30
2号线& 3碰撞:30,40,45
我可以理解这一点。但就算法而言,我不知道从哪里开始。 如果有人可以帮助我使用一些伪代码来解决问题,或者在我自己的脑海中让它更清晰。它会有很大的帮助。
答案 0 :(得分:4)
您应该能够从开始计算碰撞时间。
路线1 有6分。 {A,B,C,D,E,F}
路线2 有5分。 {A,F,G,H,I}
路线3 有6分。 {A,H,K,L,M,N}
可能的碰撞:{A,F,H}
所以你需要计算以下时间:
路线1:A-> F,A-> A
路线2:A-> F,A-> H,A-> A
路线3:A-> H,A-> A
从这里,您可以计算产生碰撞的时差。
如果您从路线1A到1F路线需要20分钟,从2A路线到2F路线需要5分钟,那么您知道如果在您开始预约后15分钟就开始预约路线2将发生碰撞在路线1预约。
然后你会有一组非工作碰撞:
1号线& 2碰撞:15,25,40
1号线& 3碰撞:25,30
2号线& 3碰撞:30,40,45
从这里开始,您应该可以轻松地创建日程安排而不会发生冲突。
答案 1 :(得分:4)
我假设你没有要求提供关于编写超级算法的技巧,这种算法可以同时解决数千条交叉路口的数百条路径。听起来你需要一些简单易用的东西,所以让我们瞄准它。
首先,让我们简化问题。看看地图,你真正说的是这样的:如果一个学生在早上8点开始路线1,他将在8:03到8:05之间的交叉点A,然后在交叉点B的某个时间在8点之间:07和8:09。
为了确保没有其他学生在十字路口,你可以考虑第一个人从8:03-8:05“预订”交叉口A,并且从8:07-8:09类似地预测交叉口B“预订”
每个十字路口都有自己的忙/自由表。
每次安排路线时,都会在您认为学生进入路线时预订适当的路口。
当寻找路线的最早可用时间时,如果您在路线上经过的每个交叉路口都可用,则通过路线并考虑该路线的起始时间X“可用” d穿过他们。