Một thuật toán chính xác là như thế này,
Bắt đầu từ lá và tạo biểu đồ rời nhau (trong thực tế tất cả đều K1), trong mỗi bước tìm ra mẹ của lá này, và ghép lại thành cây mới, trong mỗi bước nếu nút x
có r
trẻ đã biết và mức độ nút là j
sao cho j = r+1
, chỉ cần một nút không nằm trong nút con của x
là nút cha của nút hiện tại trong trường hợp này, chúng tôi nói nút x
là nice
. rằng cây con có nguồn gốc liên quan của chúng không được xây dựng, trong trường hợp này chúng ta nói rằng nút x
là bad
. Vì vậy, trong mỗi bước kết nối các nút nice
với cha mẹ có liên quan của chúng, và rõ ràng mỗi bước mất sum of {degree of parent nice nodes}
cũng trong mỗi bước bạn có ít nhất một nút đẹp (vì bạn bắt đầu từ lá), Vì vậy, thuật toán là O (n) , và nó sẽ được thực hiện hoàn toàn, nhưng để tìm nút cần được loại bỏ, Thực tế trong mỗi bước được yêu cầu để kiểm tra kích thước của một danh sách dijoint (danh sách subtree), điều này có thể được thực hiện trong O (1) trong xây dựng, Ngoài ra nếu kích thước của danh sách bằng hoặc lớn hơn n/2, sau đó chọn nút đẹp có liên quan. (trên thực tế tìm thấy nút đẹp trong danh sách tối thiểu thỏa mãn điều kiện này). Điều rõ ràng là nếu có thể chia cây theo cách tốt (mỗi phần có tối đa nút n/2), bạn có thể thực hiện nó bằng thuật toán này, nhưng nếu không phải như vậy (trên thực tế bạn không thể chia nó thành hai phần.). hoặc nhiều hơn một phần của kích thước nhỏ hơn n/2) điều này cung cấp cho bạn xấp xỉ tốt cho nó. Cũng như bạn có thể thấy không có giả định trong cây đầu vào.
lưu ý: Tôi không biết là có thể có một cây như vậy mà nó không thể phân vùng nó vào một số phần của kích thước nhỏ hơn n/2 bằng cách loại bỏ một nút.
Nguồn
2011-11-19 12:41:13
Tôi không hiểu, nếu bạn xóa 'H' bạn nhận được 9 subtrees! – Shahbaz
Xin lỗi vì không rõ ràng ở đây, tôi có thể nhận được nhiều subtrees nhưng tôi không muốn một lớn hơn một nửa của đồ thị để đảm bảo tôi chỉ làm một số logarit của các bước phân chia. – Listing
Một điều nữa, làm thế nào để bạn đặt "cây nên được chia nhỏ nhất có thể" thành một giá trị tính toán? – Shahbaz