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 n−1 . Kemudian untuk setiap i di {1,…,n−1} , kita menjadikan orang tua simpul ke- i di pohon menjadi simpul acak di {0,…,i−1} . 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?


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 elog⁡n , 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+⋯1n−1)d di manaHn-1adalahn-1st harmonik nomor1+11n(d!)Hn−1dHn−1n−1 . LogHn-1≈(n-1)+γ. Untuk fixddann→∞, probabilitas simpulnpada kedalamand+1adalah paling banyak1+12+...+1n−1Hn−1≈log⁡(n−1)+γdn→∞nd+1

(log⁡n)dn(d!)(1+o(1))

Dengan perkiraan Stirling, kita dapat memperkirakan ini sebagai

1n2πd(elog⁡nd)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.delog⁡nd


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))log⁡n


2
Sangat bagus. Untuk memperjelas bagi pembaca lainnya: karena Anda tidak bisa mengulangi , istilah ( 1 + 1aihanyalah batas atas. (1+12+…+1n−1)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,…,n−1}ϕi=∑j=0iedj.

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

Bukti. Kedalaman maksimum paling banyak pada . Untuk menyelesaikannya kami menunjukkan E [ ln ϕ n - 1 ] ≤ eln⁡ϕn−1 .E[ln⁡ϕn−1]≤eHn−1

Untuk setiap , pengkondisian pada ϕ i - 1 , dengan memeriksa ϕ i , E [ ϕ ii≥1ϕi−1ϕi

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

Dengan induksi maka

E[ϕn−1]=∏i=1n−1(1+ei)<∏i=1n−1exp⁡(ei)=exp⁡(eHn−1).

Jadi, dengan konkavitas logaritma,

E[ln⁡ϕn−1]≤ln⁡E[ϕn−1]<ln⁡exp⁡(eHn−1)=eHn−1.       ◻

Inilah ekor yang diikat:

lemma 2. Perbaiki . Kemudian Pr [ maks i d i ] ≥ ec≥0Pr[maxidi]≥eHn−1+cexp⁡(−c)

ϕ

Pr[ϕn−1≥exp⁡(eHn−1+c)]≤E[ϕn−1]exp⁡(eHn−1+c).
E[ϕn−1]≤exp⁡(eHn−1)   ◻

(e−1)Hn−O(1)maxidi≥ln⁡ϕt−ln⁡n [EDIT: bicara terlalu cepat]

(1−o(1))eHn


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)=Πb∈B(b−1)!n!B

h(n)

h(n)=∑B∈BnPn(B)⋅maxb∈Bh(b)

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

h(n)=∑B∈Bn∖{{n}}Pn(B)⋅maxb∈Bh(b)1−1n!

Bnnh(1)=1


h(n)h


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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.