Tái tạo một cây từ các truy vấn phân cách


18

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 .TTxabnn

Có tồn tại thuật toán cho vấn đề trên không?o(n2)

Giả sử rằng mức độ của bất kỳ nút nào trong nhiều nhất là 3.T


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:D

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.

  1. 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.
  2. Tìm tất cả 3 hàng xóm của x.
  3. 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 )DO(nDlogn)

Một thuật toán ngẫu nhiênÔi(nđăng nhập2n) . (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.yxy

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Ôi(nđăng nhậpn)Ôi(nđăng nhập2n)


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.


7
Vui lòng tiết lộ những gì bạn đã biết về vấn đề này, vì vậy chúng tôi không lãng phí thời gian để phát minh lại bánh xe.
Jeffε

@ Jɛ E Tôi đã chỉnh sửa câu hỏi của mình.
Jagadish

Câu trả lời:


5

Không. Chiến lược đối nghịch đơn giản sau đây ngụ ý rằng bất kỳ thuật toán nào để xây dựng lại cây -ode đều yêu cầu ít nhất "giữa các truy vấn".n(n-12)= =n(n-1)/2

Tự ý gắn nhãn các nút . Kẻ thù trả lời tất cả các truy vấn như thể cây là một ngôi sao có đỉnh ở giữa; nghĩ về là gốc và các nút khác là con của nó.0 00,1,2,Giáo dục,n-100

Between?(a,x,b)
    if x=0 return TRUE else return FALSE

Bây giờ giả sử thuật toán tạm dừng sau khi thực hiện ít hơn truy vấn. Sau đó, phải có hai đỉnh và , không bằng 0, sao cho thuật toán không truy vấn bất kỳ hoán vị nào của bộ ba . Nếu thuật toán tuyên bố rằng cây không phải là một ngôi sao có tâm , thì đối thủ tiết lộ đầu vào của nó, chứng minh thuật toán sai. Đối thủ sau đó tiết lộ rằng thực sự là con duy nhất của , chứng minh thuật toán lại sai.n(n-1)/2yz(0,y,z)0xy

Cập nhật: Rất tiếc, chỉ cần chú ý hạn chế độ. May mắn thay, đây không phải là một trở ngại lớn. Thay thế nút bằng cây nhị phân yêu thích của bạn, bằng các nút khác dưới dạng các lá theo thứ tự không xác định, và sau đó tiết lộ cây con này cho thuật toán xây dựng lại. Tái tạo lại cây nhị phân kết quả vẫn yêu cầu ít nhất truy vấn. Tương tự, việc xây dựng lại cây nhị phân -node đòi hỏi ít nhất truy vấn. (Tôi chắc chắn rằng một công trình tinh tế hơn sẽ cải thiện hằng số.)0n-1(2n3)n(n1)/2m(m+3)(m+2)/số 8 Như Jagadish chỉ ra, việc khái quát hóa này không hoạt động; truy vấn về các nút nội bộ trong cây áp đặt một thứ tự trên lá, làm giảm số lượng truy vấn cần thiết.


Câu hỏi của tôi là về cây độ không đổi. Đối số này không hoạt động cho trường hợp đó, phải không?
Jagadish

2
@Jagadish: (1) Tôi không nghĩ rằng bằng chứng về ràng buộc thấp hơn này hoạt động cho các thuật toán ngẫu nhiên. Kẻ thù vẫn có thể xây dựng một ví dụ thất bại, nhưng điều đó không mâu thuẫn với giả thuyết rằng thuật toán ngẫu nhiên hoạt động chính xác với xác suất cao. (2) Nhân tiện, có vẻ như bạn đã hỏi câu hỏi khi biết câu trả lời. Bạn đã làm điều đó để làm gì?
Tsuyoshi Ito

2
Tôi hiểu rồi. Cảm ơn đã giải thích, và cũng cảm ơn vì đã chỉnh sửa câu hỏi!
Tsuyoshi Ito

4
Nếu bạn có một thuật toán ngẫu nhiên, thì bạn có một thuật toán. Chủ nghĩa quyết đoán được đánh giá cao.
Jeffε

1
Ôi(nđăng nhậpn)Ôi(nđăng nhậpn)

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.