我正在研究最后一年的项目,即在大学课程时间表中使用遗传算法的想法。
算法的一部分是测试预期时间表违反的违规行为。其中一个是房间冲突 - 一个房间被双重预订。
使用java,我已经覆盖了我的roomTimeSlot的默认getHashcode(房间和每个时间段的id的组合,即星期一9-10,moday 10-11等)到我自己的代码 我想使用这个哈希码来映射每个讲座的每个指定的roomTimeslot。
我的问题是我该怎么做以及如何检测碰撞?
答案 0 :(得分:0)
首先,我会放弃哈希的想法......
然后你可能会创建一个包含开头和结尾的Interval对象,你将它放在你的Collection中。
您可以在此Class上轻松实现可以检测冲突的方法:
public boolean hasCollision(Interval inter){....}
现在,在插入之前,迭代你的集合并调用hasCollision()方法......
我想优化结果,你也可以使Interval对象实现Comparable并使用Sorted集合。
您也可以查看interval tree data structure,并且只有在间隔中没有碰撞/交叉点时才添加元素。