Câu trả lời này xem xét một mô hình tính toán khác: mô hình RAM chi phí đơn vị. Trong mô hình này, các từ máy có kích thước và các thao tác trên chúng mất thời gian O ( 1 ) . Chúng tôi cũng giả sử cho đơn giản rằng mỗi phần tử mảng phù hợp với một từ máy (và tối đa là n O ( 1 ) về độ lớn).O(logn)O(1)nO(1)
Chúng tôi sẽ xây dựng một thời gian tuyến tính ngẫu nhiên thuật toán với một chiều lỗi (các thuật toán có thể khai báo hai mảng để chứa các yếu tố tương tự ngay cả khi đây không phải là trường hợp) cho các vấn đề khó khăn hơn trong việc xác định liệu hai mảng và b 1 , ... , b n chứa các yếu tố tương tự. (Chúng tôi không yêu cầu bất kỳ ai trong số họ được sắp xếp.) Thuật toán của chúng tôi sẽ gây ra lỗi với xác suất nhiều nhất là 1 / n .a1,…,anb1,…,bn1/n
Ý tưởng là bản sắc sau giữ khi và chỉ khi các mảng chứa các yếu tố giống nhau:
Việc tính toán các đa thức này chính xác sẽ mất quá nhiều thời gian. Thay vào đó, chúng tôi chọn một số nguyên tố ngẫu nhiên p và ngẫu nhiên một x 0 bài kiểm tra và xem
n Π i = 1 ( x 0 - một i ) ≡ n Π
∏i=1n(x−ai)=∏i=1n(x−bi).
px0
Nếu các mảng bằng nhau, kiểm tra sẽ luôn vượt qua, vì vậy hãy tập trung vào các trường hợp trong đó các mảng khác nhau. Đặc biệt, một số hệ số
Π n i = 1 ( x - một i ) - Π n i = 1 ( x - b i ) không phải là zero. Vì
a i , b i có độ lớn
n O ( 1 ) , hệ số này có độ lớn
2 n n O (∏i=1n(x0−ai)≡∏i=1n(x0−bi)(modp).
∏ni=1(x−ai)−∏ni=1(x−bi)ai,binO(1)2nnO(n)=nO(n) , và do đó, nó có nhiều nhất các thừa số nguyên tố
có kích thước
Ω ( n ) . Điều này có nghĩa rằng nếu chúng ta chọn một bộ ít nhất
n 2 số nguyên tố
p kích thước ít nhất
n 2 (nói), sau đó cho một số nguyên tố ngẫu nhiên
p của bộ này nó sẽ tổ chức với xác suất ít nhất
1 - 1 / n mà
n Π i = 1 ( x - a i )O(n)Ω(n)n2pn2p1−1/n
Một ngẫu nhiên
x 0 modulo
p sẽ chứng kiến này với xác suất
1 - n / p ≥ 1 - 1 / n (vì một đa thức bậc nhất
n∏i=1n(x−ai)−∏i=1n(x−bi)≢0(modp).
x0p1−n/p≥1−1/nn có ít nhất
rễ).
n
Tóm lại, nếu chúng tôi chọn ngẫu nhiên kích thước xấp xỉ n 2 trong một bộ ít nhất n 2 số nguyên tố khác nhau, và một ngẫu nhiên x 0 modulo p , sau đó khi các mảng không chứa các yếu tố tương tự, thử nghiệm của chúng tôi sẽ thất bại với xác suất 1 - O ( 1 / n ) . Chạy thử nghiệm mất thời gian O ( n ) vì p phù hợp với số lượng từ máy không đổi.pn2n2x0p1−O(1/n)O(n)p
Sử dụng kiểm tra tính nguyên thủy thời gian đa thức và vì mật độ của các số nguyên tố có kích thước khoảng là Ω ( 1 / log n ) , chúng ta có thể chọn một số nguyên tố p ngẫu nhiên trong thời gian ( log n ) O ( 1 ) . Chọn ngẫu nhiên x 0 modulo pn2Ω(1/logn)p(logn)O(1)x0p có thể được thực hiện theo những cách khác nhau, và được thực hiện dễ dàng hơn vì trong trường hợp của chúng tôi, chúng tôi không cần một hoàn toàn thống nhất ngẫu nhiên .x0
Tóm lại, thuật toán của chúng tôi chạy trong thời gian , luôn luôn xuất CÓ nếu các mảng chứa các phần tử giống nhau và xuất ra NO với xác suất 1 - O ( 1 / n ) nếu các mảng không chứa các phần tử giống nhau. Chúng ta có thể cải thiện xác suất lỗi thành 1 - O ( 1 / n C ) cho bất kỳ hằng số C nào .O(n)1−O(1/n)1−O(1/nC)C