Sự khác biệt của yếu tố trong thời gian O (n)?


21

Chúng ta đều biết rằng sự khác biệt của phần tử trong mô hình dựa trên so sánh không thể được thực hiện trong thời gian . Tuy nhiên, trên RAM từ, người ta có thể đạt được kết quả tốt hơn.o(nlogn)

Tất nhiên, nếu giả sử sự tồn tại của hàm băm hoàn hảo có thể được tính theo thời gian tuyến tính, chúng ta sẽ có thuật toán thời gian tuyến tính cho tính khác biệt của phần tử: chỉ cần băm từng số một và trả về 1 nếu có xung đột.

Tuy nhiên, có hai vấn đề: 1) hầu hết các cấu trúc của hàm băm hoàn hảo mà tôi có thể tìm thấy tính ngẫu nhiên đã sử dụng và 2) Tôi không thể tìm thấy một cuộc thảo luận về thời gian tiền xử lý ở bất cứ đâu, tức là thời gian cần thiết để quyết định hàm băm nào sẽ diễn ra để sử dụng dựa trên bộ số đầu vào.

" Lưu trữ một bảng thưa thớt với thời gian truy cập trường hợp xấu nhất của O(1) " giải quyết vấn đề đầu tiên bằng cách cung cấp hàm băm với thời gian truy cập trong trường hợp xấu nhất, nhưng không nói gì về vấn đề thứ hai .O(1)

Vì vậy, để tóm tắt, đây là những gì tôi muốn:

Thiết kế một thuật toán cho một tập hợp gồm n số (mỗi số dài w bit) trên một từ RAM có độ dài từ w , tìm thấy hàm băm h : S { 1 , Lỗi , m } trong thời gian O ( n ) , trong đó m = O ( n ) . Hàm h nên có thuộc tính cho mọi j { 1 , , m } , số phần tử củaSnwwh:S{1,,m}O(n)m=O(n)hj{1,,m} ánh xạ tới j là hằng sốtính toán h ( i ) sẽ mấtthời gian O ( 1 ) trong mô hình RAM từ "hợp lý", nghĩa là mô hình không được phép đánh giá các chức năng "kỳ lạ" trên các từ trong O ( 1 ) thời gian.Sjh(i)O(1)O(1)

Tôi cũng muốn biết liệu có các thuật toán để giải quyết tính khác biệt của phần tử trên từ - RAM hoàn toàn không sử dụng hàm băm hay không.


8
Re: "Tôi cũng muốn biết liệu có thuật toán nào để giải quyết sự khác biệt của phần tử trên từ - RAM không sử dụng hàm băm nào không." - miễn là bạn chỉ muốn và không tuyến tính, có rất nhiều công việc sắp xếp trên RAM từ (xem en.wikipedia.org/wiki/Integer_sorting ). Một số thuật toán này sử dụng băm nhưng một số khác thì không. o(nlogn)
David Eppstein

Là giải pháp gần đúng được cho phép?
TẠI

Θ(nlogn)O(n)o(nlogn)

Là loại sắp xếp quá chậm cho bạn?
Thomas Mueller

Câu trả lời:


8

O(nloglogn)o(nlogn)

O(nloglogn)nwO(nloglogn)

Theo tôi biết, đó là kết quả tốt nhất được biết đến cho đến ngày nay.


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.