Say, I have a sentence $ mathbb {S} = {1,2, …, n } $, I have an adversary that puts an end $ mathbb {S} $ in $ k $ unknown and disjoint subsets. Name this new set $ mathbb {A} $, I can guess every combination $ s $ and my adversary has to tell me if $ s $ is itself one *Subset of any element* in the $ mathbb {A} $,

For example when $ n = 4 $, a valid one $ mathbb {A} $ could be $ { {2 }, {1,3,4 } } $, All "true" guesses are $ {1 } $, $ {2 } $, $ {3 } $, $ {4 } $, $ {1,3 } $, $ {3,4 } $, $ {1,4 } $, $ {1,3,4 } $,

What is the fastest algorithm and the maximum number of guesses I need to do to fully reverse engineer? $ mathbb {A} $?

Obviously, the brute force algorithm lasts $ ^ nC_1 + ^ nC_2 + … + ^ nC_n $ Guesses for any subset.

But I think I just have to test all possible subsets of size 2, that is, H. Exactly $ ^ nC_2 $ assumptions

Then I can show each of the correct assumptions of size 2 as a non-directional edge in a diagram. Every member of $ mathbb {A} $ Size 3 or larger in this diagram should form a simple cycle. So all I have to do is make DFS on every node in this graph and that *the longest* Recognize the cycle from the graph and repeat it for all remaining nodes until only solitary edges (subsets of size 2) or unconnected vertices (subsets of size 1) remain.

This graphic should have $ n $ Corners and at most $ ^ nC_2 $ Edge. So the fastest algorithm has a temporal complexity of $ mathbb {o} (n ^ {2} cdot {} ^ {n} C {{2}) $, Is there an approach with fewer guesses or a faster graph algorithm?