Gần đây tôi đã nghe Rich Hickey's interview on Software Engineering Radio. Trong cuộc phỏng vấn Rich đã đề cập rằng các bộ sưu tập của Clojure được thực hiện như cây cối. Tôi hy vọng sẽ triển khai các cấu trúc dữ liệu liên tục trong một ngôn ngữ khác và muốn hiểu cách các tập hợp và các cấu trúc dữ liệu liên tục của Clojure được thực hiện.Cấu trúc dữ liệu đằng sau bộ của Clojure là gì?
Cây trông giống như thế nào ở mỗi điểm trong kịch bản sau đây?
Tạo tập
{1 2 3}
Tạo sự kết hợp của
{1 2 3}
và{4}
Tạo sự khác biệt của
{1 2 3 4}
và{1}
Tôi muốn hiểu như thế nào ba bộ được tạo ({1 2 3}
, {1 2 3 4}
và {2 3 4}
) cấu trúc chia sẻ và cách "xóa" được xử lý.
Tôi cũng muốn biết số lượng chi nhánh tối đa mà nút có thể có. Giàu đề cập trong cuộc phỏng vấn rằng cây cối nông cạn, vì vậy có lẽ hệ số phân nhánh lớn hơn hai.
Hệ số phân nhánh là 32. –
Lưu ý quan trọng: Tôi vừa nghe Rich Hickey _Clojure Data Structures 2_ tại http://www.youtube.com/watch?v=sp2Zv7KFQQ0. Không chắc chắn nơi hoặc khi nào điều này được ghi lại. Bộ sưu tập có triển khai bộ nhớ khác nhau. (mặc định?) vectơ là cây nông. Các bộ sưu tập khác có thể có các triển khai khác. –
Họ làm. Cụ thể: bộ băm, bản đồ băm và véc tơ có 32 con cho mỗi nút; sắp xếp-thiết lập và sắp xếp-bản đồ là cây đỏ-đen và có 2 trẻ em mỗi nút. – Chouser