Copy link
@ZmnSCPxj

ZmnSCPxj Mar 23, 2018

Actually, thinking it more deeply, I think the termination condition will diverge in some cases. I will have to modify it instead to the below:

  1. If the set goes to 3->6 members, then that is the cyclic superhub we want.
  2. If the set goes to 1 or 2 members, then that is a failure to find a superhub. We should increment i instead.

No more backing off by one bit.


The divergence occurs in this case:

Suppose we have decimated the set to 4 nodes. There is a possibility that it will split in such a way that one side has 3 nodes and the other side has 1 node. The side with 1 node will stop and back off by one bit, forming a superhub of 4 nodes. The side with 3 nodes will continue, and is likely to split into 1 and 2. This triggers the backoff condition, so the 3 nodes there will form a superhub of 3 nodes. The single node that split off from 4->(3,1) thinks it is part of a superhub of 4 nodes, disagreeing with the 3 nodes that form a superhub among themselves. So backoff is not good: we should just accept reaching a "small enough" superhub.