一般设计问题

时间:2009-11-02 08:01:11

标签: algorithm

我有一个一般设计问题: 有一个交叉路口,有四条连接道路。每条路有2条车道。 设计程序来处理这种连接的最佳方法是什么。如果它们不相互干扰,它应该允许2辆车2通过交叉点。 1辆车在另一辆车之前进来,他们都应该使用同一部分的交叉路口,第一辆车应该优先考虑。此外,2辆汽车可能会在同一时间到达交叉路口。 什么是这个问题的最佳设计?究竟应该锁定什么,以便最好地使用交叉点?

谢谢!

3 个答案:

答案 0 :(得分:0)

每辆车都应锁定要通过的车道部分。如果其中一个部件被锁定,那么汽车应该等到它被释放。

答案 1 :(得分:0)

您如何考虑为交汇点的每个部分设置4个不同的队列。进来的每辆车进入相关的队列(应该进入多个队列?),只有在汽车离开所有队列后才能通过交叉点。 但仍然不确定它的最佳实现是什么。

答案 2 :(得分:0)

创建一个圆形缓冲区,每个道路有两个条目(一个用于入站,一个用于出站),在交叉路口开会。

对于您必须路由的每辆车,将其名称放入圆形缓冲区中,以获取其来源(入站)和目的地(出站)。然后迭代通过圆形缓冲区,如果你得到同一辆车的两个实例,那么该车可能会行驶。之后从其他车上随机挑选。

我有一种感觉很不清楚所以考虑一个我们称之为N,E,S和W的4条道路的交叉路口。到那个我们将有3辆车,A从东方转向南方,B从南向北行驶,西行向东行驶。

圆形缓冲区可以这样构建(i =入站,o =出站:

Ni No Ei Eo Si So Wi Wo
B  -  C  A  A  B  -  C

当我们从左向右迭代时,我们意识到两个A是相邻的,所以他们可以去,但B和C不相邻,所以这些车相互阻挡。为这个光周期随机选择一个,让另一个进入下一个光周期。所以A和B都可以去,A和C可以去。

注1:测试相邻会忽略空白,所以

Ni No Ei Eo Si So Wi Wo
D  E  -  -  E  D  -  -

模拟一辆汽车向北行驶,另一辆行驶在南方,E和D都相邻。

注意2:我已经将其映射为左侧驾驶,因为这就是我的工作。你必须在右边驾驶镜像它。

注意3:你不能覆盖缓冲区中的位置,如果两辆车想要同一个目的地,他们会自动阻止,你应该把第一个留在那里,下次考虑另一个。