Tìm vật phẩm có ít nhất


11

Xem xét bộ giá trị (được biểu diễn dưới dạng mảng được sắp xếp không có trùng lặp và với kích thước đã biết (nghĩa là kích thước có thể đạt được trong O (1)). Các giá trị có thể được kiểm tra tính bằng trong thời gian O (1). để có được tập hợp các giá trị có trong ít nhất k tập hợp khác nhau trong số n .nkn

Thuật toán rõ ràng để làm điều này là đi qua tất cả các tập hợp, đếm số lần xuất hiện của mỗi giá trị và trả về những lần có số đếm cao hơn . Tuy nhiên, trong một số trường hợp, bạn có thể làm tốt hơn: ví dụ: khi n = k = 2 và khi một bộ S 1 nhỏ hơn nhiều so với bộ S 2 khác , sẽ hiệu quả hơn khi xem tất cả các mục của S 1 và thực hiện một tìm kiếm nhị phân cho mỗi trong số chúng trong S 2 : phương pháp tìm kiếm nhị phân có giá O ( | S 1 | log ( | S 2 |kn=k=2S1S2S1S2 trong khi cách tiếp cận ngây thơ có giá O ( | S 1 | + | S 2 | ) tệ hơn khi | S 1 | < < | S 2 | .O(|S1|log(|S2|))O(|S1|+|S2|)|S1|<<|S2|

Với suy nghĩ này, trong tình huống nào chúng ta có thể làm tốt hơn thuật toán ngây thơ? (Nếu đây là một vấn đề nổi tiếng, tôi sẽ rất vui khi biết tên thông thường của nó và có tài liệu tham khảo.)


3
Điều này thuộc danh mục chung của các kết quả "top-K" hoặc "những người tuyệt vời nặng". Cái sau gần hơn với những gì bạn đang tìm kiếm. Hầu hết các công việc trong không gian này tập trung vào các tập dữ liệu lớn và các hạn chế bộ nhớ tuyến tính mặc dù.
Suresh Venkat

9
O(|S1|log(|S2|/|S1|))

Câu trả lời:



1

Vấn đề của bạn tương tự như vấn đề khai thác dữ liệu của việc tìm kiếm các mục thường xuyên , còn được gọi là học quy tắc kết hợp . Nếu tôi hiểu chính xác, vấn đề của bạn có thể được giảm xuống thành việc tìm kiếm các mục thường xuyên của cardinality 1 (nghĩa là singletons) với sự hỗ trợ > = k . Tất nhiên, các thuật toán có sẵn (như Apriori, Eclat, D-CLUB, v.v.) cho vấn đề này cũng cho phép xác định các mục thường xuyên của cardinality> 1.

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.