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.