Wikipedia mengatakan penyatuan berdasarkan peringkat tanpa kompresi jalur memberikan kompleksitas waktu diamortisasi , dan bahwa penyatuan berdasarkan peringkat dan kompresi jalur memberikan kompleksitas waktu diamortisasi (di mana adalah kebalikan dari Fungsi Ackerman). Namun, itu tidak menyebutkan waktu berjalan kompresi jalan tanpa peringkat serikat, yang biasanya saya terapkan sendiri.
Apa kompleksitas waktu yang diamortisasi dari union-find dengan optimisasi path-kompresi, tetapi tanpa union dengan optimasi peringkat?
complexity-theory
time-complexity
union-find
Filip Haglund
sumber
sumber
Jawaban:
Seidel dan Sharir membuktikan pada tahun 2005 [1] bahwa menggunakan kompresi jalur dengan menghubungkan sewenang-wenang pada operasim memiliki kompleksitas sekitar O((m+n)log(n)) .
Lihat [1], Bagian 3 (Menghubungkan Sewenang-wenang): Misalkanf(m,n) menunjukkan runtime pencarian-serikat dengan operasi m dan elemen n . Mereka membuktikan yang berikut:
Menurut [1], pengaturank=⌈m/n⌉+1 memberikan
f(m,n)≤(2m+n)log⌈m/n⌉+1n .
Suatu ikatan yang sama diberikan dengan menggunakan metode yang lebih kompleks oleh Tarjan dan van Leeuwen dalam [2], Bagian 3:
[1]: R. Seidel dan M. Sharir. Analisis Kompresi Jalur Top-Down. Siam J. Computing, 2005, Vol. 34, No. 3, hlm. 515-525.
[2]: R. Tarjan dan J. van Leeuwen. Analisis Kasus Terburuk dari Algoritma Set Union. J. ACM, Vol. 31, No. 2, April 1984, hlm. 245-281.
sumber
Saya tidak tahu apa waktu berjalan diamortisasi itu, tapi saya bisa menyebutkan satu kemungkinan alasan mengapa dalam beberapa situasi Anda mungkin ingin menggunakan keduanya daripada hanya kompresi jalur: waktu berjalan terburuk per operasi adalah jika Anda gunakan hanya kompresi jalur, yang jauh lebih besar daripada jika Anda menggunakan kedua gabungan dengan peringkat dan kompresi jalur.Θ(n)
sumber