Tôi đang tìm kiếm một thuật toán hiệu quả cho vấn đề:
Dữ liệu vào : Số nguyên dương (được lưu dưới dạng bit) cho một số số nguyên .
Đầu ra : Số .
Câu hỏi : Chúng ta có thể tính từ các bit của trong thời gian không?
Đây là một câu hỏi lý thuyết được thúc đẩy bởi câu trả lời của tôi cho một câu hỏi toán học. Câu hỏi làm thế nào để tìm một công thức cho sự lựa chọn này? . Trong câu hỏi này, tác giả muốn tìm một mệnh đề từ và các số tự nhiên . Tôi đã đề xuất như một giải pháp. Một câu trả lời khác khẳng định "không có công thức đơn giản", điều này khiến tôi tự hỏi làm thế nào (tính toán) đơn giản giải pháp đề xuất của tôi là.
Với giải pháp đề xuất của tôi, nếu chúng ta biết và , chúng ta có thể dễ dàng tính (viết các chữ số nhị phân của theo sau là số 0 theo sau là số 0). Điều này mất thời gian .m 2 m ( 2 n + 1 ) n 1 m O ( n + m )
Tìm từ các bit của để tìm ra bit có ý nghĩa nhỏ nhất (có thể được tính bằng cách đếm các dịch chuyển bit phải, để lại trong bộ nhớ). Điều này mất thời gian .2 m 3 n 3 n O ( m )
Tuy nhiên, chúng ta cũng cần tìm , có thể khó khăn hơn. Có thể tìm thấy bằng cách chia , nhưng điều này có vẻ lãng phí. Nó đòi hỏi thao tác chia, mỗi thao tác sẽ mất thời gian , vì vậy đây là tổng thời gian . [Trên thực tế, sau mỗi lần lặp, số chữ số sẽ giảm tuyến tính, nhưng điều này vẫn dẫn đến thời gian .]n 3 n O ( n ) O ( n 2 ) O ( n 2 )
Có vẻ như chúng ta sẽ có thể khai thác khi biết đầu vào là sức mạnh của .