Cây động đóng vai trò quan trọng trong việc giải quyết các vấn đề như dòng chảy mạng, đồ thị động, vấn đề tổ hợp ("Cây năng động trong thực tiễn" của Tarjan và Werneck) và gần đây hợp nhất từ điển ("Từ điển hợp nhất đơn giản" của Adam Karczmarz),
Bằng cây động, tôi đề cập đến định nghĩa được nêu trong bài báo "Cấu trúc dữ liệu cho cây động" của Sleator & Tarjan năm 1983. Vài nỗ lực đã được công bố trong lĩnh vực nghiên cứu lập trình chức năng kể từ đó.
- Edward Kmett đã triển khai một phiên bản của cây ST chủ yếu là bản dịch của bản sao C ++, xem Cây cắt liên kết .
- Chris Okasaki đã viết một triển khai hạn chế của cây Splay trong cuốn sách nổi tiếng "Cấu trúc dữ liệu chức năng thuần túy" của mình.
- Ralf Hinze và Ross Paterson đã giới thiệu một cấu trúc dữ liệu chức năng gọi là 2-3 cây ngón tay nhưng với mục đích hơi khác so với định nghĩa ban đầu về cây động.
Việc thực hiện (và có lẽ là hiệu suất) của cây động được chia theo ba cách tiếp cận:
- Tuyến tính hóa, trong đó cây ET (Euler tour) đóng một vai trò lớn. Không tìm thấy một nghiên cứu hoàn toàn chức năng.
- Phân rã đường dẫn, trong đó cây ST là lá cờ đầu, vừa tìm thấy phiên bản của Kmett.
- Cây co lại, trong đó cây Top, cây topo và cây RC là người chơi. Không tìm thấy một nghiên cứu hoàn toàn chức năng.
Phân tích và thực hiện chức năng hoàn toàn có thể được tìm thấy trên Splay, AVL, cây đỏ đen, nhưng đó không phải là cây động. Cái trước được coi là cấu trúc dữ liệu bóng (còn gọi là ảo hoặc phụ) của cái sau.
Vì vậy, câu hỏi của tôi là:
Các lý do (nhược điểm, điểm yếu) để cộng đồng nghiên cứu Lập trình chức năng không tham gia vào cấu trúc dữ liệu cây động là gì?