When finding multiple versions of a package which can fulfill a constraint, it is quite common for them to have the same set of dependencies (we can have multiple such groups among the versions found), as most packages don't update their requirements on each patch release.
Create a group of versions in the solver might allow limiting the number of rules in the solver. Instead of having require rules for each version to their dependencies, we would have requires rule from the group to the dependencies (so 1 set instead of N set), a require rule from the group to the packages in it, and incoming require rules would point to the group.
I haven't investigated the idea to be sure that it is a correct one (I think it is safe change in the algorithm, but @naderman knows it much better than me).
When finding multiple versions of a package which can fulfill a constraint, it is quite common for them to have the same set of dependencies (we can have multiple such groups among the versions found), as most packages don't update their requirements on each patch release.
Create a group of versions in the solver might allow limiting the number of rules in the solver. Instead of having require rules for each version to their dependencies, we would have requires rule from the group to the dependencies (so 1 set instead of N set), a require rule from the group to the packages in it, and incoming require rules would point to the group.
I haven't investigated the idea to be sure that it is a correct one (I think it is safe change in the algorithm, but @naderman knows it much better than me).