1

私は大学の授業の時間割に遺伝的アルゴリズムを使用するという最終年度のプロジェクトに取り組んでいます。

アルゴリズムの一部は、将来のタイムテーブルが破る違反をテストすることです。そのうちの 1 つは、部屋の衝突です。部屋が二重に予約されています。

Java を使用して、roomTimeSlot のデフォルトの getHashcode (部屋と各タイムスロットに与えられた ID の組み合わせ、つまり月曜 9 ~ 10 日、月曜 10 ~ 11 日など) を自分のコードにオーバーライドしました。このハッシュコードを使用して、各レクチャーに割り当てられたすべての部屋タイムスロットをマップします。

私の質問は、これを行う方法と、衝突を検出する方法です。

4

1 に答える 1

0

まず、ハッシュのアイデアを失います...

次に、コレクションに入れる開始点と終了点を含む Interval オブジェクトを作成します。

衝突を検出できるこのクラスのメソッドを簡単に実装できます。

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

挿入する前に、コレクションを反復処理して hasCollision() メソッドを呼び出します...

結果を最適化したい場合は、Interval オブジェクトに Comparable を実装させ、Sorted コレクションを使用することもできます。

このために間隔ツリーのデータ構造を見て、間隔に衝突/交差がない場合にのみ要素を追加することもできます。

于 2012-11-17T20:09:05.030 に答える