我是一名IT人員/數學怪人,幫助組織會議。會議期間的事件(但不是日子)已成定局。例如,我們知道某個事件將在某天發生在下午1點到3點之間。我正在嘗試編寫一個腳本,該腳本確定了我們可以運行會議的最少天數,並且沒有重疊事件。運行此次會議所需的最少天數是多少?
所有事件在一天內發生;沒有任何事件的時間跨越12am或跨越數天。
我在這個問題上的第一槍涉及到將其建模爲無向圖。我們可以讓事件表示爲頂點,並且兩個頂點之間的邊標記兩個事件重疊。然後,將問題簡化爲查找圖形的最小色數 - 在確保每個邊的端點顏色不同的同時,爲頂點着色所需的最少數量的顏色。
但是,我無法開發出一種高效的動態規劃算法,該算法在多項式時間內運行以計算色數。
還有其他線索嗎?這似乎是一個NP完全問題,但我敢打賭我們可以在多項式時間內用巧妙的時空平衡來解決問題,即動態規劃。
這的確是一個NP完全問題(見http://en.wikipedia.org/wiki/Graph_coloring)。您可以嘗試使用近似算法,或查找其他表示/解決方案。這聽起來和我上大學的AI項目很相似。您是否考慮過使用具有良好啓發式功能的A *搜索? –
@Filipe:不,區間圖的着色不是NP-hard。事實上它很容易解決。 –
@NiklasB。嗯,很高興知道!永遠學習。謝謝(你的)信息。 –