Pohon dinamis memainkan peran penting dalam menyelesaikan masalah seperti aliran jaringan, grafik dinamis, masalah kombinatorial ("Dynamic Trees in Practice" oleh Tarjan dan Werneck) dan baru-baru ini menggabungkan kamus ("A Simple Mergeable Dictionary" oleh Adam Karczmarz),
Dengan pohon dinamis, saya merujuk pada definisi yang dinyatakan dalam makalah Sleator & Tarjan "Struktur data untuk pohon dinamis" pada tahun 1983. Beberapa upaya telah dipublikasikan dalam area penelitian pemrograman fungsional sejak itu.
- Edward Kmett mengimplementasikan versi pohon ST sebagian besar sebagai terjemahan dari mitra C ++, lihat Pohon yang terpotong tautan .
- Chris Okasaki menulis implementasi terbatas pohon Splay dalam bukunya yang terkenal "Struktur data murni fungsional".
- Ralf Hinze dan Ross Paterson memperkenalkan struktur data fungsional yang disebut pohon 2-3 jari tetapi dengan tujuan yang agak berbeda dari definisi asli pohon dinamis.
Implementasi (dan mungkin kinerja) pohon dinamis dibagi berdasarkan tiga pendekatan:
- Linearisasi, di mana pohon ET (tur Euler) memainkan peran besar. Tidak ditemukan studi yang murni fungsional.
- Path-decomposition, di mana pohon ST adalah andalannya, baru saja menemukan versi Kmett.
- Kontraksi pohon, di mana pohon Top, pohon topologi dan pohon RC adalah pemain. Tidak ditemukan studi yang murni fungsional.
Analisis dan implementasi yang murni fungsional dapat ditemukan pada Splay, AVL, pohon merah-hitam, tetapi itu BUKAN pohon dinamis. Yang pertama dianggap bayangan (juga disebut virtual atau tambahan) struktur data yang terakhir.
Jadi, pertanyaan saya adalah:
Apa alasan (kelemahan, kelemahan) bagi komunitas penelitian Pemrograman Fungsional untuk tidak mengambil bagian dalam struktur data pohon dinamis?
sumber
Jawaban:
"Dalam ilmu komputer, pemrograman fungsional adalah paradigma pemrograman. Gaya membangun struktur dan elemen program komputer yang memperlakukan komputasi sebagai evaluasi fungsi matematika dan menghindari perubahan keadaan dan data yang bisa berubah." - Wikipedia
"mengubah status dan data yang bisa berubah" dengan kata lain "dinamis".
Jadi pertanyaan Anda agak seperti bertanya mengapa kiri tidak benar.
sumber