I want to sort a set of items, where some comparisons are expensive and others are cheap. What is an algorithm that will minimize the worse-case number of expensive comparisons?
For instance, I want to rank sports players (assuming performance is completely deterministic, i.e. a game between two players will always have the same result), where some comparisons are already known, but others will require the players to play a game.
More formally, my machine has access to two oracles $f(a, b) \in \{<,=,>,\mathrm{unknown}\}$ and $g(a, b) \in \{<,=,>\}$, and I want to sort my list of items with the smallest worse-case number of calls to $g$ (which of course depends on the specific cases for which $f$ returns "unknown").
One approach I thought of is to extend $f$ into $f'$, which removes the unknown results that can be determined by transitivity, then use a standard sorting algorithm, calling $f'$ first, then $g$ if $f'$ returns "unknown". I'm not sure whether this is optimal (it may depend on the specific sorting algorithm).
I'd be satisfied with an algorithm that is near-optimal. I have about 100 items.