How to Decompose
I see two possibilities
- Iterate between decomposition and allocation phases, decomposing only subtasks that cannot be allocated as is
- Or, decompose the task as fully as possible then allocate those small subtasks
First may be faster to accomplish, but I think second would be better for finding an optimal decomposition/allocation