1

我正在做一个最后一年的项目,在大学课程时间表中使用遗传算法的想法。

该算法的一部分是测试预期的时间表违反了哪些违规行为。其中之一是房间冲突 - 一个房间被双重预订。

使用java,我已经覆盖了我的roomTimeSlot的默认getHashcode(房间的组合和一个给每个时间段的ID,即星期一9-10,星期一10-11等)到我自己的代码我想用这个哈希码来为每个讲座映射每个分配的 roomTimeslot。

我的问题是如何执行此操作以及如何检测碰撞?

4

1 回答 1

0

首先我会放弃哈希的想法......

然后,您可能会创建一个包含开始和结束的间隔对象,并将其放入您的集合中。

您可以轻松地在此类上实现一个可以检测碰撞的方法:

public boolean hasCollision(Interval inter){....}

现在在插入之前迭代你的集合并调用 hasCollision() 方法......

我想优化结果,也可以让 Interval 对象实现 Comparable 并使用 Sorted 集合。

您还可以为此查看区间树数据结构,并仅在区间中没有碰撞/交叉点时添加元素。

于 2012-11-17T20:09:05.030 回答