Complexité de la recherche d'union avec compression de chemin, sans rang


10

Wikipedia dit que l'union par rang sans compression de chemin donne une complexité temporelle amortie de , et que l'union par rang et la compression de chemin donnent une complexité temporelle amortie de (où est le inverse de la fonction Ackerman). Cependant, il ne mentionne pas le temps d'exécution de la compression de chemin sans rang d'union, ce que j'implémente habituellement moi-même.O ( α ( n ) ) αO(logn)O(α(n))α

Quelle est la complexité en temps amorti de l'union-find avec l'optimisation de la compression de chemin, mais sans l'optimisation de l'union par rang?


5
Notez que est l'inverse de la fonction Ackerman, pas . Ici, «inverse» signifie l'inverse en fonction, et non l'inverse: c'est-à-dire si , , pas . 1 / A ( n , n ) ) f ( n ) = A ( n , n ) α ( n ) = f - 1 ( n ) 1 / f ( n )α(n)1/A(n,n))f(n)=A(n,n)α(n)=f1(n)1/f(n)
DW

Je comprends qu'il s'agit d'une question relativement ancienne, mais voir ma réponse et un document pertinent: epubs.siam.org/doi/abs/10.1137/S0097539703439088 . J'ai peut-être manqué un détail ou deux lors de la copie au-delà des limites. Dans ce cas, veuillez suggérer une modification :-)
BearAqua

Réponses:


4

Seidel et Sharir ont prouvé en 2005 [1] que l'utilisation de la compression de chemin avec une liaison arbitraire à peu près sur m opérations a une complexité d'environ O((m+n)log(n)) .

Voir [1], Section 3 (Liaison arbitraire): Soit f(m,n) le temps d'exécution de union-find avec m opérations et n éléments. Ils ont prouvé ce qui suit:

Allégation 3.1. Pour tout entier k>1 nous avons .f(m,n)(m+(k1)n)logk(n)

Selon [1], la définition de donne .k=m/n+1

f(m,n)(2m+n)logm/n+1n

Une borne similaire a été donnée en utilisant une méthode plus complexe par Tarjan et van Leeuwen dans [2], Section 3:

Lemme 7 de [2]. Supposons que . Dans toute séquence d'opérations d'ensemble implémentées à l'aide de toute forme de compactage et de liaison naïve, le nombre total de nœuds sur les chemins de recherche est au maximum Avec une réduction de moitié et naïve, le nombre total de nœuds sur les chemins de recherche est au maximum .mn(4m+n)log1+m/nn(8m+2n)log1+m/n(n)

Lemme 9 de [2]. Supposons que . Dans toute séquence d'opérations d'ensemble implémentées à l'aide de la compression et de la liaison naïve, le nombre total de nœuds sur les chemins de recherche est au maximum .m<nn+2mlogn+m

[1]: R. Seidel et M. Sharir. Analyse descendante de la compression des chemins. Siam J. Computing, 2005, vol. 34, n ° 3, pp. 515-525.

[2]: R. Tarjan et J. van Leeuwen. Analyse des pires cas des algorithmes d'union d'ensemble. J. ACM, vol. 31, n ° 2, avril 1984, pp. 245-281.


2

Θ(n)

nn1Θ(n)Θ(n)

O(logn)O(logn)O(logn) peut être utile dans une application interactive où vous voulez vous assurer qu'aucune opération unique ne peut causer un long délai (par exemple, vous voulez une garantie qu'aucune opération unique ne peut provoquer le gel de l'application pendant une longue période) ou en temps réel application où vous voulez vous assurer que vous respecterez toujours les garanties en temps réel.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.