Giả sử là một cây có độ không đổi có cấu trúc mà chúng ta không biết. Vấn đề là xuất cây bằng cách hỏi các truy vấn có dạng: "Nút nằm trên đường dẫn từ nút đến nút không?". Giả sử rằng mỗi truy vấn có thể được trả lời trong thời gian không đổi bằng một lời sấm truyền. Chúng ta biết giá trị của , số lượng nút trong cây. Mục tiêu là để giảm thiểu thời gian thực hiện để xuất cây theo .
Có tồn tại thuật toán cho vấn đề trên không?
Giả sử rằng mức độ của bất kỳ nút nào trong nhiều nhất là 3.
Những gì tôi biết
Trường hợp đường kính giới hạn là dễ dàng . Nếu đường kính của cây là , thì chúng ta có thể nhận được thuật toán chia và chinh phục:
Bất kỳ cây nhị phân nào cũng có một dải phân cách tốt để chia cây thành các thành phần có kích thước không nhỏ hơn 1 / 3n.
- Chọn bất kỳ đỉnh x. Nếu đó là một nhãn phân tách tốt và tái diễn.
- Tìm tất cả 3 hàng xóm của x.
- Di chuyển theo hướng của hàng xóm có số lượng nút lớn nhất. Lặp lại bước 2 với hàng xóm.
Vì việc tìm dấu phân cách mất tối đa các bước , chúng tôi nhận được thuật toán .O ( n D log n )
Một thuật toán ngẫu nhiên . (chuyển từ bình luận bên dưới)
Chọn hai đỉnh x và y ngẫu nhiên. Với xác suất 1/9 chúng sẽ nằm ở phía đối diện của dải phân cách. Chọn nút giữa của đường dẫn từ đến . Xem nếu nó là một dấu phân cách, nếu không thực hiện tìm kiếm nhị phân.y
Phải mất thời gian dự kiến để tìm dấu phân cách. Vì vậy, chúng tôi nhận được một thuật toán ngẫu nhiên .O ( n
Lý lịch. Tôi đã học về vấn đề này từ một người bạn làm việc trong các mô hình đồ họa xác suất. Vấn đề trên gần tương ứng với việc tìm hiểu cấu trúc của cây ngã ba bằng cách sử dụng một phép lạ, với ba biến ngẫu nhiên X, Y và Z, có thể cho biết giá trị của thông tin lẫn nhau giữa X và Y với giá trị của Z. Nếu giá trị gần về không, chúng ta có thể giả sử rằng Z nằm trên đường dẫn từ X đến Y.