Độ phức tạp của điện toán


Câu trả lời:


12

Bằng cách sử dụng biến đổi Fourier nhanh, phép nhân trên số -bit có thể được thực hiện kịp thời (trong đó dấu ngã biểu thị rằng chúng ta bỏ qua các yếu tố đa bội). Bằng cách lặp lại bình phương, chúng ta có thể tính với các phép nhân và mỗi phép nhân không có số nào lớn hơn , có khoảng bit. Vì vậy, tổng thời gian cần thiết là .˜ O ( k )kO~(k) O ( log n ) n n 2 n 2 log 2 n ˜ O ( n 2 ( log n ) 2 ) = ˜ O ( n 2 )nn2O(logn)nn2n2log2nO~(n2(logn)2)=O~(n2)


3

Đã chỉnh sửa để trả lời các bình luận Thời gian để tính có thể được phân tách thành thời gian cần thiết để tính và cần phải thực hiện . Tôi sẽ giả định rằng nhân một m số chút bởi một n số chút mất chính xác m n thời gian theo phương pháp cuốn sách học; bổ sung, vv là thời gian không đổi. Kết quả là, tính toán n 2 mất thời gian đăng nhập 2 2 ( n ) . f 1 ( n ) = n 2f(n)=nn2f1(n)=n2nf1(n)mnmnn2log22(n)

Giả sử rằng chúng ta sử dụng lũy ​​thừa nhị phân để tính toán . Phép lũy thừa nhị phân thực hiện hai loại hoạt động trong tính toán f ( n ) : bình phương sản phẩm hiện tại và nhân sản phẩm hiện tại với , tùy theo bit hiện tại trong khai triển nhị phân của n 2 là 0 hay 1. Trong trường hợp xấu nhất, n 2 là lũy thừa của hai, do đó lũy thừa nhị phân lặp lại bình phương sản phẩm hiện tại của nó cho đến khi đạt được câu trả lời. Lưu ý rằng n 2m = 2 log 2 ( nf(n)f(n)nn2n2n2 bit, do đó số lượng squarings như là m = m ' - 1 . Đây là trường hợp chúng tôi phân tích thêm dưới đây.m=2log2(n)m=m1

Bình phương đầu tiên mất thời gian, dẫn đến sản phẩm có tỷ lệ o 1 = 2 log 2 ( n ) . Bình phương thứ hai lấy hai số o 1 bit và chạy trong t 2 = o 2 1 lần, dẫn đến sản phẩm o 2 = 2 o 1 bit. Tiếp tục, bước thứ i mất t i = 4 i - 1 logt1=log22(n)o1=2log2(n)o1t2=o12o2=2o1ithời gian và kết quả đầu rati=4i1log22n . Quá trình này dừng lại ởbước thứ m ; kết quả là nó cần có thời gianoi=2ilog2(n)m

. Texp=[1..m]ti=log22(n)[1..m]4i=4m13log22n

Khi bao gồm chi phí bình phương ban đầu, chúng tôi thấy chúng tôi cần nhiều thời gian nhất

Texp+log22n

Ghi chú

  • Tôi đã bỏ qua một số sàn và trần trong các tính toán, hy vọng chúng sẽ không ảnh hưởng lớn đến câu trả lời.
  • Tôi đã cố tình bỏ qua một phân tích dựa trên để ủng hộ giới hạn trên chính xác chỉ để nghiêm ngặt. O
  • Lý do trên cũng làm rõ lý do tại sao phân tích trước đây của tôi là thiếu sót. Các ký hiệu được sử dụng trong một cách nhanh chóng-và-lỏng lẻo, và nó thuận tiện bỏ qua hằng do đó, ví dụ, Σ t i kỳ diệu trở thành O ( log n ) . OtiO(logn)
  • Các phép nhân có thể luôn được tăng tốc bằng FFT và các phương thức khác.

1
Làm thế nào bạn có độ phức tạp để tính toán n 2 ? O(1)n2

4
nO(logn)O(1)

2
n2log2nn2log2nO(logn)

Điểm công bằng, tôi sẽ lưu ý
PKG

1
@ThomasAndrews: Điều đó phụ thuộc vào máy và mô hình chi phí. Nó không phải là bất thường khi giả định một mô hình RAM với chi phí bổ sung cho các bổ sung.
Raphael
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.