2015-07-01 49 views
3

我想要提出一個算法,使基於一羣人有多項式時間可用的最大空閒時間組,但我相信這個問題的解決方案可能是NP。基於空閒時間可用的組製造商算法

的問題是如下:

我們把一週到1個小時時間段,用戶可以放下每個插槽無論是免費或忙。假設我們從30位用戶那裏收集這些信息。讓我們假設用戶%GROUP_SIZE = 0

第一:

是否有可能把這些人劃分成大小的G組,從而每個組大小G的每個成員都有一個重疊的空時隙彼此?

是否有可能將這些人放入G組中,從而產生最佳解決方案,即在所有組中都有最大總重疊空閒時間段?

例如,如果我們有一組6人以下免費時間:

答:1個pm-3pm週日,1個pm-3pm週一

B:2 pm-3pm週日,1 pm-3pm星期一

C:1個pm-3pm星期日及7 pm-9pm星期一

d:6 pm-7pm星期日及7 pm-9pm星期一

E:5 pm-7pm星期日及7 pm-9pm星期一

F:6 pm-7pm星期日AND 1個pm-3pm星期一

該算法將確定A,B,F將是一組,C,d,E將是另一個組中,因爲最大的兩個小時各組之間的空閒時間重疊。這與A,B,C和D,E,F相反,它只包含組中每個成員的1個重疊時隙。因此,這是所有羣體之間總共最大重疊的最佳解決方案。

我意識到這個問題可能與Hopcroft-Karp算法有關,但需要進行大量修改才能完成此任務。他們的另一種算法與Hopcroft-Karp算法的解決方案更緊密相關嗎?這個解決方案可以在多項式時間內實現嗎?

背景:

我們有一堆誰想要志願者事業的人(30-50),他們只具有一定的時候,他們是在一週內免費。我們希望將他們分成3-5個小組,並讓他們爲此共同努力。我們希望小組成員儘可能多地與對方在一起,因此我們希望將他們分成幾組,他們有相似的空閒時間。

非常感謝,請讓我知道這是一個明顯的問題,還是需要更多的說明。

+0

這是一個非常有吸引力的問題,但是您認爲MathOverflow會更好嗎?然後你可以使用那裏的答案在這裏提出一個實現特定的問題。注意;我知道沒有任何問題是關於實現的。 –

+1

我從來沒有聽說過MathOverflow。我會檢查出來並把它放在那裏。謝謝! – applecrusher

+1

問題是否「是否可以將這些人放入G組中,以便每個G組中的每個成員都有一個相互重疊的空閒時隙?」意味着該組的所有成員需要有相同的空閒時隙?我猜想這會更有意義,但是當我第一次看到你的問題時,聽起來像是兩兩重疊的時隙就足夠了。 –

回答

0

首先看,它似乎是一個集合覆蓋問題,其中子集是共享時隙的人數,而通用集合將是所有人。

U = {p0, p1, p2 ..... , p29} // Number of persons. 
S = {S0, S1, S2, ....... S23} // number of 1 hour slots. 

我還不確定如何使用G(理想組的大小)。