Cấu trúc dữ liệu liên tục nào cho một tập hợp các phần tử được sắp xếp một phần?


15

Tôi cần lưu trữ các bộ phần tử loại a. Gõ được ra lệnh một phần, vì vậy so sánh và có thể trở lại nhỏ hơn, lớn hơn, bằng hoặc không thể so sánh.một1một2

Một vấn đề với hashtables là hai phần tử bằng nhau có thể được biểu diễn khác nhau và tôi không có quyền truy cập vào hàm băm phù hợp với đẳng thức.

So sánh hai yếu tố có thể là một quá trình dài vì vậy sẽ rất thú vị để giảm thiểu so sánh. Nếu cần, có thể ghi nhớ các cuộc gọi đến toán tử so sánh. Bây giờ tôi nhận ra rằng tôi sẽ chỉ cần lưu trữ antichains (hoặc giả sử như vậy). Chính xác hơn, các thao tác tôi sẽ cần thực hiện như sau:

  • Loại bỏ một yếu tố từ antichain;
  • Cố gắng thêm một yếu tố. Nếu phần tử nhỏ hơn một thành viên, không thêm nó, nếu không, hãy thêm nó và loại bỏ mọi phần tử nhỏ hơn nó.

Tôi cũng có thể ràng buộc mọi phần tử bằng hai số nguyên, để nếu tôi biết rằng và , thì việc biết ngay lập tức mang lại cho tôi . Tất nhiên, không có nghĩa ... Tìm giới hạn số nguyên là một hoạt động tương đối rẻ so với so sánh toàn bộ phần tử.Tôi1<một<Tôi2Tôi3<b<Tôi4Tôi2<Tôi3một<bTôi2Tôi3mộtb


1
Tôi nghĩ rằng chúng ta cần biết nhiều hơn để trả lời trực tiếp câu hỏi của bạn. Bạn đang lưu trữ các yếu tố và thứ tự một phần có thể dễ dàng tính toán? Hoặc bạn cũng đang lưu trữ một phần thứ tự trong một số loại bảng tra cứu? Làm thế nào để bạn có ý định sử dụng một phần thứ tự? Bạn có hy vọng sử dụng nó giống như cách sử dụng thứ tự tuyến tính để lưu trữ các tập hợp (ví dụ trong cây tìm kiếm) không?
Andrej Bauer

Bây giờ tôi nhận ra rằng tôi sẽ chỉ có antichains, tôi không chắc có gì tốt hơn giải pháp ngây thơ về việc lưu trữ kết quả trong danh sách. Nếu vậy, xin lỗi vì những rắc rối!
Abdallah

Nếu bạn nghĩ rằng câu hỏi của bạn bây giờ là tranh luận, có lẽ bạn nên gắn cờ để xóa / đóng?
Suresh Venkat

1
Bất kỳ hai yếu tố nào trong bộ sẽ không thể so sánh được, nhưng điều này không có nghĩa là đại diện ngây thơ là điều tốt nhất bạn có thể làm. Ví dụ: hãy xem xét các đa số hữu hạn được sắp xếp theo cách bao gồm (= số nguyên được sắp xếp theo tỷ lệ chia): có rất nhiều tiềm năng để tối ưu hóa, tùy thuộc vào cách trình bày dữ liệu của bạn (sử dụng cardinality, sử dụng bộ hỗ trợ, Thẻ). Những tối ưu hóa này sẽ phụ thuộc mạnh mẽ vào bản chất của mối quan hệ trật tự. Sau đó, có một vấn đề riêng biệt trong việc quyết định liệu có đáng lưu giữ thông tin về các yếu tố hiện đã bị xóa hay không: bạn có thường so sánh chúng với các bổ sung mới không?
Gilles 'SO- ngừng trở nên xấu xa'

Ok, cảm ơn bạn. Vì vậy, tôi đã thêm một số thông tin (khả năng giới hạn số nguyên) có thể dẫn đến tối ưu hóa.
Abdallah

Câu trả lời:


8

Bài viết "Sắp xếp và lựa chọn trong PoSets" của Daskalakis, Karp, Mossel, Risensefield, Verbin, 2008 mô tả một biểu diễn động của PoSets dựa trên antichains.

Bạn cũng có thể quan tâm đến bài báo "Succinc Posets" của Munro, Nicholson, 2012 được phát hành gần đây trên Arxiv và trong thư mục trong đó. Cấu trúc dữ liệu của họ là tĩnh nhưng tôi giả định rằng bước tiếp theo là có cấu trúc dữ liệu động.


Ôi(1)Ôi(1)Ôi(qn)

Có các bản đồ được thể hiện dưới dạng phân tách (tối thiểu) các chuỗi là cái nhìn sâu sắc tốt. Bảo tồn rằng bất biến thông qua xóa là những gì là khó khăn, mặc dù.
Sebastian Graf

4

Ôi(lgn)


1
Lưu ý điều này chỉ bao gồm các đơn đặt hàng một phần 'giống như cây', ví dụ đáp ứng bán kết, trong đó tất cả các phần tử nhỏ hơn hoặc bằng một số phần tử etạo thành một chuỗi.
Sebastian Graf
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.