Làm thế nào gần chúng ta có thể nhận được để nhân tuyến tính, thêm và so sánh (trên số nguyên)?


21

Tham gia vào bài viết "Kết nối các vì sao" của KW Regan , cuối cùng, ông đề cập rằng vẫn còn một vấn đề mở để tìm một đại diện cho các số nguyên sao cho các phép toán cộng, nhân và so sánh có thể tính toán được trong thời gian tuyến tính:

Có tồn tại một đại diện của các số nguyên để cộng, nhân và so sánh đều có thể thực hiện được trong thời gian tuyến tính không? Về cơ bản, có một thời gian tuyến tính nhẫn đặt hàng rời rạc?

(1) Làm thế nào gần đến mức chúng ta có thể nhân và cộng thời gian tuyến tính, mà không so sánh? Ở đây tôi giả sử rằng các kích thước vấn đề có thể khác nhau, do đó chúng ta có thể cần một cấu trúc dữ liệu / thuật toán cho phép thay đổi kích thước số nguyên.

(2) Đối với bài toán hoàn chỉnh, chúng ta có thể giả sử rằng chúng ta sẽ tìm thấy một sơ đồ tối ưu để nhân, thêm và so sánh trên các số nguyên. Làm thế nào gần chúng ta có thể có được chậm nhất trong ba hoạt động (trong trường hợp xấu nhất) đối với thời gian tuyến tính? Và trên lưu ý đó, các hoạt động khác sẽ nhanh như thế nào?

BÁO CÁO VẤN ĐỀ FORMAL

Như Emil Jeřábek đề cập, chúng tôi muốn loại trừ các trường hợp tầm thường và tập trung vào hành vi xấu nhất cho câu hỏi này.

Vì vậy, chúng tôi yêu cầu, đối với các số nguyên không âm xy trong đó 0x<n0y<n , chúng tôi có thể tìm thấy cấu trúc / thuật toán dữ liệu có thể thực hiện phép cộng, nhân và so sánh với \ giữa xy trong thời gian Ôi(nđăng nhập(n)) và không gian ?O(log2(n))


1
Tôi sẽ đề cập đến rằng nó có thể tạo ra một chương trình mà thực hiện các hoạt động này trong thời gian trên các số nguyên không âm, nơi n là bitsize của số nguyên lớn nhất (giả sử chúng ta biết n trước thời hạn). Tôi tự hỏi nếu chúng ta có thể làm tốt hơn và làm điều này theo thời gian tỷ lệ với (các) số nguyên hiện tại đang được tính toán. Θ(n)nn
Matt Groff

5
@TysonWilliams: Vâng! Nhị phân!
Jeffε

2
Thay vì nhận thời gian tuyến tính cho tất cả các hoạt động này, có đại diện cho các số nguyên để tất cả các hoạt động này có thời gian không? O(nlogn)
Emil Jeřábek hỗ trợ Monica

4
Trên thực tế, có một câu trả lời tích cực tầm thường: biểu diễn các số nguyên trong hệ nhị phân với bit của phần đệm. Không phải câu lệnh bao gồm một số điều kiện cho hiệu ứng mà biểu diễn nên có độ dài tuyến tính theo chiều dài của biểu diễn nhị phân? n2
Emil Jeřábek hỗ trợ Monica

5
@ EmilJeřábek: Tôi giả sử anh ta muốn biểu diễn của bất kỳ số nguyên để sử dụng các bit f ( n ) , cho một số hàm f ( n ) = Θ ( log n ) . nf(n)f(n)=Θ(logn)
Jeffε

Câu trả lời:


14

Có lẽ không phải là câu trả lời tốt nhất, nhưng có lẽ đây là một điểm khởi đầu hữu ích. Nếu chúng ta muốn biểu diễn một số nguyên không âm, chúng ta có thể lưu trữ nó dưới dạng tập hợp các số nguyên tố tuần tự modulo bắt đầu từ 2. Trong phép so sánh dạng này có khả năng khó, nhưng phép nhân và phép cộng có thể được thực hiện khá nhanh. Tích của số nguyên tố đầu tiên được tính gần đúng bởi p n # = exp ( ( 1 + o ( 1 ) ) n log n ) . Do đó để đại diện cho một số nguyên N, bạn yêu cầu dư lượng modulo n số nguyên tố đầu tiên , trong đón

pn#=exp((1+o(1))nlogn).
Nn . Vì chúng ta có thể biểu diễn bất kỳ N < p n # nào bằng cách sử dụng dư lượng modulo cho n dư gốcđầu tiên, nên chúng ta có thể lấy n log n log ( N ) . Bổ sung và nhân có thể được thực hiện trực tiếp giữa các cặp dư lượng. Có n cặp như vậy, với số nguyên tố tối đa là khoảng n log ( n ) . Vì vậy, bổ sung nên được trongN<exp((1+o(1))nlogn)N<pn#nnlognlog(N)nnlog(n) , trong khi phép nhân thông qua Schonhage-Strassen phải ở O ( n log log log ( N ) log log log log ( N ) log log log ( N ) ) . Vì n log n log N , nên một xấp xỉ thô cho n trong O ( log N / log log N )O(nloglog(N))O(nloglog(N)loglogloglog(N)logloglog(N))nlognlogNnO(logN/loglogN). Điều này sẽ cho độ phức tạp của phép cộng và phép nhân xấp xỉ O ( log N log log log N log log log log N ) .O(logN)O(logNlogloglogNloglogloglogN)


1
@vzn: Vâng, tôi sẽ đề cập rằng để so sánh, nhưng sau đó tôi nhận ra rằng có thể có một hoạt động so sánh nhanh hơn thông qua một đại diện cơ số hỗn hợp.
Joe Fitzsimons
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.