Şimdi Ara

Şu Algoritmanın Analizini Yapabilir Misiniz?

Bu Konudaki Kullanıcılar:
2 Misafir - 2 Masaüstü
5 sn
3
Cevap
0
Favori
157
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Kod

    Yığını:
    public class QuickFind { private int[] id; public QuickFind(int N) { id = new int[N]; for(int i = 0; i < N; i++) id[i] = i; } public boolean connected(int p, int q) { return id[p] == id[q]; } public void union(int p, int q) { int pid = id[p]; int qid = id[q]; for(int i = 0; i<id.length; i++) { if(id[i] == pid) id[i] = qid; } } }


    Çalıştığım kaynak bu algoritmayı çok yavaş diyerek maliyetini N^2 diye çıkardı. Ancak o kısmı çözemedim. Yardımcı olur musunuz?


    [1]: En başta N tane işlem yaptık array'e id atarken.

    [2]: Union işlemi yaparken de N kez kontrol sağlıyoruz.

    [3] Totalde N+N kez işlem yapılmış olmaz mı? 2N olarak buluyorum ben.


    Hatam nerede acaba? Teşekkürler.




  • DSU algoritmasi bu. Boyle kullanirsan union O(N) olacak. Buyuk ihtimalle N^2 derken N tane seti birlestirmekten bahsediyor. N tane seti unionlamak (N-1)*O(N) = O(N^2) oluyor.

  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.