假设你有一组人J
,你需要为每个人拍一张照片。他们只有一位摄影师,摄影师有有限的时间T
( |T|
> |J|
) 可用于拍摄每张照片。在任何给定时间,t
摄影师T
只能拍摄一张照片。中的每个人J
只能在 中的某些时间段内拍摄他们的照片T
,尽管每个人都被要求至少选择一次他们有空的时间。本质上,根据每个人的可用性,摄影师希望尝试将一个人分配到每个可用的时间段T
这样每个人都可以拍照。有没有多项式时间算法来解决这个问题?如果不是,什么非多项式时间问题在多项式时间内简化为这个问题,即如何证明这个问题不在P
?
例子:
摄影师有时可用[1, 12, 15, 33, 45, 77]
。
人 A 有时有空[12, 33]
。
B 人有时有空[1, 12]
。
C 人有时有空[1, 12]
。
我们可以通过以下选择拍摄每个人:
人 A:33
人 B:1
人 C:12
如果我们从选择 A: 12
、 B:开始1
,我们将无法找到 的位置C
,即我们必须回溯并将 A 重新分配给33
。
本质上,我正在寻找一种多项式时间算法来找到适当的时间分配(如果存在),否则能够报告不存在适当的分配。