This one took me a minute to even parse what they were asking.
Model the problem as finding all edges in a hidden graph where vertices are tests and edges are bad pairs, using a group testing oracle that checks if a subset is independent. Use a divide-and-conquer strategy to recursively split the set of tests and identify bad pairs, aiming for O(k log n) calls. Analyze the recurrence and prove correctness by induction on the recursion tree.
Pro tip: Emphasize that the oracle is monotone: if a set is clean, all its subsets are clean. This allows pruning and ensures that when a set is clean, you can stop recursing, which is key to achieving O(k log n) calls.
Represent tests as vertices and bad pairs as edges. The oracle tells whether a given vertex subset is an independent set (contains no edges).
Recursively split the current set of vertices into two halves. For each half, call the oracle; if it returns true, the half is clean and we stop. If false, recurse on that half. When a set of size 2 is dirty, the pair is bad.
Derive a recurrence: T(n) = 2T(n/2) + O(1) for dirty sets, but clean sets terminate early. Show that each bad edge contributes O(log n) calls along the recursion path, leading to O(k log n) total calls.
Prove by induction that the algorithm finds exactly all bad pairs: any bad pair must be separated at some recursion level and detected when the subset of size 2 is tested; clean sets are never recursed into, so no false positives.
Mention potential improvements like using larger branching factors or adaptive splitting to reduce calls further, and compare with naive O(n^2) pairwise testing.
AI-generated suggestions, not part of the candidate's original notes. May be inaccurate — verify before relying on them.