Berapa kedalaman yang diharapkan dari pohon yang dihasilkan secara acak?

19

Saya sudah memikirkan masalah ini sejak lama, tetapi tidak tahu.

Algoritma pembangkitnya adalah sebagai berikut. Kami berasumsi ada n diskrit bernomor dari 0 hingga n1 . Kemudian untuk setiap i di {1,,n1} , kita menjadikan orang tua simpul ke- i di pohon menjadi simpul acak di {0,,i1} . Iterasi melalui masing-masing i agar hasilnya adalah pohon acak dengan simpul akar 0 . (Mungkin ini tidak cukup acak tetapi ini tidak masalah.)

Berapa kedalaman yang diharapkan dari pohon ini?

zhxchen17
sumber
Saya berasumsi v0 adalah root dan Anda bermaksud mengatakan: "Lalu untuk setiap i di [1,n) , kami membuat induk simpul ke- i ...". Baik?
Tanpa judul
Apa yang sudah kamu coba? Sudahkah Anda mencoba menulis relasi perulangan, katakan untuk d(i) yang merupakan kedalaman yang diharapkan dari simpul i ?
DW
3
Objek-objek ini dikenal dengan nama "pohon rekursif acak".
James Martin

Jawaban:

15

Saya pikir ada hasil konsentrasi tentang elogn , tetapi saya belum mengisi detailnya.

Kita bisa mendapatkan batas atas untuk probabilitas bahwa simpul memiliki d leluhur tidak termasuk 0 . Untuk setiap kemungkinan rantai lengkap d nenek moyang nol ( a 1 , a 2 , . . . , A d ) , probabilitas rantai yang ( 1nd0d(a1,a2,...,ad) . Ini sesuai dengan1(1a1)(1a2)(1ad)×1n kali jangka waktu(1+11ntempat ketentuan dipesan. Jadi, batas atas untuk probabilitas ini adalah1(1+12+13+1n1)d di manaHn-1adalahn-1st harmonik nomor1+11n(d!)Hn1dHn1n1 . LogHn-1(n-1)+γ. Untuk fixddann, probabilitas simpulnpada kedalamand+1adalah paling banyak1+12+...+1n1Hn1log(n1)+γdnnd+1

(logn)dn(d!)(1+o(1))

Dengan perkiraan Stirling, kita dapat memperkirakan ini sebagai

1n2πd(elognd)d.

Untuk besar , apa pun yang jauh lebih besar dari e log n , basis eksponensial kecil, jadi ikatan ini kecil, dan kita dapat menggunakan ikatan terikat untuk mengatakan bahwa probabilitas bahwa setidaknya ada satu simpul dengan leluhur d bukan nol adalah kecil.delognd


Lihat

Luc Devroye, Omar Fawzi, Nicolas Fraiman. "Kedalaman sifat lampiran pohon rekursif acak skala."

B. Pittel. Perhatikan ketinggian pohon rekursif acak dan pohon pencarian m-ary acak. Struktur dan Algoritma Acak, 5: 337–348, 1994.

Mantan klaim yang terakhir menunjukkan kedalaman maksimum adalah dengan probabilitas tinggi, dan menawarkan bukti lain.(e+o(1))logn

Douglas Zare
sumber
2
Sangat bagus. Untuk memperjelas bagi pembaca lainnya: karena Anda tidak bisa mengulangi , istilah ( 1 + 1aihanyalah batas atas. (1+12++1n1)d
Peter Shor
3

Pertanyaan ini dijawab beberapa tahun yang lalu, tetapi, hanya untuk bersenang-senang, ini adalah bukti sederhana dari batas atas. Kami memberi batasan pada harapan, lalu ekor terikat.

Tentukan rv menjadi kedalaman simpul i { 0 , 1 , , n - 1 } . Mendefinisikan φ i = Σ i j = 0 e d j .dii{0,1,,n1}ϕi=j=0iedj.

lemma 1. Kedalaman maksimum yang diharapkan, paling banyak eE[maxidi] .eHn1

Bukti. Kedalaman maksimum paling banyak pada . Untuk menyelesaikannya kami menunjukkan E [ ln ϕ n - 1 ] elnϕn1 .E[lnϕn1]eHn1

Untuk setiap , pengkondisian pada ϕ i - 1 , dengan memeriksa ϕ i , E [ ϕ ii1ϕi1ϕi

E[ϕi|ϕi1]=ϕi1+E[edi]=ϕi1+eiϕi1=(1+ei)ϕi1.

Dengan induksi maka

E[ϕn1]=i=1n1(1+ei)<i=1n1exp(ei)=exp(eHn1).

Jadi, dengan konkavitas logaritma,

E[lnϕn1]lnE[ϕn1]<lnexp(eHn1)=eHn1.       

Inilah ekor yang diikat:

lemma 2. Perbaiki . Kemudian Pr [ maks i d i ] ec0Pr[maxidi]eHn1+cexp(c)

ϕ

Pr[ϕn1exp(eHn1+c)]E[ϕn1]exp(eHn1+c).
E[ϕn1]exp(eHn1)   

(e1)HnO(1)maxidilnϕtlnn [EDIT: bicara terlalu cepat]

(1o(1))eHn

Neal Young
sumber
2

Saya sebenarnya telah memikirkan pertanyaan yang sama (walaupun dalam formulasi yang sama sekali berbeda) beberapa bulan yang lalu, serta beberapa varian yang dekat.

Saya tidak punya solusi bentuk tertutup (/ asimptotik) untuk itu, tetapi Anda mungkin menganggap ini berguna (apakah Anda hanya mencari batas atas?).

v0

Ini juga memberi kami formula rekursi untuk pertanyaan Anda.

h(n)n

Pn(B)=ΠbB(b1)!n!B

h(n)

h(n)=BBnPn(B)maxbBh(b)

Jika Anda ingin membuat kode rekursi ini, pastikan Anda menggunakan yang berikut ini agar tidak masuk ke loop tak terbatas:

h(n)=BBn{{n}}Pn(B)maxbBh(b)11n!

Bnnh(1)=1


h(n)h

BPR
sumber
1
Terima kasih atas idenya! Sebenarnya saya menulis program monte-carlo pertama kali ketika saya bertemu dengan masalah ini, tetapi yang mengejutkan saya hasil yang akurat sangat sulit didapat.
zhxchen17