Professional Documents
Culture Documents
Giới thiệu
Kĩ thuậ t Heavy-Light Decomposition (cò n gọ i là heavy path decomposition, từ đâ y xin viết
tắ t là HLD) đượ c đưa ra lầ n đầ u nă m 1983 bở i Sleator và Tarjan trong bà i bá o "A data
structure for dynamic trees", Journal of Computer and System Sciences 26 (3): 362–391
trong phầ n phâ n tích tiệm cậ n về tính hiệu quả củ a cấ u trú c link/cut tree củ a họ . Nă m 1984,
Harel và Tarjan lạ i sử dụ ng mộ t lầ n nữ a kĩ thuậ t nà y trong bà i bá o "Fast algorithms for
finding nearest common ancestors", SIAM Journal on Computing 13 (2): 338–355 về tìm tổ
tiên chung gầ n nhấ t củ a hai nú t trong mộ t câ y. HLD sớ m chứ ng tỏ sứ c mạ nh củ a nó trong
nghiên cứ u độ phứ c tạ p củ a cá c thuậ t toá n, cá c cấ u trú c dữ liệu trên câ y.
Tưở ng chừ ng HLD chỉ có ý nghĩa chủ yếu trên phương diện lý thuyết độ phứ c tạ p và chỉ là
cô ng cụ chứ ng minh toá n họ c thuầ n tú y cho cá c bà i bá o thì đến nhữ ng nă m 2013-2014,
trong cá c bà i toá n củ a nhiều cuộ c thi lậ p trình online, HLD đã bướ c ra thự c tiễn và nhanh
chó ng thể hiện đượ c tính ưu việt củ a mình trong việc mô tả và xử lí cá c mố i quan hệ độ ng
giữ a cá c đố i tượ ng trong nhiều bà i toá n, đặ c biệt trên cấ u trú c câ y vớ i cá c truy vấ n online.
Bài toán: cho câ y như hình vẽ, tính tổ ng trọ ng số cá c nú t trên đườ ng đi (đơn) giữ a hai nú t
bấ t kì, giả thiết trọ ng số cá c nú t có thể thay đổ i theo thờ i gian/truy vấ n.
Có thể nhậ n thấ y:
Câ y có nú t
thuộ c hai chuỗ i khá c nhau, đườ ng đi giữ a chú ng có thể tá ch thà nh
mấ t hai lầ n
Tương tự : thuộ c hai chuỗ i khá c nhau, đườ ng đi giữ a chú ng có thể tá ch thà nh
chính xá c là là mấ t ba lầ n
Phân rã Heavy-Light
Nếu thự c hiện đượ c phâ n rã như trên, vớ i hai nú t bấ t kì , ta xét tá ch đườ ng đi từ đến
là nú t con nhẹ nên câ y con gố c có kích thướ c khô ng vượ t quá mộ t nử a câ y con gố c .
nhẹ thì kích thướ c câ y con giả m mộ t nử a nên số cạ nh nhẹ phả i qua nhiều nhấ t là Vì
cạ nh nhẹ đó ng vai trò kết nố i cá c chuỗ i nên điều đó cũ ng có nghĩa là phâ n rã ta vừ a xâ y
dự ng hoà n toà n thỏ a mã n cá c yêu cầ u đề ra.
Xá c định .
Nhớ lạ i nhữ ng gì ta thườ ng là m khi Segment tree, Binary Indexed tree và cá c cấ u trú c tương
tự chưa xuấ t hiện (chưa biết).
đó . Độ phứ c tạ p .
Truy vấ n hỏ i thô ng tin đoạ n : xá c định khố i chứ a phầ n tử thứ , xá c định khố i
chứ a phầ n tử thứ ; xá c định thô ng tin cá c khố i xen giữ a hai khố i vừ a tìm đượ c; xá c
định thô ng tin nử a khố i phả i chứ a ; xá c định thô ng tin nử a khố i trá i chứ a ; kết hợ p
Có thể nhậ n thấ y HLD cũ ng cù ng mộ t tư tưở ng xuấ t phá t vớ i kĩ thuậ t blocking. Đó là phâ n
rã khô ng gian tìm kiếm thà nh cá c mả nh, khố i và duy trì cá c cấ u trú c lưu giữ thô ng tin, hỗ
trợ truy vấ n thô ng tin trên cá c mả nh, khố i. Điểm đặ c biệt củ a HLD là ta giữ mố i liên hệ giữ a
cá c khố i tố t hơn.
trên dã y :
Xét truy vấ n
phí .
Xét truy vấ n
o Nếu là tậ p nặ ng, kết quả là : tổ ng riêng lượ ng tă ng kích thướ c, chi phí
, duyệt cá c tậ p nặ ng đều là .
Kết luận
Cá c giả i thuậ t, cấ u trú c dữ liệu, kĩ thuậ t lậ p trình mớ i liên tụ c nả y sinh theo thờ i gian. Bắ t
kịp vớ i xu hướ ng đó củ a cộ ng đồ ng lậ p trình thuậ t toá n trên thế giớ i là nhu cầ u că n bả n củ a
mỗ i chú ng ta. Qua HLD và mộ t ứ ng dụ ng kết hợ p HLD vớ i blocking đượ c trình bà y ở trên,
có thể thấ y rằ ng: cá i mớ i nhiều khi chẳ ng qua chỉ là tìm tò i, phá t triển, kết hợ p từ nhiều thứ
đã rấ t cũ kĩ, quen thuộ c. Hy vọ ng rằ ng cộ ng đồ ng chú ng ta có thể đà o sâ u nghiên cứ u và
sá ng tạ o thêm nhiều kết quả mớ i, đẹp hơn, hiệu quả hơn, đó ng gó p và o dò ng chả y tiến lên
củ a thế giớ i lậ p trình thuậ t toá n.