Phõn tớch cỏc thuật toỏn trờn cõy 2-3-4

Một phần của tài liệu Cấu trúc dữ liệu 2 (Trang 52)

Ch−ơng 3 Cõy đỏ đen

3.3. Cây 2-3-4

3.3.5. Phõn tớch cỏc thuật toỏn trờn cõy 2-3-4

Cũng nh− cõy nhị phõn tỡm kiếm, khi chốn một khúa x vào cõy hay tỡm kiếm một khóa x trong cõy, ta xuất phỏt từ gốc và luụn đi theo đ−ờng cha - con (tức là khụng cú tr−ờng hợp nào ta duyệt nhiều hơn một cõy con của một nỳt nào đú). Nếu là thao tỏc chốn thỡ ta luụn luôn dừng ở một nút lá. Trong tr−ờng hợp này nếu độ cao của cõy là h thỡ ta phải duyệt qua h+1 nút (vì nút gốc đ−ỵc quy −ớc là cú độ cao 0). Bài toỏn đặt ra là: giả sử cõy cú n khúa, khi đú ta phải duyệt qua bao nhiêu nút trong tr−ờng hỵp xấu nhất? Bài toỏn này cũng tơng đơng với bài toỏn sau: cho n khóa, hãy xác định chiều cao lớn nhất của của cõy 2-3-4 tạo từ n khúa nà Ta thấy rằng cõy cao nhất là cõy cú số khúa tối thiểu trong mỗi nỳt. Xột tr−ờng hợp n nhận một giỏ trị thớch hỵp, ta thấy rằng số khúa tối thiểu trờn mỗi nỳt là một, do đó số con cđa một nút là 2. Nh− vậy ta thấy rằng mức 0 có 1 nút, mức 1 có 2 = 21, ... mức i có 2i nút. Và nh− vậy cây có chiỊu cao h sẽ có 1+2 + 22 +... +2h = 2h+1 - 1 nút. Tuy nhiờn vỡ mỗi nỳt chỉ chứa một khúa nờn tỉng số nút cịng là tổng số khóạ Nh− vậy ta có hệ thức 2h+1 - 1. Kết quả này thực ra cú thể suy ra dễ dàng, vỡ cõy 2-3-4 mà mỗi nỳt chỉ cú một khúa chớnh là cõy nhị đầy đủ hay là cõy nhị phõn cõn bằng hoàn toàn. Nh− vậy số nút cần dut nhiỊu nhất trong quỏ trỡnh chốn khúa là h+1 = log2(n+1). Ta hãy xét tr−ờng hỵp tốt nhất mà cõy 2-3-4 cú thể đạt tới: cõy cú chiều cao thấp nhất trong cỏc cây 2-3-4 có n nút. Ta thấy rằng cây thấp nhất khi tất cả cỏc nỳt chứa tối đa số khú Lỳc này tỉng số nút trong cõy là: mức 0 cú 1, mức 1 cú 4, ..., mức i có 4i nút. Nh− vậy cây chiỊu cao h có 1+ 4 + 42 + ... + 4h = 1 4 1 4 1 −− + h = 3 1 4h+1 − nút

Vỡ mỗi nút chứa 3 khóa nên tỉng số khoỏ là n =

3 1 4h+1 −

* 3 = 4h+1 -1. Từ đõy ta cú h+1 = log4(n+1). Tuy nhiên có thĨ thấy rằng trờn mỗi nỳt ta phải so sỏnh với 3 khóa, nên nếu gọi k là số phộp so sỏnh trung bỡnh cần thực hiện trờn mỗi nỳt, và gọi tổng số phộp so sỏnh là p, ta có k*log4(n+1) ≤ p ≤ log2(n+1). Nói chung ta ln ln có: log4(n+1) ≤ p ≤ log2(n+1). Từ đõy ta có thĨ kết ln là phộp chốn và phộp tỡm kiếm trờn cõy 2-3-4 chứa n khúa khụng bao giờ

dut nhiỊu hơn log2(n+1) nút. Vậy các phép toỏn này cú độ phức tạp tớnh toỏn là log2n.

Có thể thấy rằng việc cài đặt cõy 2-3-4 với cỏc thao tỏc tỡm kiếm hay chốn, xúa khụng khú khăn lắm. Tuy nhiờn nhợc điểm của cõy này là tốn bộ nhớ. Cho dự cỏc nỳt trờn cõy cú thể chỉ l−u trữ một khúa thỡ ta luụn phải dành sẵn vị trớ cho 3 khúa và 4 con trỏ. Chớnh vỡ lẽ này ngời ta đà xõy dựng một cõy tơng đơng về tốc độ tỡm kiếm và chốn, nhng lại tốn ít bộ nhớ hơn, đú là cõy đỏ đờn mà chỳng ta sẽ khảo sỏt trong mục sa

Một phần của tài liệu Cấu trúc dữ liệu 2 (Trang 52)

Tải bản đầy đủ (PDF)

(116 trang)