优化停车场问题。我应该使用哪些算法来适应该批次中最多的汽车?

时间:2010-05-13 17:38:06

标签: algorithm machine-learning np-complete

我会使用什么算法(强力与否)将多少辆汽车(假设所有汽车的尺寸都相同)放入停车场,这样至少有一个出口(从集装箱出来)而且汽车不能被封锁或者有人能告诉我一个以编程方式解决这个问题的例子。

停车场的形状各不相同,但如果你想假设它的形状不变那么好。

另一个编辑: 假设停车场的行车距离不是一个因素(尽管如果它是加权因素对车辆数量的影响,那将是非常棒的。)

另一个编辑: 假设2维(没有起重机或驾驶汽车)。

另一个编辑: 一旦停车,你就无法移动汽车(这不是代客停车场)。

4 个答案:

答案 0 :(得分:5)

好吧,让我们简化/具体化一点。假设我们的汽车是单位正方形,停车场是N×N,我们需要从左下角进入/退出。一个简单的模式使汽车几​​乎完全占据了2/3(显示为N = 12):

+------------+
|C CC CC CC C|
|C CC CC CC C|
|C CC CC CC C|
|C CC CC CC C|
|C CC CC CC C|
|C CC CC CC C|
|C CC CC CC C|
|C CC CC CC C|
|C CC CC CC C|
|C CC CC CC C|
|C CC CC CC C|
             |
  -----------+

我可以证明你可以做的最好的事情就是让2/3满了。想象一下,你通过一个完整的车库开始建立空的空间,并一次驱逐一个(当前可到达的)汽车。每次拆卸汽车时,您最多可以生产3辆新到达的汽车,并拆除一辆曾经可以到达的汽车(现在是一个空地)。因此,对于您制作的每个空间,您最多可以创建2个可到达的汽车。要制作2/3 N ^ 2个可到达的汽车,你需要制作至少1/3 N ^ 2个空格,这就是你拥有的所有方格。因此,您最多可以将车库填满2/3。

上述简单模式是渐近最优的,因为其密度接近2/3,因为N - >无穷。 (有点无聊,我希望看起来像树状图案能做得更好。)

答案 1 :(得分:1)

这基本上等同于bin-packing,并且要求出口位于特定位置并且所有车辆都可以退出 - 这本身就是一个难题!

所以你的问题至少是NP难的。

答案 2 :(得分:0)

您对效率的定义是否是大量特定尺寸和形状的停车位数量最多(假设每辆车都可以在不移动任何其他车辆的情况下被赶走)?如果是这样,这是一个包装问题,而不是背包问题,它对我来说听起来像NP,但任何现实世界的解决方案范围都很小,可以通过实际的详尽搜索来解决。

答案 3 :(得分:0)

我认为技术上可能是NP完整的。但我认为您可以开发一套智能解决方案,每个解决方案都基于最后一次的体验,并通过算法从计算出的集合中选择最佳解决方案。您可能无法证明这是最好的解决方案。但是从实用的角度来看,你有一个优化的停车场,所以如果你有无限的时间在那里再挤三辆车那么真的很重要吗?