Complejidad de union-find con path-compresión, sin rango

10

Wikipedia dice que la unión por rango sin compresión de ruta da una complejidad de tiempo amortizada de , y que tanto la unión por rango como la compresión de ruta da una complejidad de tiempo amortizada de O ( α ( n ) ) (donde α es el inverso de Función Ackerman). Sin embargo, no menciona el tiempo de ejecución de la compresión de ruta sin rango de unión, que es lo que generalmente implemento yo mismo.O(logn)O(α(n))α

¿Cuál es la complejidad del tiempo amortizado de union-find con la optimización de compresión de ruta, pero sin la unión por optimización de rango?

Filip Haglund
fuente
55
Tenga en cuenta que es el inverso de la función Ackerman, no 1 / A ( n , n ) ) . Aquí "inverso" significa el inverso como una función, no el recíproco: es decir, si f ( n ) = A ( n , n ) , α ( n ) = f - 1 ( n ) , no 1 / f ( n ) . α(n)1/A(n,n))f(n)=A(n,n)α(n)=f1(n)1/f(n)
DW
Entiendo que esta es una pregunta relativamente antigua, pero vea mi respuesta y un artículo relevante: epubs.siam.org/doi/abs/10.1137/S0097539703439088 . Podría haber perdido uno o dos detalles al copiar sobre los límites. En ese caso, sugiera una edición :-)
BearAqua

Respuestas:

4

Seidel y Sharir demostraron en 2005 [1] que usar la compresión de ruta con enlaces arbitrarios aproximadamente en m operaciones tiene una complejidad de aproximadamente O((m+n)log(n)) .

Ver [1], Sección 3 (Enlace Arbitrario): Sea f(m,n) el tiempo de ejecución de union-find con m operaciones n elementos. Probaron lo siguiente:

Reclamación 3.1. Para cualquier entero k>1 tenemos f(m,n)(m+(k1)n)logk(n) .

De acuerdo con [1], la configuración de k=m/n+1 da

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

Tarjan y van Leeuwen dieron un enlace similar usando un método más complejo en [2], Sección 3:

Lema 7 de [2]. Supongamos que mn . En cualquier secuencia de operaciones de conjuntos implementadas utilizando cualquier forma de compactación y enlace ingenuo, el número total de nodos en las rutas de búsqueda es a lo sumo (4m+n)log1+m/nn Con enlace a la mitad e ingenuo, el número total de nodos en las rutas de búsqueda es como máximo (8m+2n)log1+m/n(n) .

Lema 9 de [2]. Supongamos que m<n . En cualquier secuencia de operaciones de conjuntos implementadas usando compresión y enlaces ingenuos, el número total de nodos en las rutas de búsqueda es como máximo n+2mlogn+m .

[1]: R. Seidel y M. Sharir. Análisis de arriba hacia abajo de la compresión del camino. Siam J. Computing, 2005, vol. 34, núm. 3, págs. 515-525.

[2]: R. Tarjan y J. van Leeuwen. Análisis de los peores casos de algoritmos de unión de conjuntos. J. ACM, vol. 31, núm. 2, abril de 1984, págs. 245-281.

BearAqua
fuente
2

Θ(n)

nn1Θ(n)Θ(n)

O(logn)O(logn)O(logn) puede ser útil en una aplicación interactiva en la que desea asegurarse de que ninguna operación individual puede causar un retraso prolongado (por ejemplo, desea una garantía de que ninguna operación individual puede hacer que la aplicación se congele durante mucho tiempo) o en tiempo real aplicación en la que desea asegurarse de cumplir siempre con las garantías en tiempo real.

DW
fuente