(Tôi hiểu mô tả của vấn đề để các số đầu vào được giới hạn bởi một hằng số, vì vậy tôi sẽ không theo dõi sự phụ thuộc vào ràng buộc.)
Vấn đề có thể giải quyết được trong thời gian tuyến tính và không gian logarit bằng cách sử dụng tổng số logarit. Chi tiết hơn, thuật toán như sau:
- Sử dụng bộ đếm nhị phân, đếm số lần xuất hiện của từng số đầu vào có thể có trong cả hai danh sách.
Điều này làm mất thời gian và các bộ đếm sử dụng không gian , vì mỗi bộ đếm được giới hạn bởi về giá trị.O ( log n ) nÔ ( n )O ( nhật kýn )n
Đặt là các số nguyên tố bên dưới giới hạn . Bằng cách phân phối mỗi bộ đếm cho một số cho các thừa số nguyên tố của (với bội số thích hợp) và trừ các số đếm cho một danh sách từ danh sách khác, chúng tôi có được thời gian sau : O ( 1 ) a a O ( log n )p1, ... , pkÔ ( 1 )mộtmộtO ( nhật kýn )
Tính các số nguyên với các sao cho vấn đề tương đương với việc xác định dấu của . O ( log n ) Λ : = Σ k i = 1 β i log p iβ1, ... , βkO ( nhật kýn )Λ : = ∑ki = 1βTôiđăng nhậppTôi
Nếu , hãy trả lời rằng các sản phẩm bằng nhau.β1= ⋯ = βk= 0
Nếu không . Theo định lý của Baker , chúng ta có thể hạ thấp giới hạn
cho một hằng số nhất định . Do đó, phần sau đây sẽ tính toán chính xác dấu hiệu của :| Λ | > 2 - C log n C ΛΛ ≠ 0
| Λ | > 2- Cđăng nhậpn
CΛ
- Xuất ra dấu của , trong đó là một xấp xỉ của với bit chính xác.π i log p i m : = C log n + k + 1Σki = 1βTôiπTôiπTôiđăng nhậppTôim : = Cđăng nhậpn + k + 1
Gọi là chi phí nhân của hai số nguyên -bit. Giới hạn tốt nhất hiện tại là , nhưng ở đây nó sẽ không tạo ra nhiều khác biệt ngay cả khi chúng ta sử dụng tầm thường thuật toán nhân. Chúng ta có thể tính toán với bit chính xác theo thời gian bằng cách sử dụng phép lặp AGM (xem ví dụ ở đây ), sau đó đánh giá mất thời gian . Nhìn chung, bước 4 mất thời gian .m M ( m ) = O ( mM( m )mM( m ) = O ( mđăng nhậpm2O ( nhật ký*m ))Ô ( m2)đăng nhậppTôimO ( M( m ) nhật kým )ΣTôiβTôiπTôiO ( M( m ) )O ( M( m ) nhật kým ) ⊆ O ( lognp o l y (nhật kýđăng nhậpn ) )
Do đó, thời gian chạy của thuật toán bị chi phối bởi của bước đầu tiên.Ô ( n )