Making role assignment feasible: A polynomial-time algorithm for computing ecological colorings.