我正在做一个最后一年的项目,在大学课表中使用遗传算法的想法。
算法的一部分是测试预期时间表违反了哪些规定。其中一个是房间冲突-一个被重复预订的房间。
使用java,我已经覆盖了我的roomTimeslot的默认getHashcode (房间和分配给每个时间段的id的组合,例如星期一9-10,星期一10-11等等)到我自己的代码,我想使用这个哈希码来映射每个讲座的每个分配的roomTimeslot。
我的问题是如何做到这一点,以及如何检测冲突?
发布于 2012-11-18 04:09:05
首先,我会放弃Hash的想法……
然后,您可能会创建一个Interval对象,其中包含要放入Collection中的start和end。
您可以很容易地在这个类上实现一个可以检测冲突的方法:
public boolean hasCollision(Interval inter){....}
现在,在插入之前,遍历集合并调用hasCollision()方法...
如果您想优化结果,您还可以使Interval对象实现可比较并使用排序集合。
您还可以查看interval tree data structure以了解这一点,并仅在间隔中没有冲突/交集时添加元素。
https://stackoverflow.com/questions/13275043
复制相似问题