Thời gian khởi tạo của cây cắt liên kết là gì?


8

Cây cắt liên kết là một cấu trúc dữ liệu được phát minh bởi Sleator và Tarjan, hỗ trợ các hoạt động và truy vấn khác nhau trên mộtrừng-ode trong thời gian O (\ log n) . (Ví dụ: liên kết hoạt động kết hợp hai cây trong rừng thành một, trong khi thao tác cắt chia một cây trong rừng thành hai cây.)nO(logn)

Một số ứng dụng được biết đến bằng cách sử dụng các cây cắt liên kết và ở đây tôi đặc biệt quan tâm đến việc phân tách dấu phân cách của Goodrich , với biểu đồ mặt phẳng -ode người ta có thể có được một cây nhị phân tương ứng trong đó các nút là sơ đồ con của và các con của một nút là đồ thị con của chia tách trên . Việc phân tách như vậy có thể được xây dựng dễ dàng trong thời gian (vì có thể tìm thấy dấu phân cách trong thời gian và vì dải phân cách chia đồ thị rất cân bằng, sau mức phân tách lá của cây có kích thướcnGGHHHO(nlogn)O(n)O(logn)O(1)). Đóng góp chính của Goodrich là anh ta có thể xây dựng một phân tách như vậy trong thời gian , bằng cách duy trì và sử dụng lại các cấu trúc dữ liệu được sử dụng để tìm các dấu phân cách ở mỗi cấp.O(n)

Một trong những cấu trúc dữ liệu đang được sử dụng trong xây dựng, thực sự là cây cắt liên kết. Trong trang 7 của bài báo của Goodrich, ông tuyên bố rằng việc khởi tạo cây cắt liên kết có thể được thực hiện trong thời gian . Trong khi tôi xem qua tất cả các bài báo được trích dẫn ở đó, dường như với tôi rằng nếu chúng ta xây dựng một cây cắt liên kết thông qua liên kết hoạt động , thì phải mất tổng thời gian .O(n)O(nlogn)

Tôi có hiểu lầm gì không? Việc khởi tạo cây cắt liên kết có thể được thực hiện trong thời gian không?O(n)

Câu trả lời:


6

Rất cám ơn Hsueh-I Lu , giáo viên của tôi tại Đại học Quốc gia Đài Loan, người cung cấp giải pháp sau đây.

Nó chỉ ra rằng câu trả lời là khá đơn giản; trong quá trình khởi tạo cấu trúc dữ liệu, chúng ta không phải xây dựng cấu trúc bằng các truy vấn và thao tác mà nó hỗ trợ . Tất nhiên, chúng ta không thể thực hiện các truy vấn trong quá trình xây dựng như chúng ta thường làm nếu chúng ta xây dựng cây bằng thao tác liên kết ; nhưng trong ứng dụng phân tách phân tách này, chúng ta không cần nó.

Điều đó có nghĩa là, trong ứng dụng phân tách dấu phân cách, khi chúng ta phải xây dựng các cây cắt liên kết L (T) cho cây bao trùm T trên biểu đồ đầu vào G, thay vì tính toán các cấu trúc và giá trị của các cây L (T ) bằng cách vận hành liên kết , chúng tôi tính toán trực tiếp phân rã đường đi nhẹ của cây T và xây dựng cấu trúc cây nhị phân tương ứng cho mỗi đường dẫn và dán các cây nhị phân theo phân tách đường dẫn. Tất cả các bước có thể được thực hiện trong thời gian tuyến tính.

Đối với mỗi giá trị cần thiết trên các nút của L (T), vì mỗi giá trị có thể được tính từ T theo thời gian tuyến tính (trong ứng dụng này), thay vì gán giá trị trên cấu trúc cây nhị phân và cập nhật khi dán cây, chúng tôi gán các giá trị được tính toán trước trực tiếp lên các nút của cây cắt liên kết cuối cùng L (T). Chỉ có một loại giá trị không đổi cần được chỉ định và một lần nữa điều này có thể được thực hiện trong thời gian tuyến tính.


0

Chương 5.1 trong "Cấu trúc dữ liệu và thuật toán mạng", được tham khảo. 43 trong bài báo bạn trích dẫn, có vẻ như nó có thể có câu trả lời:

http://books.google.com.vn/books?id=JiC7mIqg-X4C&lpg=PP1&ots=8frbjj8vL0&dq=data%20 cấu trúc% 20and% 20network% 20al Thuật toán & pp = # 599vv

... Khi thảo luận về vấn đề này, chúng ta sẽ sử dụng 'm' để biểu thị số lượng hoạt động và 'n' để biểu thị số lượng các đỉnh (hoạt động maketree). Một cách để giải quyết vấn đề này là lưu trữ với mỗi đỉnh cha mẹ và chi phí của nó. Với cách biểu diễn này, mỗi thao tác maketree, liên kết hoặc cắt mất O (1) thời gian và mỗi thao tác findroot, findcost hoặc addcost mất thời gian tỷ lệ thuận với độ sâu của đỉnh đầu vào, đó là O (n) ...

Một số trang liên tiếp có sẵn trong bản xem trước.


Chương này khá giống với giấy cây cắt liên kết; xem ba đoạn cuối trong p.365 của citeseerx.ist.psu.edu/viewdoc/iêu
Hsien-Chih Chang

Vì sau này trong thuật toán, các hoạt động có giá là rất cần thiết, việc triển khai ngây thơ này không thể được sử dụng. Tôi đang tìm kiếm triển khai chính được giới thiệu trong cùng một bài viết, có giới hạn thời gian cho mỗi thao tác. O ( log n )O(n)O(logn)
Hsien-Chih Chang 張顯

tôi không thể tìm thấy bất kỳ thông tin nào khác để sao lưu khiếu nại này, vì vậy tôi nghĩ rằng họ phải là, a. đề cập đến việc xây dựng 'ngây thơ' này (có lẽ nhầm lẫn), b. đề cập đến hoạt động 'make_tree' chỉ đơn giản là khởi tạo cây một nút mới, hoặc có lẽ c. xúi giục hai người. mặt khác, chặn các bằng chứng bổ sung mà tôi có khuynh hướng nghĩ rằng bạn đúng.
s8soj3o289
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.