Как создать наихудший случай для непересекающегося множества только со сжатием пути? - PullRequest
0 голосов
/ 31 августа 2018

Несвязное множество с реализованным только сжатием пути выглядит так:

// In cpp.
int Find(int x) { return f[x] == x ? x : f[x] = Find(f[x]); }
int Union(int a, int b) { f[Find(a)] = Find(b); }

Из вики Я узнал об этом, у него наихудшая сложность O(n+f*(1+logn)). Так как мне достичь худшей сложности?

1 Ответ

0 голосов
/ 31 августа 2018

Полагаю, вы имеете в виду это

Использование только сжатия пути дает худшее время выполнения O (n + f * (1 + log2 + f / n)), [10] для последовательности из n операций MakeSet (и, следовательно, не более n-1 операций объединения) и f операций поиска.

Где

[10] [Введение в алгоритмы] 1

И я думаю, это когда вы всегда добавляете к самому длинному пути.

...