Cây Splay với số lần quay lẻ


9

Khi chèn một mục vào cây splay, phép quay được thực hiện theo cặp dựa trên mô hình zig-zag hoặc zig-zig. Khi có một số vòng quay lẻ được thực hiện, người ta có thể thực hiện xoay vòng thêm bắt đầu từ chiếc lá hoặc lưu vòng quay thêm và thực hiện nó ở gốc. Có vấn đề gì không?

Ví dụ, trong hình ảnh đính kèm, tôi chèn 4 vào BST và "phát nó" vào thư mục gốc. Trên đỉnh của hình, trước tiên tôi xác định cặp zig-zig ở nút lá và thực hiện thao tác zig-zag từ phía dưới để lại một vòng quay bên phải cuối cùng ở gốc. Ở dưới cùng của hình, đầu tiên tôi thực hiện xoay vòng lẻ bắt đầu từ chiếc lá, và sau đó thực hiện một trò chơi zig-zig đến gốc.

Cái nào đúng? Hoặc cả hai sẽ dẫn đến hiệu suất splay-cây thông thường?

hai cách để chơi cho số vòng quay lẻ

Câu trả lời:


4

Nó thực sự không quan trọng đối với phân tích. Bổ đề chính để phân tích hiệu suất của cây splay là bổ đề truy cập . Nó nói rằng chi phí khấu hao của một hoạt động splay (x) nhỏ hơn , trong đó là gốc của cây và . Trọng số của một cây con là tổng trọng số của các nút của nó. (Trọng số (dương) sẽ được chọn tùy thuộc vào ứng dụng của bổ đề.) Hàm tiềm năng được sử dụng là .1+3(r(t)r(x))tr(u):=log(weight of u's subtree)Φ(T)=x node of Tr(t)

Bằng chứng của bổ đề truy cập xem xét các chi phí của một hoạt động zig / zig-zag / zig-zig, vv. Bạn lấy

  1. Chi phí của một hoạt động zig hoặc zag là , trong đó là rang sau hoạt động và là nút được xoay lên trên.1+3(r+(u)r(u))r+u

  2. Chi phí của zig-zig / zig-zag và các phép toán đối xứng là .3(r+(u)r(u))

Nếu bạn thêm các khác biệt này cho các thao tác được thực hiện trong một splay (x) , bạn sẽ có được tổng kính thiên văn và phần còn lại là .1+3(r(t)r(x))

Nếu bạn thay đổi thứ tự của các phép quay, bạn sẽ nhận được cùng một số tiền. Sự khác biệt duy nhất là bây giờ '' +1 '' đến từ vòng quay đầu tiên chứ không phải từ vòng quay cuối cùng. Bạn thậm chí có thể thực hiện xoay zig ở giữa. Tất cả các phân tích (cổ điển) hơn nữa dựa trên bổ đề truy cập.

Tuy nhiên, lý do tại sao bạn thực hiện vòng quay đơn cuối cùng là vì bạn không biết liệu độ sâu của nút là chẵn hay lẻ trước.

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.