Latar Belakang
Sebuah pohon keputusan biner adalah pohon berakar di mana setiap node internal (dan akar) diberi label oleh indeks sedemikian sehingga tidak ada jalur dari root ke daun mengulangi indeks, daun diberi label oleh output di , dan setiap tepi diberi label oleh untuk anak kiri dan untuk anak kanan. Untuk menerapkan pohon ke input :
- Mulai dari root
- Jika Anda siap, Anda mengeluarkan label daun atau dan berakhir
- Baca label dari simpul Anda saat ini, jika kemudian pindah ke anak kiri dan jika kemudian pindah ke anak kanan.
- lompat ke langkah (2)
Pohon ini digunakan sebagai cara untuk mengevaluasi fungsi, khususnya kami katakan pohon merupakan fungsi jumlah jika untuk setiap kita memiliki . Kompleksitas kueri suatu pohon adalah kedalamannya, dan kompleksitas kueri suatu fungsi adalah kedalaman pohon terkecil yang mewakilinya.
Masalah
Diberikan pohon keputusan biner T output pohon keputusan biner T 'dari kedalaman minimal sehingga T dan T' mewakili fungsi yang sama.
Pertanyaan
Apa algoritma yang paling dikenal untuk ini? Apakah ada batas bawah yang diketahui? Bagaimana jika kita tahu bahwa ? Bagaimana jika kita hanya membutuhkan kira-kira kedalaman minimal?
Pendekatan naif
Pendekatan naif diberikan untuk secara rekursif menghitung semua pohon keputusan biner dari kedalaman d - 1 saat uji coba jika mereka mengevaluasi hal yang sama seperti T . Ini sepertinya membutuhkan O ( d 2 n n !langkah-langkah (dengan asumsi bahwa diperlukanlangkah-langkahduntuk memeriksa apaT(x)mengevaluasi untuk untuk sewenang-wenangx). Apakah ada pendekatan yang lebih baik?
Motivasi
Pertanyaan ini dimotivasi oleh pertanyaan sebelumnya tentang pertukaran antara kompleksitas kueri dan kompleksitas waktu . Secara khusus, tujuannya adalah untuk mengikat pemisahan waktu untuk fungsi total. Kita dapat membuat pohon dari algoritma waktu optimal dengan runtime t , dan kemudian kami ingin mengubahnya menjadi pohon T ′ untuk algoritme optimal kueri. Sayangnya, jika t ∈ O ( n ! / ( N - d ) ! ) (Dan sering d ∈ Θ ( n )) bottleneck adalah konversi. Alangkah baiknya jika kita bisa mengganti oleh sesuatu seperti 2 d .