Câu trả lời:
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 ) O ( log n ) n n 2 n 2 log 2 n ˜ O ( n 2 ( log n ) 2 ) = ˜ O ( n 2 )
Đã 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 2
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 2 có m ′ = ⌈ 2 log 2 ( n 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.
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 logthời gian và kết quả đầu ra . Quá trình này dừng lại ởbước thứ m ; kết quả là nó cần có thời gian
.
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
Ghi chú