是否有一個通用的算法,我可以使用,以解決以下問題:時隙分配算法
考慮:
背景:一個月,其中有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