Không phải tất cả các cây Đỏ-Đen đều cân đối?


30

Theo trực giác, "cây cân bằng" phải là cây trong đó các cây con trái và phải ở mỗi nút phải có số lượng nút "xấp xỉ như nhau".

Tất nhiên, khi chúng ta nói về cây đỏ-đen * (xem định nghĩa ở cuối) được cân bằng, chúng tôi thực sự có nghĩa là chúng cân bằng chiều cao và theo nghĩa đó, chúng được cân bằng.

Giả sử chúng ta cố gắng chính thức hóa trực giác trên như sau:

Định nghĩa: Cây nhị phân được gọi là -balbal, với , nếu với mỗi nút N , bất đẳng thức0 μ 1μ N0μ12N

μ|NL|+1|N|+11μ

giữ và với mỗi μ>μ , có một số nút mà câu lệnh trên không thành công. |NL|là số nút trong cây con bên trái của N|N|là số nút dưới gốc cây với N là gốc (bao gồm cả gốc).

Tôi tin rằng, chúng được gọi là cây cân bằng trọng lượng trong một số tài liệu về chủ đề này.

Người ta có thể chỉ ra rằng nếu một cây nhị phân có n nút là μ -balbal (đối với hằng số μ>0 ), thì chiều cao của cây là O(logn) , do đó duy trì tìm kiếm tốt tính chất.

Vì vậy, câu hỏi là:

Có một số như vậy mà mỗi đủ lớn màu đỏ-đen cây là -balanced?μμ>0μ


Định nghĩa về cây Đỏ-Đen mà chúng tôi sử dụng (từ Giới thiệu về Thuật toán của Cormen et al):

Cây tìm kiếm nhị phân, trong đó mỗi nút được tô màu đỏ hoặc đen và

  • Rễ có màu đen
  • Tất cả các nút NULL đều màu đen
  • Nếu một nút có màu đỏ, thì cả hai con của nó đều màu đen.
  • Đối với mỗi nút, tất cả các đường dẫn từ nút đó đến các nút NULL con cháu có cùng số nút đen.

Lưu ý: chúng tôi không tính các nút NULL trong định nghĩa của -balbal ở trên. (Mặc dù tôi tin rằng nó không quan trọng nếu chúng ta làm).μ


@Aryabhata: điều gì với sự độc đáo ( ) trong bản chỉnh sửa của bạn? Tôi ổn với thực tế là cân bằng ngụ ý cân bằng. Tôi không nghĩ bạn nên tìm chính xác để chứng minh chiều cao là . Tui bỏ lỡ điều gì vậy? 1μ>μ 113 μO(logn)14 μO(logn)
jmad

Hơn nữa, bạn yêu cầu một câu lệnh phủ định để cung cấp một chuỗi ví dụ mẫu với một cây cho mỗi . Bất kỳ chuỗi vô hạn nào không giảm kích thước nút sẽ là đủ, phải không? nN
Raphael

@jmad: Nếu không có chỉnh sửa , mọi cây đều cân bằng và vì vậy chúng tôi không có câu trả lời tầm thường nào cho câu hỏi. Tôi muốn tránh điều đó. 0μ0
Aryabhata

@Raphael: Tôi không hiểu. Kích thước nút của cây là . Bạn đang nói không quan trọng chúng ta chọn cây nào cho và ? Không có vẻ rõ ràng đối với tôi, và đó là những gì câu hỏi về! nthnRBnμn0
Aryabhata

1
Một phiên bản trước đó của câu hỏi này đã tuyên bố rằng thời gian chạy của thuật toán đệ quy trên cây đỏ đen có khối lượng công việc tuyến tính ở mỗi bước không nhất thiết phải là . Yêu cầu này không chính xác; cân bằng chiều cao ngụ ý rằng độ sâu của cây đen đỏ -node là . Do đó, nếu bạn thực hiện công việc ở mỗi cấp độ của cây, thì tổng công việc là . O(nlogn)nO(logn)O(n)O(nlogn)
JeffE

Câu trả lời:


31

Yêu cầu : cây đỏ-đen có thể tùy tiện un- -balanced.μ

Ý tưởng bằng chứng : Điền vào cây con bên phải với càng nhiều nút càng tốt và bên trái có càng ít nút càng tốt cho một số nút đen nhất định trên mỗi đường dẫn gốc lá.k

Chứng minh : Xác định chuỗi của cây đỏ đen để có nút đen trên mọi đường dẫn từ gốc đến bất kỳ lá (ảo) nào. Xác định vớiTkTkkTk=B(Lk,Rk)

  • Rk cây hoàn chỉnh có chiều cao với cấp độ thứ nhất, thứ ba, ... màu đỏ, các cây khác màu đen và2k1
  • Lk cây hoàn chỉnh có chiều caok1 với tất cả các nút được tô màu đen.

Rõ ràng, tất cả Tk đều là cây đỏ đen.

Ví dụ: đây là T1 , T2T3 , tương ứng:


T_1
[ nguồn ]


T_2
[ nguồn ]


T_3
[ nguồn ]


Bây giờ hãy để chúng tôi xác minh ấn tượng thị giác của bên phải là rất lớn so với bên trái. Tôi sẽ không đếm lá ảo; họ không ảnh hưởng đến kết quả.

Cây con bên trái của Tk đã hoàn thành và luôn có chiều cao k1 và do đó chứa 2k1 nút. Mặt khác, cây con bên phải, hoàn thành và có chiều cao 2k1 và do đó chứa 22k1 nút. Bây giờ μ giá trị -balance cho thư mục gốc là

2k2k+22k=11+2kk0

trong đó chứng minh rằng không có μ>0 theo yêu cầu.


14

Không. Hãy xem xét một cây đỏ-đen với cấu trúc đặc biệt sau đây.

  • Cây con bên trái là một cây nhị phân hoàn chỉnh với độ sâu , trong đó mọi nút đều màu đen.d
  • Cây con bên phải là một cây nhị phân hoàn chỉnh có độ sâu , trong đó mọi nút ở độ sâu lẻ đều có màu đỏ và mọi nút ở độ sâu chẵn đều màu đen.2d

Thật đơn giản để kiểm tra xem đây có phải là cây đỏ đen hợp lệ không. Tuy nhiên, số lượng các nút trong cây con phải ( ) là xấp xỉ vuông của số nút trong cây con trái ( 2 d + 1 - 1 ).22d+112d+11


22d+1+2d+11n

1
n

@JeffE: Về cơ bản, chuỗi mẫu phản hồi sẽ là một tập hợp con 'dày đặc', thay vì một tập hợp con 'thưa thớt'. Có lẽ tôi sẽ thay đổi công thức của câu hỏi.
Aryabhata
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.