Trước hết câu hỏi tuyệt vời! Tôi ước có nhiều câu hỏi như thế này.
Vì vậy, nó chỉ ra rằng phương pháp tôi đưa ra là O (n log n) cho phép nhân chung chỉ trong độ phức tạp số học. Bạn có thể đại diện cho bất kỳ số X như
X = x_{n-1} 2^{n-1} + ... + x_1 2^1 + x_0 2^0
Y = y_{m-1} 2^{m-1} + ... + y_1 2^1 + y_0 2^0
nơi
x_i, y_i \in {0,1}
sau đó
XY = sum _ {k=0}^m+n r_k 2^k
nơi
r_k = sum _ {i=0}^k x_i y_{k-i}
mà chỉ là một ứng dụng chuyển tiếp thẳng của FFT để tìm ra giá trị của r_k cho mỗi k trong (n + m) log (n + m) thời gian.
Sau đó, đối với mỗi r_k, bạn phải xác định mức độ tràn lớn và thêm nó cho phù hợp. Đối với bình phương một con số này có nghĩa là O (n log n) số học hoạt động.
Bạn có thể thêm giá trị r_k hiệu quả hơn bằng thuật toán Schönhage – Strassen để thu được hoạt động bit O (n log n log log n) bị ràng buộc.
Câu trả lời chính xác cho câu hỏi của bạn đã được đăng bởi Eric Bainville.
Tuy nhiên, bạn có thể bị ràng buộc tốt hơn nhiều so với O (n^2) để bình phương một số đơn giản vì có tồn tại nhiều giới hạn tốt hơn để nhân số nguyên!
Bạn thấy sự điên rồ này ở đâu? – Havenard
Lớp thuật toán của tôi tại Berkeley :) – Jess
Không thể đúng, bạn phải làm một số điều ngớ ngẩn ở đó. – Havenard