【发布时间】:2013-10-16 18:49:33
【问题描述】:
我正在尝试为以下问题找到有效的解决方案:
问题: 假设我有一些任务(A、A、B、B、C)并且我有一些人可以执行以下一项或多项任务:
- person1:A,B(人 1 可以执行任务 A 或任务 B)
- person2:A,C
- person3:A
- person4: B,C
- person5:A,B
是否可以将我所有的任务交给这些人?一个人只能完成一项任务。
可能有多种解决方案,但我只想知道是否有解决方案。
我第一次尝试有效地解决这个问题是:
- 如果一个人只能完成一项任务,则将该任务分配给该人
- 如果一个任务需要做n次,有n个人可以做 这个任务,把这个任务分配给这 n 个人。
这足以解决上述问题。
- 2个人可以做B,B需要做两次。
- 剩下的任务:A,A,C
- 剩余人数:[A,C],[A],[B,C]
- 2人可以做A。
- 剩余任务:C
- 剩余人数:[B,C]
但这还不足以解决更复杂的问题,例如: 工作: IGGGFFDDCCBBB 人: ABCDEFG CEI 北 欧盟委员会 CEGI ADGI CEGI CI 助理总干事 北 DI BCDEFI ABDF ABEFG BCEGI ACDI BD 安倍 BCDEFGI
有没有解决这个问题的有效方法?我显然可以用深度优先搜索算法解决这个问题,但我想知道我是否可以在多项式时间内解决这个问题? 我不禁相信这是一个众所周知的问题,但我一直无法在 google 上找到它。
感谢您的阅读:)
【问题讨论】:
标签: algorithm variable-assignment jobs distribute