O (logn) her zaman bir ağaç mı?

oy
6

Biz her zaman ağaç yüksekliği logn edilir çünkü O (logn) kötü durum zaman çalışan bir (ikili arama) ağaç üzerinde operasyonlar görüyorum. Biz bir algoritma logn, örneğin m + nlogn bir fonksiyonu olarak çalışma süresi olduğu anlatılır acaba, bunun bir (artar) ağaç içermelidir sonuca varabiliriz?

DÜZENLEME: yorumlarınızı sayesinde, artık bölmek fethet ve ikili ağaç görsel / kavramsal çok benzer biliyoruz. Ben ikisi arasında bir bağlantı kurmuş hiç. Ama O (logn) bir bölme fethet olmadığı bir durumda düşünmek bir BST / AVL / kırmızı-siyah ağacın hiçbir özelliği olan bir ağaç içerir hangi algo.

Bu olan işletim süresi, O Bul / Birliği işlemleri ile ayrık dizi veri yapısı, var (N + MlogN), N-elemanları ve M BUL işlemlerinin sayısı içinde olmak üzere.

Ben sth kaçırıyorum bana bildirin ama böl-yönet burada devreye girer nasıl göremez edin. Sadece hiçbir BST mülkiyet ve işletme süresi logn bir fonksiyonu olduğu bir ağacı vardır bu (ayrık küme) durumda görüyoruz. Benim soru neden bu durumda bir genelleme yapabilir neden / hakkındadır.

Oluştur 22/02/2010 saat 05:25
kaynak kullanıcı
Diğer dillerde...                            


7 cevaplar

oy
7

Hayır, ayrıca ikili (örneğin) sıralanmış bir dizi arama yapabilirsiniz. Ama bunun için söz yapmayız http://en.wikipedia.org/wiki/Binary_search_algorithm

Cevap 22/02/2010 saat 05:26
kaynak kullanıcı

oy
3

Bir karşı örnek olarak:

given array 'a' with length 'n'
y = 0
for x = 0 to log(length(a))
    y = y + 1
return y

çalışma zamanı O (n log ()), ama burada hiçbir ağaçtır!

Cevap 22/02/2010 saat 05:28
kaynak kullanıcı

oy
0

Logaritmik zaman ayırdığınız Algoritmalar olan yaygın ikili ağaçlarda operasyonlarda buldular.

O (logn) örnekleri:

  • ikili arama veya dengeli bir arama ağacı olan sıralanmış diziye bir öğe bulma.

  • Yarılama bir kriteri giriş dizideki kadar bir değer.

Cevap 22/02/2010 saat 05:40
kaynak kullanıcı

oy
7

Ne var tamamen geriye gitmektir. O(lg N)Genellikle böl ve fethet algoritması çeşit anlamına gelir ve Böl ve Yönet sağlamanın bir yaygın yolu bir ikili ağaçtır. Ikili ağaçlar tüm böl ve fethet algoritmaları önemli bir alt kümesi olmakla birlikte, zaten bir alt kümesidir.

Bazı durumlarda, diğer bölünmeyi dönüştürebilir ve (zaten bir ikili arama benzer iddia girişimini yapmış başka Yanıta örn yorumlarım) oldukça doğrudan ikili ağaçların algoritmaları fethetmek. Bir başka bariz örneğin, ancak, çok yönlü ağaç (örneğin bir B-ağacı, B + ağaç veya B * ağacı), açıkça bir ağaç gibi açıkça iken değil bir ikili ağaç.

Yine, kötü yeterince, bir çok yönlü ağaç bir ikili ağacın çarpık bir versiyonunun tür olarak temsil edilebilir noktayı uzatabilirsiniz istiyorum. Eğer isterseniz, muhtemelen hepsi olduklarını (gibi en az bir şey) ikili ağaçlar söyleyerek noktasına tüm istisnaları uzatabilirsiniz. En azından benim için, ancak, yaptığı tüm "ikili ağaç" yapmak olduğunu "böl ve yönet" ile eşanlamlı. Başka bir deyişle, başarmak tüm kelime çözgü ve esasen farklı ve kullanışlı hem var bir terim silinene edilir.

Cevap 22/02/2010 saat 06:45
kaynak kullanıcı

oy
2

Cevap hayır. Sıralanmış dizinin İkili aramasıdır O(log(n)).

Cevap 22/02/2010 saat 06:48
kaynak kullanıcı

oy
0

O olarak (log (n)), tümü O (1) algoritmaları gibi sadece da bağlanan bir üst bir function (a, b) return a+b;koşulu karşılayan.

Ama algoritmalar tür ağaç algoritmaları gibi bakmak ya da en azından bir ağaca soyutlanabilir tüm Teta (log (n)) kabul etmek zorundadır.

Cevap 22/02/2010 saat 07:26
kaynak kullanıcı

oy
0

Kısa cevap:

bir algoritma kendi analizinin bir parçası olarak log (n) sahiptir diye bir ağaç dahil olduğu anlamına gelmez. Örneğin, aşağıdaki olan çok basit bir algoritmadırO(log(n)

for(int i = 1; i < n; i = i * 2)
  print "hello";

Gördüğünüz gibi, hiçbir ağaç yer aldı. John ayrıca sıralanmış bir dizi yapılabilir nasıl ikili arama üzerinde iyi bir örnek teşkil eder. Bunlar (log (n)) zaman O alır ve oluşturulan veya başvurulan olabilir diğer kod örneklerinden vardır hem. Yani asimptotik süresi karmaşıklık dayalı varsayımlar yapmayın, kesin bilmek koduna bak.

Ağaçlar hakkında daha fazlası:

Bir algoritma "ağaçları" içerir diye anlamına gelmez O(logn)ya. Sen ağaç türünü ve nasıl işlem ağacını etkiler bilmemiz gerekir.

Bazı örnekler:

  • Örnek 1)

Takma veya aşağıdaki dengesiz ağaç olacağını arama O(n).

Burada görüntü açıklama girin

  • Örnek 2)

Aşağıdaki dengeli ağaçlar hem ediyorum takma veya arama O(log(n)).

Dengeli İkili Ağacı:

Burada görüntü açıklama girin

Derecesi 3'ün Dengeli Ağacı:

Burada görüntü açıklama girin

Ek Yorumlar

Ağaçların Eğer bir yol yoktur kullandığınız için operasyonlar olacak iyi bir şans daha "denge" için O(n)zamanı değil O(logn). Eğer kendi kendine dengeleme olan ağaçları kullanırsanız ağaçların dengeleme normalde ekleme aşamasında ortaya çıktıkça, daha sonra normal olarak, daha fazla zaman alır ekler.

Cevap 27/04/2016 saat 00:55
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more