Giả sử tôi có một mảng M[n][n]
số nguyên 2D (trên thực tế, nhị phân là tốt, nhưng tôi nghi ngờ nó có vấn đề). Tôi quan tâm đến các truy vấn lặp lại có dạng: được cung cấp một cặp tọa độ ,
Tất nhiên, tất cả các giá trị này có thể được tính trong tổng thời gian và sau đó các truy vấn đó sẽ lấy . Tuy nhiên, mảng của tôi có thể thay đổi và mỗi lần tôi thay đổi một giá trị, giải pháp rõ ràng yêu cầu cập nhật .
Chúng ta có thể tạo một cây quad trên M
; quá trình tiền xử lý mất và điều này cho phép chúng tôi thực hiện các truy vấn trong và cập nhật trong .
Câu hỏi của tôi là:
Chúng ta có thể cải thiện đáng kể các truy vấn mà không phải hy sinh quá nhiều vào các bản cập nhật không?
Tôi đặc biệt quan tâm đến việc có được cả tuyến tính hoạt động cập nhật và truy vấn, và đặc biệt là đưa cả hai vào .
Chỉnh sửa: để biết thêm thông tin, mặc dù tôi nghĩ rằng vấn đề này rất thú vị ngay cả khi không có hạn chế này, tôi hy vọng sẽ thực hiện các truy vấn đại khái và về các cập nhật . Mục tiêu lý tưởng là đưa toàn bộ thời gian chạy xuống khoảng . Do đó, một tình huống trong đó một bản cập nhật mất trong khi một truy vấn mất cũng sẽ rất thú vị đối với tôi.