As a heuristic, use topological order for the order of package choices
The general case in exploring the state space is that we have a set of choices (package names) and for each choice we have a number of versions of that package we could pick. If there's only one version of a package then we make that choice first. Otherwise we have to pick some package and select one of the available versions. The question is which package should we make a choice for first? Previously we picked completely arbitrarily. Surprisingly this actually works pretty well. An improvement is to pick packages in topological order. This works better because it allows dependencies from earlier choices to constrain our later choices.