2013-06-07 32 views
8

Có tên cho cấu trúc dữ liệu sau không? Có giấy tờ và trích dẫn nào không?Có tên cho bộ sưu tập cấu trúc dữ liệu mảng được sắp xếp này không?

Một cách to implement một hiệu quả bộ trừu tượng dữ liệu loại là phải có một bộ sưu tập của mảng được sắp xếp, trong đó mỗi mảng có một độc đáo power-of-2 kích thước.

Ví dụ: một tập hợp gồm 13 phần tử {1, 2, ..., 13} có thể được biểu diễn bằng tập hợp các mảng được sắp xếp này: {[5], [2, 3, 9, 13], [1 , 4, 6, 7, 8, 10, 11, 12]}.

Nói chung, các mảng trong bộ sưu tập có kích thước tương ứng với 1 bit trong biểu diễn nhị phân của kích thước của tập hợp. Cấu trúc dữ liệu là hiệu quả vì chèn có thể được thực hiện trong khấu hao O (1) thời gian, và tìm kiếm có thể được thực hiện trong O ((log n)) thời gian (đó là tốt hơn so với tìm kiếm tuyến tính). Ngoài ra, nó chỉ sử dụng O (log n) không gian trên cao cho con trỏ, không giống như cây nhị phân cân đối và B-cây mà sử dụng O (n) thêm không gian cho con trỏ. Do đó, hầu hết không gian được sử dụng cho dữ liệu tải trọng.

Tôi đã xem số list of data structures của Wikipedia nhưng không tìm thấy kết quả phù hợp. Đúng là cuốn sách Giới thiệu về thuật toán ("CLRS") mô tả cấu trúc dữ liệu này như một bài tập về nhà trong phần "Phân tích phân bổ", nhưng vì đó là một câu hỏi chứ không phải là một ví dụ, cuốn sách không nói nhiều về nó.

+0

Tôi chỉ có thể nghĩ đến thẻ "cấu trúc dữ liệu". Tôi đánh giá cao các đề xuất cho các thẻ có liên quan! – Nayuki

+0

Những câu hỏi hiện có này có cấu trúc dữ liệu giống nhau, nhưng chúng hỏi về việc triển khai và giải thích: http://stackoverflow.com/questions/2602110/, http://stackoverflow.com/questions/4701433/. Tôi biết cấu trúc dữ liệu hoạt động như thế nào, vì vậy tôi đặc biệt tìm kiếm các tài liệu đã xuất bản về nó. – Nayuki

Trả lời

4

Một ý tưởng tương tự có từ ít nhất đến số original publication on binomial heaps của Jean Vuillemin trong ấn bản CACM tháng 4 năm 1978. Tôi mong chờ bài báo giới thiệu cấu trúc dữ liệu này để trích dẫn hoặc được trích dẫn bởi Vuillemin, nhưng không có giấy tờ nào trong danh sách "tài liệu tham khảo" và "được trích dẫn bởi" trông đầy hứa hẹn.

Nếu tôi là bạn, tôi sẽ yêu cầu cstheory và sau đó viết thư cho CLRS, nhưng với giới hạn dưới và thiếu xóa, tôi không mong đợi bất cứ điều gì để bật trừ khi cộng đồng succinct data structure đã quan tâm tại một số điểm.

Có điều gì đặc biệt bạn muốn biết không?

+0

Cảm ơn bạn đã tham khảo SE: DSes ngắn gọn và ngắn gọn, có liên quan nhưng mới với tôi. Tôi hỏi câu hỏi bởi vì tôi muốn viết cho cấu trúc dữ liệu này, mà tôi có thể làm. Nhưng tôi muốn cho nó một cái tên đã được chấp nhận, và cũng muốn xây dựng trên các tài liệu hiện có thay vì chỉ dựa vào những ý tưởng của riêng tôi. – Nayuki

+0

Đúng là thời gian tìm kiếm là tối ưu, nhưng tôi đã tận dụng lợi thế của tính ngắn gọn trong một trong các ứng dụng của tôi vì nó cần giữ hàng triệu trạng thái trò chơi đã được truy cập trong bộ nhớ. Để xóa, CLRS nói "Thảo luận cách thực hiện DELETE", nhưng khi suy nghĩ về ánh sáng, tôi không thể nghĩ ra bất kỳ cách rõ ràng nào để thực hiện nó ngay cả trong thời gian O (n log n) ... – Nayuki

+0

@NayukiMinase suy nghĩ của nó, xóa cũng phải được phân bổ O (1) là tốt, thông qua các expedient thông thường của việc có bitmap cho thấy các mục chưa được xóa và sáp nhập một mảng nửa rỗng xuống. –

Các vấn đề liên quan