【问题标题】:A Route Assignment Program Algorithm一种路线分配程序算法
【发布时间】:2012-02-25 06:29:06
【问题描述】:

我想做的是创建一个程序,为驾驶考试分配路线。将有三条不同的路线,在某些点连接在一起。一个交叉点永远不应该有超过一个学生。

解决此问题的最佳方法是按时间安排这些交汇点。

这不是我唯一的问题,我需要将路线平均分配给考官。 所以路线 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 分钟 从 Route 2A 到 Route 2F 需要几分钟,然后你就知道发生了碰撞 如果在 Route 2 上开始约会正好 15 分钟后会发生 您在 Route 1 开始预约。

然后你会有一组无效的碰撞:

路线 1 和 2 在 15、25、40 处相撞

路线 1 和 3 在 25、30 处相撞

Route 2 & 3 在 30, 40, 45 相撞

这点我可以理解。但就算法而言,我不知道从哪里开始。 如果有人可以帮助我使用一些伪代码来解决问题,或者让我自己更清楚。这会很有帮助。

【问题讨论】:

  • 另外,学生可以同时离开和返回总部,还是违反你的交叉​​规则?
  • "什么是最好的编码方式"?好吧,当然不会让别人为你思考:)
  • 我还想提一下,您所有不与另一条路线发生冲突的点都不需要在那里。只需将其完全删除。在路线一的情况下,您只需要从起点到第二点到最后一点,再到终点(如果顺时针方向)。第二条路线只有3个点,第三条也是。从技术上讲,这只是数据更改,而不是算法更改,但这确实意味着您不再需要支持非冲突情况。
  • 如果您提到这是后续行动,那就太好了。我认为 The Real Baumann 是一些奇特的算法。你让它变得复杂。您知道哪些路线无法安排,因为它们可能会发生碰撞,尽管这完全取决于驾驶员的速度。您在上一个问题上收到的答案为您提供了解决此问题所需的一切。我们除了把东西带到餐桌上的人。
  • 红绿灯会有帮助。

标签: algorithm pseudocode


【解决方案1】:

您应该能够从一开始就计算碰撞时间。

Route 1 有 6 个点。 {A,B,C,D,E,F}

Route 2 有 5 分。 {A,F,G,H,I}

Route 3 有 6 个点。 {A,H,K,L,M,N}

可能的碰撞 at:{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 分钟,那么您知道如果在路线 2 上开始约会后正好 15 分钟就会发生碰撞1号线预约。

然后你会有一组无效的碰撞:

路线 1 和 2 在 15、25、40 处相撞

路线 1 和 3 在 25、30 处相撞

Route 2 & 3 在 30, 40, 45 相撞

从这里您应该可以很容易地创建您的日程安排而不会发生冲突。

【讨论】:

  • 感谢您花时间在这里帮助我,也感谢您在我的脑海中简化它。如上所述,计划是最好的前进方式。也谢谢你的回复。
【解决方案2】:

我假设您不是在寻求有关编写可以同时解决数百条路径和数千个交叉点的超级算法的技巧。听起来您需要一些简单且可维护的东西,所以让我们以此为目标。

首先,让我们简化问题。看地图,你真正想说的是:如果一个学生早上 8 点开始路线 1,他将在 8:03 到 8:05 之间的某个时间到达交叉路口 A,然后在 8 点之间的某个时间到达交叉路口 B :07 和 8:09。

为确保十字路口没有其他学生,您可以考虑第一个人在 8:03-8:05 之间“预订”了十字路口 A,在 8:07-8:09 期间同样“预订”了十字路口 B .

每个路口都有自己的忙/闲桌子。

每次您安排路线时,您都会在您认为学生会在其中的时间内预订适当的十字路口。

在寻找路线的最早可用时间时,您会遍历路线并考虑该路线的开始时间 X“可用”,前提是您在路线上经过的每个交叉路口中的d 通过它们。

【讨论】:

  • 感谢您抽出宝贵的时间回复,我认为这将是一个时间表。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-07-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-03
  • 1970-01-01
  • 2020-02-14
相关资源
最近更新 更多