(Saya seorang siswa dengan latar belakang matematika dan saya ingin tahu bagaimana cara menghitung jumlah jenis pohon biner tertentu.)
Melihat halaman Wikipedia untuk Binary Trees , saya perhatikan pernyataan ini bahwa jumlah pohon biner yang berakar berukuran akan menjadi Angka Katalan ini :
Tetapi saya tidak mengerti bagaimana saya bisa menghasilkan hasil seperti itu sendiri? Apakah ada metode untuk menemukan hasil ini?
Sekarang, bagaimana jika urutan sub-pohon (mana yang tersisa, mana yang benar) tidak dipertimbangkan? Sebagai contoh, dari sudut pandang saya, saya menganggap bahwa kedua pohon ini sama:
/\ /\
/\ /\
Apakah mungkin untuk menerapkan metode serupa untuk menghitung berapa banyak dari objek-objek ini yang memiliki node?
combinatorics
binary-trees
discrete-mathematics
Stéphane Gimenez
sumber
sumber
Jawaban:
Untuk menghitung banyak jenis objek kombinatorial, seperti pohon dalam kasus ini, ada alat matematika yang kuat (metode simbolik) yang memungkinkan Anda untuk secara mekanis menghitung jumlah tersebut dari deskripsi bagaimana objek kombinatorial dibangun. Ini melibatkan fungsi menghasilkan.
Referensi yang sangat baik adalah Analytic Combinatorics oleh Philipe Flajolet dan Robert Sedgewick. Ini tersedia dari tautan di atas.
Almarhum Herbert Wilf ini buku generatingfunctionology adalah sumber bebas yang lain.
Dan tentu saja Matematika Beton oleh GKP adalah harta karun.
Untuk pohon biner bunyinya seperti ini: Pertama, Anda perlu definisi yang jelas tentang pohon itu.
Pohon biner adalah pohon berakar di mana setiap simpul non-daun memiliki derajat 2 persis.
Selanjutnya kita harus menyetujui apa yang ingin kita sebut ukuran pohon.
Di sebelah kiri semua node sama. Di tengah kita membedakan daun dan bukan daun. Di sebelah kanan kami memiliki pohon biner yang telah dipangkas, tempat dedaunannya telah dihilangkan. Perhatikan bahwa ia memiliki cabang unary dari dua jenis (kiri dan kanan)!
Sekarang kita harus memperoleh deskripsi tentang bagaimana objek kombinatorial ini dibangun. Dalam kasus pohon biner, dekomposisi rekursif dimungkinkan.
Misalkan adalah himpunan semua pohon biner dari tipe pertama yang secara simbolis kita miliki:A
Bunyinya sebagai: "Objek kelas pohon biner adalah simpul atau simpul yang diikuti oleh dua pohon biner." Ini dapat ditulis sebagai persamaan set:
Dengan memperkenalkan fungsi pembangkit yang menyebutkan kelas objek kombinatorial ini, kita dapat menerjemahkan persamaan himpunan ke dalam persamaan yang melibatkan fungsi pembangkit.A(z)
Pilihan kami untuk memperlakukan semua node secara merata dan mengambil jumlah node dalam pohon sebagai gagasan tentang ukurannya dinyatakan dengan "menandai" node dengan variabel .z
Kita sekarang dapat menyelesaikan persamaan kuadrat untuk A ( z ) dan mendapatkan, seperti biasa, dua solusi, bentuk tertutup eksplisit dari fungsi pembangkit:zA2(z)−A(z)+z=0 A(z)
Sekarang kita hanya membutuhkan Teorema Binomial Newton (umum):
dengan dan x = - 4 z 2 untuk memperluas bentuk tertutup dari fungsi pembangkit kembali menjadi serangkaian listrik. Kami melakukan ini karena, koefisien pada z n hanyalah jumlah objek kombinatorial ukuran n , biasanya ditulis sebagai [ z n ] A ( z ) . Tapi di sini gagasan kami “ukuran” pasukan pohon kita untuk mencari koefisien di z 2 n + 1 . Setelah sedikit juggling dengan binomial dan faktorial, kita dapat:a=1/2 x=−4z2 zn n [zn]A(z) z2n+1
Jika kita mulai dengan gagasan kedua tentang ukuran dekomposisi rekursif adalah:
Kami mendapatkan kelas yang berbeda dari kombinasi benda . Bunyinya: "Objek kelas pohon biner adalah daun atau simpul interal diikuti oleh dua pohon biner."B
Ekstraksi hasil koefisien
Dalam kasus terakhir kita harus bekerja sedikit lebih keras:
dan menulis ulang dengan menghasilkan fungsi
memecahkan persamaan kuadrat
dan dapatkan lagi
Perhatikan bahwa fungsi menghasilkan Catalan adalah
itu menyebutkan kelas pohon umum . Itu adalah pohon tanpa batasan pada derajat simpul.
Bunyinya sebagai: "Objek kelas pohon umum adalah simpul yang diikuti oleh kemungkinan urutan pohon umum yang kosong."
Dengan Formula Inversi Lagrange-Bürmann kita dapatkan
Jadi kami membuktikan bahwa ada pohon umum sebanyak pohon biner. Tidak heran ada perhentian antara pohon umum dan pohon biner. Bijection dikenal sebagai korespondensi rotasi (dijelaskan pada akhir artikel terkait), yang memungkinkan kita menyimpan dua pohon umum sebagai pohon biner.
Oh dan jika Anda tidak suka membuat fungsi, ada banyak bukti lain juga. Lihat di sini , ada satu di mana Anda dapat menggunakan pengkodean pohon biner sebagai kata-kata Dyck dan dan memperoleh pengulangan dari definisi rekursif mereka. Kemudian memecahkan kekambuhan itu juga memberikan jawabannya. Namun metode simbolis menyelamatkan Anda dari kemunculannya di tempat pertama, karena ia bekerja secara langsung dengan cetak biru dari objek kombinatorial.
sumber
TTETETTETEE
TETETTETEEE
T(E,T(E,T(T(E,T(E,E)),E)))
type tree = T of tree * tree | E
T(T(E,E),T(T(E,E),T(E,E)))
TTEETTEETEE
E
TTEETTEETE
Selain itu, mengingat beberapa urutan dengan jumlah 1, selalu ada permutasi siklik yang membuat semua awalan tidak kosong memiliki jumlah positif. (Ini berlaku bahkan untuk bilangan real.)
sumber