Câu hỏi: Cho một -bit số tự nhiên , làm thế nào để tính toán chỉ sử dụng (bit) bổ sung và thay đổi?
Mẹo là sử dụng tìm kiếm nhị phân. Tuy nhiên, tôi không thể đạt được độ phức tạp cần thiết (tôi có ).
Nó có nghĩa là gì using only $O(n)$ (bit) additions and shifts
:
Đây là một bài tập trong một cuốn sách thuật toán.
Theo tôi, điều đó có nghĩa là việc thêm hai, giả sử -bit, số tự nhiên có giá và thay đổi a, nói -bit, số tự nhiên cũng có giá . Sau đó, chúng tôi chỉ được phép sử dụng các hoạt động lần như vậy.
Nó không đề cập đến chi phí so sánh. Tôi đoán chúng ta có thể bỏ qua nó hoặc giả sử rằng so sánh hai, giả sử -bit, số tự nhiên cũng có giá .
My Thuật toán :
- Xác định phạm vi số bit của :
Do đó,
t_1 \ Triangleq \ lfloor \ frac {n-1} {2} \ rfloor + 1 \ le t \ le \ lceil \ frac {n} {2} \ rceil + 1 \ Triangleq t_2.
- Tìm kiếm nhị phân: Tìm trong khoảng từ đến bằng cách sử dụng tìm kiếm nhị phân. Đối với mỗi số , để tính sử dụng bổ sung và thay đổi như nguyên thủy và so sánh nó với .
Do đó, độ phức tạp là cho lần tìm kiếm nhị phân và tính toán , mỗi lần lượt sẽ bổ sung và thay đổi .