是否有一个通用的算法,我可以使用,以解决以下问题:时隙分配算法
考虑:
背景:一个月,其中有0到1000的事件(任意数量真的)。每个事件都有一个开始日期和结束日期。事件发生在房间中,一次一个(不重叠,但是随后的事件可以分享彼此的结束日期和开始日期)。房间数量不限。
挑战:为事件分配房间,使主持月事件所需的房间数量保持最小。
虽然完整的解决方案是高度赞赏,我正在寻找任何方向,聪明的想法。
class Event:
- int Id;
- DateTime StartDate;
- DateTime EndDate
class Allocation:
- int EventId
- int RoomId
所以我在寻找:
// roomIds is Enumerable.Range(1, int.MaxValue)
IEnumerable<Allocation> GetAllocations(IEnumerable<Event> events, IEnumerable<int> roomIds, int year, int month)
{
...
}
这是功课吗?你有什么尝试? – MoonKnight 2013-02-14 15:22:43
我认为主要想法是,如果你不想找到最佳性能,就是使用递归(或堆栈)来测试每种可能的组合。然后简单地过滤出使用最少房间的工作组合。 – 2013-02-14 15:24:01
不管它是或不是,只要坚持主题。我试过贪婪的算法来分配变化,正在寻找方面的意见。 – user1514042 2013-02-14 15:24:44