0

input: A set of n workers and a set of m tasks. Each worker has: Available working time (in hours). A set of skills (at least one, possibly more). Each task has: Execution duration (in hours). Required skills. Possible dependencies on other tasks.

output: An assignment of tasks to workers, specifying which worker performs which task and when.

Notes: Each worker can perform multiple tasks. Each task must be performed by only one worker.

Does there exist a known polynomial-time algorithm for this problem, or is it inherently NP-hard?

I researched existing algorithms for task assignment and scheduling, including branch-and-bound and constraint programming approaches. However, many solutions I found either assume simplified constraints (e.g., ignoring worker skills or restricting each worker to a single task) or are known to be NP-hard.

I am aware that libraries such as Google OR-Tools can solve this problem, but I want to develop a solution from scratch. I was hoping to find a polynomial-time algorithm that efficiently handles task assignments while considering skills, time availability, and dependencies.

R T
  • 11
  • 1

1 Answers1

1

This problem is strongly NP-complete because the 3-partition problem with integers in the range T/4 to T/2 can be reduced to it. So not only not polynomial, you also don't get have pseudo-polynomial algorithms either.

For the reduction you need only one skill. No dependencies. Just a collection of workers which each have hours T, with tasks that take time between T/4 and T/2, such that the sum of the task times matches T times the number of workers.

The other options that you provide just make the problem even harder.

btilly
  • 231
  • 2
  • 5