1. Trang chủ
  2. » Công Nghệ Thông Tin

CHƯƠNG 11: CÁC CÂY TÌM KIẾM CÂN BẰNG

45 13 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 45
Dung lượng 437,5 KB

Nội dung

Trong mục 8.4 chúng ta đã nghiên cứu CTDL cây tìm kiếm nhị phân và sử dụng CTDL này để cài đặt KDLTT tập động. Chúng ta đã chỉ ra rằng, các phép toán tập động trên cây tìm kiếm nhị phân, trong trường hợp xấu nhất, sẽ đòi hỏi thời gian O(n), trong đó n là số đỉnh của cây. Đó là trường hợp cây suy biến thành danh sách liên kết, tức là tất cả các nhánh trái (phải) của mọi đỉnh đều rỗng....

PHẦN II CÁC CẤU TRÚC DỮ LIỆU CAO CẤP 40 CHƯƠNG 11 CÁC CÂY TÌM KIẾM CÂN BẰNG Trong mục 8.4 nghiên cứu CTDL tìm kiếm nhị phân sử dụng CTDL để cài đặt KDLTT tập động Chúng ta rằng, phép tốn tập động tìm kiếm nhị phân, trường hợp xấu nhất, đòi hỏi thời gian O(n), n số đỉnh Đó trường hợp suy biến thành danh sách liên kết, tức tất nhánh trái (phải) đỉnh rỗng Trường hợp xảy xen vào dãy liệu xếp theo thứ tự tăng (giảm), hoàn cảnh thường gặp thực tiễn Trong chương nghiên cứu số loại tìm kiếm cân bằng, khắc phục chênh lệch nhiều số đỉnh nhánh trái nhánh phải đỉnh, thời gian thực phép toán tập động, trường hợp xấu nhất, O(logn) Các tìm kiếm cân mà đưa AVL cấy đỏ đen Chúng ta đưa vào chương phương pháp phân tích mới, từ trước đến chưa sử dụng tới, phân tích trả góp Phương pháp cho phép ta đánh giá cận chặt thời gian thực dãy phép toán CTDL tự điều chỉnh Cuối chương nghiên cứu CTDL tán loe: dạng CTDL tự điều chỉnh, sử dụng phương pháp phân tích trả góp để đánh giá thời gian thực dãy phép toán tập động tán loe Trước hết đưa vào phép toán quay nhị phân Các phép quay sử dụng đến mục 11.1 CÁC PHÉP QUAY Các AVL, đỏ - đen, tán loe mà xét chương tìm kiếm nhị phân, tức chúng phải thoả mãn tính chất tìm kiếm nhị phân (hay tính chất sắp): liệu chứa đỉnh có khố lớn khoá liệu chứa trái nhỏ khoá liệu chứa phải Chúng khác điều kiện áp đặt nhằm giảm độ cao không làm cân nhánh trái nhánh phải đỉnh Mỗi thực phép tốn (xen loại) làm cho khơng cịn thoả mãn điều kiện áp đặt, cấu tạo lại cách sử dụng phép quay 41 Có hai phép quay quay trái quay phải hình 11.1 Giả sử p đỉnh nhị phân, đỉnh trái v Phép quay phải đỉnh p đặt v vào vị trí đỉnh p, p trở thành phải v phải đỉnh v trở thành trái đỉnh p Trong hình 11.1, phép quay phải đỉnh p biến vế trái thành vế phải Đối xứng qua gương phép quay phải phép quay trái, hình 11.1 P P quay phải p p v quay trái v v T T p T T T T 2 Hình 11.1 Các phép quay Bây chứng minh khẳng định quan trọng: phép quay (trái phải) khơng phá vỡ tính chất tìm kiếm nhị phân Chúng ta chứng minh cho phép quay phải đỉnh p Phép quay tác động đến đỉnh p v, ta cần rằng, sau quay đỉnh p v thoả mãn tính chất tìm kiếm nhị phân Ta có nhận xét rằng, phép quay khơng ảnh hưởng đến trái v phải đỉnh p.Trước quay, phải v T2 thuộc trái đỉnh p,do đó, khố đỉnh T lớn khoá đỉnh v nhỏ khoá đỉnh p; mặt khác, khoá đỉnh T3 lớn khố đỉnh p, lớn khố đỉnh v, khóa đỉnh p lớn khoá đỉnh v Từ kết luận đó, ta thấy rằng, đỉnh p v sau phép quay phải cịn thoả mãn tính chất tìm kiếm nhị phân 11.2 CÂY AVL Trong mục nghiên cứu CTDL AVL, nhà toán học Nga Adelson- Velskii Landis đề xuất Nhớ lại rằng, xác định 42 độ cao nhị phân số đỉnh đường dài từ gốc tới lá, độ cao rỗng Cây AVL định nghĩa sau: Định nghĩa 11.1 Cây AVL tìm kiếm nhị phân, độ cao trái độ cao phải đỉnh khác không Như vậy, đỉnh AVL ba trạng thái: trái phải có độ cao (ta ký hiệu trạng thái EH), trái cao phải (trạng thái LH) phải cao trái (trạng thái RH) Sau nói đỉnh ba trạng thái đỉnh cân Cịn đỉnh có độ cao trái lớn độ cao phải xem đỉnh lệch bên trái Tương tự, ta có khái niệm đỉnh lệch bên phải Hình 11.1 cho ta ví dụ AVL 3 1 Hình 11.1 Một AVL Bây chứng minh tính chất quan trọng độ cao AVL Định lý 11.1 Độ cao AVL có n đỉnh O(logn) Thay cho đánh giá độ cao lớn AVL chứa n đỉnh, ta đánh giá số đỉnh AVL với độ cao h Ta ký hiệu N(h) số đỉnh AVL có độ cao h Các AVL có số đỉnh với độ cao h = 1, 2, hình 11.2a Như N(0) = 0, N(1) = 1, N(2) = 2, N(3) = Cây AVL có số đỉnh với độ cao h hình 11.2b, có trái AVL có số đỉnh với độ cao h-1, phải AVL có số đỉnh với độ cao h-2 Do N(h) = N(h-1) + N(h-2) + (1) 43 h=1 h=2 h-1 h=3 h-2 Hình 11.2 Các AVL có số đỉnh Từ đẳng thức (1) tính chất dãy só Fibonacci, quy nạp ta chứng minh N(h) = F(h + 1) – (2) F(m) số thứ m dãy số Fibonacci Nhưng F(m) = (φ m − φˆ m ) , 1 φ = (1 + ) φˆ = (1 − ) , 2 (φ h +1 − φˆ h +1 ) − N(h) = Chú ý φˆ = (1 − ) < Do hạng thức φˆ h+1 gần với h lớn Do đó, ta có đánh giá N(h) ≈ φ h +1 Từ ta có 44 h = O(log N(h)) Vì N(h) số đỉnh AVL có độ cao h, độ cao h AVL có n đỉnh h = O(logn) Chúng ta sử dụng tính chất độ cao AVL để đánh giá thời gian thực phép toán tập động AVL 12.2.1 Các phép tốn tập động AVL Bởi AVL tìm kiếm nhị phân, nên phép tốn hỏi: tìm kiếm liệu có khố k cho trước, tìm liệu có khố nhỏ (lớn nhất) thực theo thuật tốn tìm kiếm nhị phân Chúng ta rằng, độ cao AVL chứa n đỉnh O(logn), thời gian thực phép tốn hỏi AVL O(logn) Nhưng thực phép tốn xen (hoặc phép loại) AVL tiến hành tìm kiếm nhị phân, sau xen (loại) tính cân số đỉnh bị phá vỡ, tức độ cao trái (phải) lớn độ cao phải (trái) Trong trường hợp đó, cần phải cấu trúc lại cách sử dụng phép quay để thiết lập lại cân đỉnh Phép toán xen Việc xen vào AVL đỉnh trước hết thực theo thuật toán xen vào tìm kiếm nhị phân Khi đỉnh nằm đường từ đỉnh xen vào lên gốc khơng cịn cân Vì cần phải từ đỉnh lên gốc, gặp đỉnh cân sử dụng phép quay để làm cho trở thành cân Một đỉnh cân lệch bên trái lệch bên phải Chúng ta xét trường hợp đỉnh lệch bên trái Gải sử a đỉnh đường từ đỉnh lên gốc bị lệch bên trái Giả sử P trỏ liên kết trỏ tới đỉnh a Giả sử đỉnh trái a đỉnh b, trái b T 1, phải b T2, phải đỉnh a T3 Trường hợp đỉnh a bị lệch trái xảy mà trước xen vào đỉnh mới, độ cao trái đỉnh a lớn độ cao phải đỉnh xen vào trái a, làm tăng độ cao trái a lên Do T có độ cao h, hai T1, T2 phải có độ cao h + 1, cịn có độ cao h Chúng ta xét trường hợp • Mẫu quay phải Trường hợp T1 có độ cao h + T2 có độ cao h (h ≥ 0), hình 11.3a, cần thực phép quay phải đỉnh a Kết ta nhận hình 11.3b Dễ dàng thấy sau phép quay phải, hai đỉnh a b trạng thái cân EH độ cao P giảm so với trước quay 45 P a h b T h+1 T T h (a) P b a T T T (b) Hình 11.3 Mẫu quay phải • Mẫu quay kép trái - phải Trường hợp T1 có độ cao h, T2 có độ cao h + 1, thực phép quay phải 46 đỉnh a đỉnh P lại trở thành lệch phải (hãy thử xem) Trong trường hợp phải tiến hành phép quay kép Giả sử T có gốc đỉnh c, trái c T l, phải Tr Để cho T2 có độ cao h + 1, hai T l Tr phải có độ cao h, cịn có độ cao h h – Chúng ta có hình 11.4a Đầu tiên ta quay trái đỉnh b để nhận hình 11.4b Sau ta quay phải đỉnh a, kết hình 11.4c Dễ dàng thấy sau hai phép quay liên tiếp trái, phải ba đỉnh a, b, c trở thành cân bằng, đỉnh c trạng thái EH, đỉnh b trạng thái EH EH, đỉnh a trạng thái EH RH Chúng ta thấy rằng, sau phép quay kép trái - phải độ cao P giảm so với trước thực phép quay P a h b T h c T h-1 T T l r h (a) 47 P a c T b T r T T l (b) P c b a T T T T l r (c) Hình 11.4 Mẫu quay kép trái - phải 48 Chúng ta có nhận xét quan trọng: hai mẫu quay, quay phải quay kép trái - phải, làm giảm độ cao P 1, tức trở lại độ cao P trước ta thực phép xen vào Trường hợp đỉnh a bị lệch bên phải, ta có hai trường hợp riêng Đó là đối xứng qua gương hình 11.3a 11.4a Nếu đỉnh a lệch phải có dạng đối xứng qua gương cúa hình 11.3a, ta cần thực phép quay trái đỉnh a Nếu đỉnh a lệch phải có dạng đối xứng qua gương hình 11.4a, ta thực phép quay phải – trái (đầu tiên quay phải đỉnh b, sau quay trái đỉnh a) Từ nhận xét trên, ta suy rằng, xen vào đỉnh mới, ta từ đỉnh lên gốc cây, gặp đỉnh cân ta cần thực phép quay đơn (phải trái) phép quay kép (trái - phải phải – trái) trở thành cân Ví dụ Khi xen vào AVL đỉnh 8, ta có vế trái hình 11.5a Đi từ đỉnh lên, ta thấy đỉnh cân đỉnh 15 Quay phải đỉnh 15 ta nhận AVL vế phải hình 11.5a Bây thay cho đỉnh ta xen vào đỉnh 12, ta có vế trái hình 11.5b Trường hợp này, đỉnh lệch bên trái đỉnh 15 Nhưng hoàn cảnh này, phải sử dụng phép quay kép trái - phải Đầu tiên quay trái đỉnh 10, sau quay phải đỉnh 15 ta nhận AVL vế phải hình 11.5b 49 Mẫu điều chỉnh Đỉnh s có màu đỏ, phải có hai đen cha p đen, hình 11.13a Trong trường hợp này, ta quay trái đỉnh p để có hình 11.13b, sau sơn lại s thành đen, p thành đỏ, ta có hình 11.13c Chúng ta có nhận xét rằng, hình 11.13c, đỉnh p nhẹ bên trái, song đỉnh phải c có màu đen Tức ta quy mẫu điều chỉnh 1, 2, s p quay trái p p v c2 s c1 c2c1 v c1 (a) (b) s sơn lại p v c2 c1 (c) Hình 11.13 Mẫu điều chỉnh Trong trường hợp đỉnh p nhẹ bên phải ta có mẫu điều chỉnh đối xứng qua gương mẫu điều chỉnh 70 Tóm lại, thuật tốn loại đỏ - đen sau Trước hết áp dụng thuật toán loại tìm kiếm nhị phân Sau đó, từ đỉnh bị cắt bỏ lên gốc cây, gặp đỉnh cân áp dụng mẫu điều chỉnh để làm cho đỉnh trở thành cân Trong trường hợp xấu nhất, cân truyền lên tận gốc Chú ý rằng, thời gian thực mẫu điều chỉnh O(1), thời gian thực phép loại tỉ lệ với độ cao đỏ đen Do đó, theo định lý 11.2, thời gian thực phép loại đỏ - đen O(logn) 11.4 CẤU TRÚC DỮ LIỆU TỰ ĐIỀU CHỈNH Các CTDL mà đưa từ trước tới nay, điển hình tìm kiếm nhị phân, AVL, đỏ - đen, có điểm chung sau Các phép tốn hỏi khơng làm thay đổi CTDL, thực phép toán, phép xen phép loại, bắt buộc phải điều chỉnh CTDL cho thỏa mãn điều kiện áp đặt CTDL Chẳng hạn, thực phép xen (loại) đỏ - đen làm cho luật đỏ luật đường bị vi phạm, phải biến đổi để trở lại đỏ đen Điều có nghĩa tổ chức liệu sau thực phép toán tập liệu cấu trúc, không quan tâm tới liệu truy cập thường xuyên liệu khác Nhưng thực tế người ta kiểm nghiệm rằng, 90 phần trăm lần truy cập liệu truy cập tới 10 phần trăm liệu Mặt khác, mong muốn rằng, truy cập tới liệu lần truy cập sau tới liệu nhanh Một thực tế là, chương trình áp dụng, sử dụng CTDL để biểu diễn tập liệu mà thực vài phép tốn CTDL đó, thông thường cần phải thực dãy lớn phép toán Bởi người ta đưa ý tưởng: thực phép toán CTDL lựa chọn, người ta tiến hành điều chỉnh CTDL phép tốn khơng địi hỏi phải điều chỉnh (chẳng hạn, phép toán hỏi), nhằm làm cho phép tốn thực sau nhanh giảm thời gian thực dãy dài phép toán Các CTDL gọi CTDL tự điều chỉnh (self – adjusting data structure) Trong thực tế, người ta thường sử dụng chiến lược heuristic để điều chỉnh CTDL Để làm ví dụ, nói đến danh sách tự điều chỉnh Giả sử có tập liệu lưu dạng danh sách Nếu biết xác suất truy cập tới phần tử danh sách, lần truy cập liệu độc lập với nhau, với quan điểm thống kê, cách tốt lưu danh sách theo thứ tự giảm dần xác suất 71 truy cập không xếp lại chúng Tuy nhiên thực tế, biết xác suất Do đó, sử dụng chiến lược heuristic sau để tổ chức lại danh sách ta thực phép toán danh sách • Chiến lược chuyển lên phía trước Mỗi tìm kiếm thành cơng phần tử chuyển phần tử lên đầu danh sách giữ nguyên thứ tự phần tử lại Khi xen phần tử vào danh sách ta đặt đầu danh sách • Chiến lược hốn vị Mỗi tìm kiếm thành cơng phần tử danh sách ta hốn vị với phần tử đứng trước Khi xen phần tử vào danh sách, đặt đầu danh sách Với chiến lược này, thời gian tìm kiếm phần tử trường hợp xấu O(n) tức ta tổ chức danh sách theo trật tự không tiến hành điều chỉnh Tuy nhiên thực tế chứng tỏ rằng, thời gian thực dãy tìm kiếm cải thiện Trong mục 11.6 trình bày CTDL tự điều chỉnh đặc biệt, gọi tán loe, áp dụng phương pháp phân tích hồn toàn để đánh giá thời gian thực dãy phép tốn tán loe 11.5 PHÂN TÍCH TRẢ GÓP Khi KDLTT cài đặt sử dụng chương trình áp dụng thơng thường dãy phép toán kiểu liệu thực hiện, thực vài phép toán Nhưng từ trước đến nay, ta quan tâm đánh giá thời gian chạy phép toán riêng biệt, cụ thể đánh giá thời gian chạy trường hợp xấu thời gian chạy trung bình phép tốn Chúng ta đánh giá thời gian chạy trường hợp xấu dãy phép toán phương pháp đơn giản sau Đánh giá thời gian chạy trường hợp xấu phép tốn dãy, sau lấy tổng để nhận cận thời gian chạy trường hợp xấu dãy phép toán Tuy nhiên cách đánh giá q thơ, phép tốn thực hiện, làm thay đổi vị trí liệu cấu trúc làm cho trường hợp xấu phép tốn thực sau khơng xảy Như thời gian chạy thực tế trường hợp xấu dãy phép tốn thấp nhiều so với tổng thời gian chạy trường hợp xấu phép toán dãy Trong mục đưa phương pháp đánh giá thời gian chạy dãy phép tốn, gọi phương pháp phân tích trả 72 góp (amortized analysis) Phương pháp phân tích trả góp cho phép ta đánh giá cận chặt thời gian chạy dãy phép toán Phương pháp thường sử dụng để đánh giá thời gian chạy dãy phép toán cấu trúc liệu tự điều chỉnh Tư tưởng phân tích trả góp xem xét phép tốn dãy mối liên quan, phép toán thực ảnh hưởng đến thời gian chạy phép toán đứng sau dãy Với phép toán thứ i dãy, ta ký hiệu c i thời gian chạy thực tế cˆi thời gian chạy trả góp (amortized running time) Chúng ta mong muốn rằng, thời gian chạy thực tế dãy n phép toán bị chặn thời gian chạy trả góp dãy phép tốn đó, tức n ∑ i =1 n ci ≤ ∑ cˆi i =1 Một cách tiếp cận hay sử dụng để xác định thời gian chạy trả góp phương pháp tiềm (potential method) Tư tưởng phương pháp là, quan niệm cấu trúc liệu hệ vật lý, trạng thái hệ có lượng tiềm ẩn Khi phép tốn thực hiện, làm tăng giảm tiềm hệ Hơn nữa, phép tốn thực đưa vào hệ lượng nhiều lượng mà tiêu tốn Năng lượng dư sử dụng cho phép toán đứng sau Giả sử D cấu trúc liệu, trạng thái ban đầu ký hiệu Do Trạng thái thứ i (trạng thái CTDL sau ta thực phép toán thứ i dãy phép toán) ký hiệu D i Một hàm tiềm (potential function) φ hàm xác định CTDL D nhận giá trị số thực: φ :DR Thời gian chạy trả góp phép toán cấu trúc liệu D (đối với hàm tiềm φ) xác định sau: cˆ = c + ∆φ (D) tức thời gian chạy trả góp thời gian chạy thực tế cộng với số gia lượng mà phép toán tạo Như vậy, thời gian chạy trả góp dãy n phép toán là: n n ∑ cˆ = ∑ (c i i =1 i =1 i + φ ( Di ) − φ ( Di −1 )) n = ∑ c i + φ ( D n ) − φ ( Do ) i =1 Từ công thức ta suy rằng, φ ( Dn ) ≥ φ(D0), tức lượng hệ sau thực dãy phép toán lớn lượng 73 ban đầu hệ, thời gian chạy trả góp dãy phép tốn cận thời gian chạy thực tế dãy phép toán Đặc biệt, có điều φ(D0) = φ(Di) ≥ với i = 1, 2, , n Khó khăn áp dụng phương pháp tiềm để xác định thời gian chạy trả góp phép tốn cấu trúc liệu làm xác định hàm tiềm cấu trúc liệu đó, cần phản ánh hiệu ứng phép toán làm thay đổi trạng thái cấu trúc liệu 11.6 CÂY TÁN LOE Với AVL đỏ - đen, không quan tâm tới tần suất truy cập phần tử liệu, mà thay cho điều ln ln đảm bảo khơng cân đỉnh, thời gian thực phép tốn O(logn) Để cài đặt AVL đỏ - đen, ta cần phải đưa vào đỉnh thông tin cân màu đỉnh Trong mục này, đưa vào cấu trúc liệu đặc biệt sử dụng để cài đặt KDLTT tập động, tán loe (splay tree) Cây tán loe tìm kiếm nhị phân, song phép toán kèm theo thao tác cấu trúc lại cây, gọi làm loe Làm loe nhằm mục đích giảm bớt tổng thời gian truy cập liệu cách dịch chuyển liệu thường xuyên truy cập lên gần gốc cây, truy cập tới liệu nhanh Ưu điểm tán loe không cần lưu thông tin cân đỉnh, đó, tiết kiệm nhớ cài đặt đơn giản Việc chuyển đỉnh v lên gốc đơn giản cách sử dụng phép quay (trái phải), lần quay đỉnh v chuyển lên mức Chẳng hạn, chuyển đỉnh lên gốc thực hai phép quay hình 11.14 6 5 74 Hình 11.14 Chuyển đỉnh lên gốc 75 Tuy nhiên chiến lược quay lên gốc khơng tốt, nhiều hồn cảnh đỉnh v đặt lên gốc nhiều đỉnh v lại bị đưa xuống xa gốc Do đó, ta làm loe chiến lược sau Trong trình làm loe cây, bước ta sử dụng ba mẫu biến đổi sau Giả sử rằng, ta cần làm loe đỉnh v, đỉnh v có cha đỉnh p đỉnh cha p g Mỗi mẫu biến đổi sau có hai trường hợp, ta đưa trường hợp, trường hợp đối xứng qua gương trường hợp đưa Mẫu zig Giả sử p gốc v trái p (Trường hợp khác: v phải p) Quay phải đỉnh p, v gốc cây, hình 11.15a Mẫu zig – zig Đỉnh p gốc cây, p v trái Đầu tiên quay phải đỉnh g, sau quay phải đỉnh p, hình 11.15b Mẫu zig – zag Đỉnh p khơng phải gốc cây, p trái g, v phải p Đầu tiên quay trái đỉnh p sau quay phải đỉnh g, hình 11.15c v p v T T p T T T T 2 (a) 76 g p T v T T T p v T g T T T v p T g T (b) T T 77 g g p v T T p v T T T T T T v p T g T T (c) T Hình 11.15 Các mẫu biến đổi (a) Mẫu zig (b)Mẫu zig – zig (c)Mẫu zig – zag Ví dụ Giả sử ta cần làm loe đỉnh 20 hình 11.16a Đầu tiên ta thực mẫu biến đổi zig – zig, ta nhận hình 11.16b Sau thực mẫu zig – zag, ta có hình 11.16c, cuối thực mẫu zig ta đưa đỉnh 20 lên gốc hình 11.16d T T T 13 T3 T T T T T 2T 78 T T T 5 5 zig - zig (a) (b) 79 2 zig-zag zig T 7 T T 1 T T 1 T T T T T T T T T (c) (d) Hình 11.16 Làm loe đỉnh 20 11.6.1 Các phép toán tập động tán loe Tất phép toán tán loe tiến hành theo cách sau Đầu tiên ta thực phép tốn tìm kiếm nhị phân, sau ta điều chỉnh phép làm loe Các phép tốn hỏi Giả sử cần tìm liệu có khố k Bởi tán loe tìm kiếm nhị phân, nên ta sử dụng thuật tốn tìm kiếm tìm kiếm nhị phân Giả sử tìm kiếm thành cơng đỉnh chứa liệu với khoá k đỉnh v Ta thực làm loe đỉnh v Nếu tìm kiếm khơng thành cơng q trình tìm kiếm dừng lại đỉnh u ta làm loe đỉnh u Trong trường hợp đỉnh u đỉnh có khố lớn (hoặc nhỏ nhất) nhỏ k (lớn k) Bởi phép quay trình làm loe 80 tiến hành đường từ đỉnh v (hoặc đỉnh u) lên gốc, đường ngược lại đường trình tìm kiếm, thời gian tồn phép tìm kiếm tán loe tỉ lệ với thời gian làm loe Các phép tốn hỏi khác: tìm liệu có khố nhỏ (phép tốn Min), tìm liệu có khố lớn (phép tốn Max) … cài đặt hồn tồn tương tự Phép tốn xen Giả sử ta cần xen vào tán loe đỉnh chứa liệu d Áp dụng thuật toán xen tìm kiếm nhị phân để xen đỉnh v chứa liệu d vào cây, đỉnh v trở thành cây, làm loe đỉnh v Như đỉnh v chứa liệu d trở thành gốc Trong trình tìm kiếm ta phát liệu d có sẵn ta làm loe đỉnh chứa liệu d Phép toán loại Giả sử ta cần loại khỏi đỉnh chứa liệu có khố k Đầu tiên cần tìm đỉnh chứa liệu có khố k Giả sử đỉnh v Làm loe v để chuyển v lên gốc cây, ta nhận hỉnh 11.17a Tìm đỉnh ngồi bên phải trái T L đỉnh v Giả sử đỉnh v’ Làm loe T L đỉnh v’ Chú ý rằng, v’ đỉnh bên phải TL, nên v’ khơng có phải, q trình làm loe TL v’ có mẫu zig-zig mẫu zig sử dụng, v’ đưa lên thành gốc trái đỉnh v, đỉnh v’ khơng có phải Như sau làm loe trái T L đỉnh v’, trở thành hình 11.17b Gắn phải T R đỉnh v thành phải đỉnh v’, loại bỏ đỉnh v ta nhận kết quả, hình 11.17c v v v’ v’ T T L R (a) T R T’ L T’ T L R (b) (c) Hình 11.17 Các giai đoạn phép toán loại 81 Như thực phép loại, ta cần thực hai lần làm loe Đầu tiên làm loe đỉnh v cần loại Khi v trở thành gốc làm loe trái v đỉnh bên phải trái Khơng khó khăn thấy rằng, thời gian thực phép xen phép loại tán loe tỷ lệ với thời gian làm loe (chỉ cần hai lân làm loe cây) 11.6.2 Phân tích trả góp Trong mục áp dụng kỹ thuật phân tích trả góp để đánh giá thời gian trường hợp xấu dãy phép toán tán loe Chúng ta rằng, dãy m phép toán thực rỗng làm cho phát triển tới n đỉnh đòi hỏi thời gian O(mlogn), thời gian trung bình phép tốn tán loe O(logn), thời gian thực phép tốn O(n) Chúng ta ký hiệu W(v) trọng số đỉnh v, số đỉnh gốc v Giả sử T tán loe, hàm tiềm xác định φ (T ) = ∑ log W(v) v ∈T Ta đặt R(v) = logW(v), số R(v) gọi hạng đỉnh v Như vậy, tiềm T tổng hạng tất đỉnh T φ (T ) = ∑ R(v) v ∈T (1) Sau đánh giá thời gian trả góp mẫu biến đổi (mẫu zig, zig-zig zig-zag) Giả sử c thời gian chạy thực tế mẫu biến đổi Với mẫu zig, thực phép quay cây, nên c = 1; với mẫu zig – zig, zig – zag c = 2, phải thực phép quay Thời gian chạy trả góp mẫu biến đổi cˆ xác định cˆ = c + ∆φ (T ) (2) Định lý 11.3 Giả sử R(v), R’(v) hạng đỉnh v trước, sau thực mẫu biến đổi Khi thời gian chạy trả góp mẫu biến đổi đánh giá là: Đối với mẫu zig cˆ < + R’(v) – R(v) Đối với mẫu zig – zig cˆ < 3(R’(v) – R(v)) Đối với mẫu zig – zag 82 cˆ < (R’(v) – R(v)) Chúng ta xét mẫu biến đổi Mẫu zig Khi thực mẫu zig, có đỉnh v p thay đổi hạng,do từ (2) ta có : cˆ = + R’(p) – R(p) + R’(v) – R(v) Nhưng từ vế trái phải hình 11.15a, ta có R’(p) – R(p) ≤ R’(v) – R(v) ≥ Vậy cˆ < + R’(v) – R(v) 2.Mẫu zig – zig Nếu thực mẫu zig – zig làm thay đổi hạng đỉnh v, p, g Do cˆ = + R’(g) – R(g) + R’(p) – R(p) + R’(v) – R(v) Từ trước sau thực mẫu zig – zig hình 11.15b, ta thấy rằng: R’(v) = R(g), R(p) > R(v) R’(v) > R’(p) Do cˆ = + R’(g) + R’(p) – R(p) – R(v) cˆ < + R’(g) + R’(v) – 2R(v) (3) Chú ý rằng, trọng số v trước thực mẫu zig – zig W(v) = + T1 + T2 , T số đỉnh T, trọng số g sau thực mẫu zig – zig W’(g) = + T3 + T4 Do W’(g) + W(v) < W’(v) (4) Sử dụng kiện rằng, với số nguyên dương x, y, z x + y < z logx + logy < 2logz – 2, từ bất đẳng thức (4) ta có R’(g) + R(v) < 2R’(v) – Từ bất đẳng thức từ (3) , ta có cˆ < + R’(g) + R’(v) – 2R(v) = + R’(g) + R(v) + R’(v) – 3R(v) < 3(R’(v) – R(v)) 3.Mẫu zig – zag Mẫu biến đổi làm cho đỉnh v, p, g thayđổi hạng Do cˆ = + R’(g) – R(g) + R’(p) – R(p) + R’(v) – R(v) = + R’(g) + R’(p) – R(p) – R(v) (vì R(g) = R’(v)) Nhưng R(p) > R(v), nên cˆ < + R’(g) + R’(p) – 2R(v) (5) Ta có W’(g) + W’(p) < W’(v) Do R’(g) + R’(p) < 2R’(v) – 83 Từ đánh giá (5), ta suy cˆ < (R’(v) – R(v)) Định lý chứng minh Nhớ lại rằng, ta gọi phép làm loe đỉnh v dãy mẫu biến đổi để đưa đỉnh v lên gốc Bây đánh giá thời gian trả góp phép làm loe Giả sử sử dụng k mẫu biến đổi để đưa đỉnh v lên gốc thời gian trả góp mẫu biến đổi thứ i cˆi hạng đỉnh v sau mẫu biến đổi thứ i R i(v), i = 1, 2, …, k Khi từ định lý 11.3, ta có k ∑ cˆ i =1 i < 3( R ' (v ) − R (v)) + 3( R ' ' (v) − R ' (v )) + + 3( R k (v ) − R k −1 (v )) + = 3( R k (v) _ R (v)) + Lưu ý rằng, sau thực mẫu biến đổi thứ k đỉnh v gốc cây, Rk(v) = logn, n số đỉnh Vậy k ∑ cˆ i =1 i < 3(log n − R(v)) + Từ ta suy rằng, thời gian trả góp phép làm loe O(logn) Mỗi phép toán tán loe kèm theo phép làm loe (với phép xen ta cần lần làm loe cây) Thời gian thực phép toán tỷ lệ với thời gian thực phép làm loe tương ứng Giả sử ta thực dãy m phép toán tán loe, xuất phát từ rỗng Khi ta cần thực dãy phép làm loe tương ứng Ban đầu, T o rỗng, nên φ (To) = 0, sau phép làm loe thứ i, ta có T i φ(Ti) ≥ Do thời gian chạy thực tế dãy phép làm loe tương ứng với dãy phép toán bị chặn thời gian trả góp dãy phép làm loe Ở ta chứng minh thời gian trả góp phép làm loe O(logn) Vậy thời gian thực dãy phép làm loe tương ứng với dãy m phép tốn O(mlogn) Điều có nghĩa thời gian thực dãy m phép toán tán loe xuất phát từ rỗng O(mlogn) 84 ...CHƯƠNG 11 CÁC CÂY TÌM KIẾM CÂN BẰNG Trong mục 8.4 nghiên cứu CTDL tìm kiếm nhị phân sử dụng CTDL để cài đặt KDLTT tập động Chúng ta rằng, phép tốn tập động tìm kiếm nhị phân, trường... loe tìm kiếm nhị phân, nên ta sử dụng thuật tốn tìm kiếm tìm kiếm nhị phân Giả sử tìm kiếm thành cơng đỉnh chứa liệu với khố k đỉnh v Ta thực làm loe đỉnh v Nếu tìm kiếm khơng thành cơng trình tìm. .. Trong chương nghiên cứu số loại tìm kiếm cân bằng, khắc phục chênh lệch nhiều số đỉnh nhánh trái nhánh phải đỉnh, thời gian thực phép toán tập động, trường hợp xấu nhất, O(logn) Các tìm kiếm cân

Ngày đăng: 08/05/2021, 19:37

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w