2012-11-07 21 views
1

我正在研究最后一年的项目,即在大学时间表中使用遗传算法的想法。GA中的哈希

该算法的一部分是测试什么违反预期的时间表中断。其中之一是房间冲突 - 一个房间被双重预订。

使用java,我已经覆盖了我的roomTimeSlot的默认getHashcode(房间和给每个时间段,即星期一9-10,moday 10-11等给一个id的组合)到我自己的代码 我想要使用此散列码为每个讲座映射每个指定的roomTimeslot。

我的问题是我该如何做,如何检测碰撞?

+0

如何使用HashMap? – assylias

+0

通过比较哈希码来检测碰撞。我不确定我是否理解这个问题。 –

+0

我知道我没有解释得很好,我如何比较代码?通过把它们放到一个hashMap中呢?我理解它背后的理论,而不是如何实现它 – Melo1991

回答

0

首先,我将失去哈希的想法...

,那么你可能会创建一个包含开始和结束的时间间隔对象,你是在您的收藏把。

您可以轻松地实现这个类的方法,可以检测到冲突:插入你遍历你采集和调用hasCollision()方法之前

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

现在...

我你要优化结果,还可以使Interval对象实现Comparable并使用Sorted集合。

您也可以查看interval tree data structure,并且仅在间隔中没有碰撞/交叉时才添加元素。