带压缩 Union Find 指令序列算法的思索
Aho书的Union Find 指令序列的问题,书中给了2个数据结构,第1个,Find是O(1)时间,但是Union需要小集合中的元素改名,所以需要O(nlgn)的时间,第2个数据结构是树,让小集合指向大集合,Union是O(1),但是Find需要O(nlgn)的时间,
再之后,又提出了一种新的带压缩的Find,这种方法的Union提出了rank的概念,让rank低树指向rank高的树,并最终证明是接近线性水平,证明中利用了一个rank的性质,是秩为r的节点数最多为n/2^r。
之后,我想,从理论上来,不管是rank低的集合指向rank高的集合,还是rank高的集合指向rank低的集合,Union操作都是O(1),而如果是后者,即是把rank高的指向rank低的话,会破坏哪些性质呢,从而导致这个证明不能成立?想了半天,没有答案,似乎只要带压缩的Find,就和Union操作中集合顺序没有关系,总能得出O(n)条指令近似线性复杂度的结论。