Ayırıcı sorgularından bir ağacı yeniden yapılandırma


18

Diyelim ki , yapısını bilmediğimiz sabit dereceli bir ağaçtır. Sorun çıkışına ağaçtır "düğüm mu: Formun sorguları sorarak düğümü gelen yolda yalan düğümü için ?". Her bir sorgunun bir kehanet tarafından sabit zamanda cevaplanabileceğini varsayın. değerini , ağaçtaki düğüm sayısını biliyoruz . Amaç, ağacının çıktısını almak için harcanan zamanı en aza indirmektir .T x a b n nTTxabnn

Yukarıdaki sorun için bir o(n2) algoritması var mı?

herhangi bir düğümün derecesinin Ten fazla 3 olduğunu varsayın .


Bildiklerim

Sınırlı çaplı kasa kolaydır . Ağacın çapı D , bir bölme ve fethetme algoritması alabiliriz:

Herhangi bir ikili ağaç, ağacı 1 / 3n'den daha küçük olmayan bileşenlere ayıran iyi bir ayırıcıya sahiptir.

  1. Herhangi bir tepe noktasını seçin x. Eğer iyi bir ayırıcı etiket ise ve recurse.
  2. X'in 3 komşusunu bulun.
  3. En fazla sayıda düğüme sahip olan komşu yönünde hareket edin. Komşu ile Adım 2'yi tekrarlayın.

Ayırıcısını bulmakta en çok sürer bu yana D aşamaları, bir olsun O(nDlogn) algoritması.

A O(nlog2n) rastgele algoritma. (aşağıdaki yorumlardan taşındı)

İki x ve y köşesini rastgele seçin. 1/9 olasılıkla, bir ayırıcının karşı tarafında bulunurlar. Yolundan orta düğümü al x için y . Bir ayırıcı olup olmadığına bakın, değilse ikili arama yapın.

Bu alır O(nlogn) ayırıcıyı bulmak için beklenen süre. Yani birO(nlog2n) rastgele algoritma.


Arka fon. Bu problemi olasılıksal grafik modellerde çalışan bir arkadaştan öğrendim. Yukarıdaki problem kabaca bir kavşak ağacının yapısını üç rastgele değişken X, Y ve Z verildiğinde, Z değeri verilen X ve Y arasındaki karşılıklı bilginin değerini söyleyebilen bir kehanet kullanarak öğrenmeye karşılık gelir. sıfıra, Z'nin X'ten Y'ye giden yolda olduğunu varsayabiliriz.


7
Lütfen sorun hakkında zaten bildiklerinizi açıklayın, bu yüzden tekerleği yeniden keşfederek zamanımızı boşa harcamayız.
Jeffε

@ Jɛ ff E Sorumu düzenledim.
Jagadish

Yanıtlar:


5

Hayır . Aşağıdaki basit rakip strateji, düğümlü bir ağacı yeniden yapılandırmak için herhangi bir algoritmanın en azından ( n - 1n"aralık" sorgusu.(n12)=n(n1)/2

düğümlerini keyfi olarak etiketleyin . Düşman, sanki ağaç merkezde tepe noktası 0 olan bir yıldız gibi tüm sorguları yanıtlar ; 0'ı kök, diğer düğümleri çocukları olarak düşünün .0,1,2,,n100

Between?(a,x,b)
    if x=0 return TRUE else return FALSE

Şimdi sorgu yaptıktan sonra algoritmanın durduğunu varsayalım . Daha sonra , algoritmanın üçlü ( 0 , y , z ) herhangi bir permütasyonunu sorgulamaması için sıfıra eşit olmayan iki y ve z köşesi olmalıdır . Algoritma, ağacın merkezi 0 olan bir yıldız olmadığını iddia ederse, rakip girdisini ortaya koyar ve algoritmanın yanlış olduğunu kanıtlar. Daha sonra düşman, x'in aslında y'nin tek çocuğu olduğunu ve algoritmanın tekrar yanlış olduğunu kanıtladığını ortaya koyuyor .n(n1)/2yz(0,y,z)0xy

Güncelleme: Hata, sadece derece kısıtlamasını fark ettim. Neyse ki, bu büyük bir engel değil. düğümünü en sevdiğiniz ikili ağaçla değiştirin, diğer n - 1 düğümlerini bilinmeyen bir sırada yaprak olarak değiştirin ve ardından bu alt ağacı yeniden yapılandırma algoritmasına gösterin. Elde edilen ( 2 n - 3 ) düğümlü ikili ağacın yeniden yapılandırılması için hala en az n ( n - 1 ) / 2 sorgu gerekmektedir. Eşdeğer olarak, bir m düğümlü ikili ağacın yeniden yapılandırılması en az ( m + 3 ) gerektirir0n1(2n3)n(n1)/2m sorgu. (Eminim daha ince bir yapı sabiti iyileştirecektir.)(m+3)(m+2)/8 Jagadish'in işaret ettiği gibi, bu genelleme işe yaramıyor; ağaçtaki iç düğümlerle ilgili sorgular, yapraklara bir sipariş verir ve bu da gerekli sorguların sayısını azaltır.


Sorum sabit derece ağaçlar hakkında. Bu argüman bu davada işe yaramıyor, değil mi?
Jagadish

2
@Jagadish: (1) Alt sınırın bu kanıtının rastgele algoritmalar için çalıştığını düşünmüyorum. Düşman hala başarısız bir örnek oluşturabilir, ancak bu, randomize algoritmanın yüksek olasılıkla doğru çalıştığı hipoteziyle çelişmez. (2) Bu arada, cevabı bilerek soruyu sorduğunuz anlaşılıyor. Bunu ne için yaptın?
Tsuyoshi Ito

2
Anlıyorum. Açıklama için teşekkürler ve ayrıca soruyu düzenlediğiniz için teşekkürler!
Tsuyoshi Ito

4
Rastgele bir algoritmanız varsa, bir algoritmanız var. Determinizm abartılıyor.
Jeffε

1
O(nlogn)O(nlogn)

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.