Matching schedules between users and providers
I think your problem is actually not a scheduling problem but a set cover problem. Just cut the time line in the atomic time parts of providers and assign them indices.

For instance, considring only one day for user from 8h to 14h:


provider 1: 7h-10h
provider 2: 6h-9h
provider 3: 10h-16h


The cut-off is:


6h-7h
7h-9h
9h-10h
10h-16h


and your problem is solving the minimum set cover of {2, 3, 4} with:


provider 1: {2, 3}
provider 2: {1, 2}
provider 3: {3, 4}


with evident solutions providers 1&amp;3 or 2&amp;3.

Nevertheless, this is a NP-problem and you likely have to test most of combinatoric if you really want to get optimal solutions. Sometimes this type of application contain some constraints or patterns that may help you to reduce the problem.