Bằng chứng độ phức tạp thời gian để thực hiện Phân đoạn cây trong bài toán tổng hợp có phạm vi


10

Tôi hiểu rằng cây phân khúc có thể được sử dụng để tìm tổng của mảng con của . Và điều này có thể được thực hiện trong thời gian theo hướng dẫn ở đây .AO(logn)

Tuy nhiên tôi không thể chứng minh rằng thời gian truy vấn thực sự là . Liên kết này (và nhiều người khác) nói rằng chúng tôi có thể chứng minh rằng ở mỗi cấp độ, số nút tối đa được xử lý là và vì vậy .O(logn)4O(4logn)=O(logn)

Nhưng làm thế nào để chúng tôi chứng minh điều này, có lẽ bằng mâu thuẫn?

Và nếu vậy, nếu chúng ta sử dụng các cây phân đoạn cho tổng các mảng có chiều cao hơn, thì bằng chứng sẽ được mở rộng như thế nào?

Ví dụ, tôi có thể nghĩ đến việc tìm tổng ma trận phụ bằng cách chia ma trận gốc thành 4 góc phần tư (tương tự như một nửa các khoảng trong các mảng tuyến tính) xây dựng một cây phân đoạn góc phần tư nhưng bằng chứng đã vượt qua tôi.


xây dựng cây phân đoạn là O (n), truy vấn là O (log n) và cập nhật là O (log N). Lợi ích của nó so với mảng tổng là về độ phức tạp cập nhật của nó.
Nurlan

Câu trả lời:


11

Yêu cầu là có nhiều nhất nút được mở rộng ở mỗi cấp. Chúng tôi sẽ chứng minh điều này bằng mâu thuẫn.2

Hãy xem xét cây phân khúc được đưa ra dưới đây.

Cây phân khúc

Hãy nói rằng có nút được mở rộng trong cây này. Điều này có nghĩa là phạm vi là từ nút nhiều màu nhất bên trái đến nút nhiều màu nhất bên phải. Nhưng lưu ý rằng nếu phạm vi mở rộng đến hầu hết các nút bên phải, thì toàn bộ phạm vi của nút giữa được bao phủ. Do đó, nút này sẽ ngay lập tức trả về giá trị và sẽ không được mở rộng. Do đó, chúng tôi chứng minh rằng ở mỗi cấp độ, chúng tôi mở rộng tối đa nút và vì có các cấp , các nút được mở rộng được32logn2logn=Θ(logn)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.