[問題] 一題現實中的問題

作者: GYLin (Lynx)   2019-03-09 08:59:53
由於是現實的問題 所以有沒有P的解我也不知道
還請各位見諒
問題如下:
有N個人(N<=60)參加面試
有M個部門(M=7)可以選
面試時間有T個(T=6)
每個人可以選1~3個部門面試
且每個人各有可以的時間(1~T之中任意選取)
======
想請問考慮所有部門的各時段(M*T個),
他們之中人數最大值, 最少可以是多少, 能讓所有人排到面試.
(各個人想面試的每個部門都要能面試到)
======
如果每個人只能選擇一個部門, 我有想到最大流的解法,
從原點流向每個人, 再從每個人流向M*T個時段,
調整各時段的出容量, 逐次加一, 當總流量=人數,
此出容量即為解.
但是當一個人可以面試多個部門, 我卡在一個人同時間不能出現在兩地,
不知道能不能依然用最大流解...
作者: FRAXIS (喔喔)   2019-03-15 11:10:00
喔喔 我想錯了
作者: LPH66 (-6.2598534e+18f)   2019-03-14 18:11:00
flow 不會複製, 所以樓上那樣的 cap 3 永遠只會滿足至多 1原 PO 現在的問題就是在這裡
作者: FRAXIS (喔喔)   2019-03-09 12:06:00
最大人數最小值 <- 你是說部門人數嗎?如果是實務上的問題 就建一個 integer programm 來解吧因為每個人頂多只能面試三次 所以你只要用C(TM, 3) 個node 就可以表示 constraint ?
作者: lancerd (lancerW)   2019-03-16 01:07:00
「每個人可以選1~3個部門面試」是說「每個人各自選好部門了,部門數量最多是三個」,還是說你的答案要讓「每個人隨便選三個部門」的所有情況都滿足?
作者: GYLin (Lynx)   2019-03-16 13:16:00
謝謝LPH大大解釋,回樓上是前者

Links booklink

Contact Us: admin [ a t ] ucptt.com