You are on page 1of 2

Parallel comparison

 Parallel comparison : So sánh song song được sử dụng để tìm vị trí của một
giá trị với tập hợp các khóa trong một nút trong thời gian không đổi. Một nút
sẽ có nhiều nhất r + 1 keys. Sketch của tất cả các keys đó có thể được nối
với nhau để tạo thành một từ. Từ này được sử dụng để so sánh giá trị truy
vấn q trực tiếp với tất cả các keys cùng một lúc thay vì so sánh với thời gian
từng cái một.
 Bước 1 : Cho X0, X1, ... , Xr là chìa khóa.
 Bước 2 : Sau đó, sketch của một nút là 1sketch(X0)
1sketch(X1)...1sketch(Xr)
 Bước 3 : Chuyển đổi sketch(a) thành sketch(q) ' = 0sketch(q)
0sketch(q)...0sketch(q).
 Bước 4 : Sau khi trừ giá trị ở bước 3 khỏi giá trị ở bước 2, chúng ta sẽ
nhận được một số mà sẽ giống như:
0________0__...___0________1________1________1.Gọi nó là diff.
 Bước 5 : kết quả là 0 khi sketch(Xi) ít hơn sketch(q) và 1 khi ngược lại.
Dấu gạch ngang đại diện cho các bit rác nơi các giá trị sketch từng có.Nó
sẽ luôn là một chuỗi các số 0, tiếp theo là một loạt các số 1 vì hoạt động
sketch duy trì thứ tự các keys. Vị trí mà chuỗi 0 biến thành 1 là vị trí đặt
sketch(q). Vì vậy sketch(Xi) < sketch(q) < sketch(Xi + 1), khi bit của diff
của sketch(Xi) = 0, và của sketch(Xi + 1) is 1.

Insert
 insert(k): Việc chèn gần giống hệt như chèn cây B thông thường.
 Bước 1 : Bắt đầu với nút hiện tại làm nút gốc.
 Bước 2 : Sử dụng so sánh song song để tìm vị trí thích hợp cho k. Nếu nút
hiện tại không phải là nút lá, hãy đặt nút hiện tại làm nút con tại vị trí tìm
thấy. Lặp lại bước 2.
 Bước 3 : Nút hiện tại bây giờ là nút lá. Chèn phím vào đúng vị trí. Nếu số
lượng khóa nhiều hơn phím tối đa, hãy chia nút ở giữa, và thêm phím ở vị trí
giữa vào nút cha, với nó trỏ đến nút hiện tại. Nếu nút cha cũng vượt quá
khóa tối đa, hãy tiếp tục tách cho đến khi đạt đến gốc. Nếu nút gốc cũng
vượt quá man-keys, hãy tách root và tạo mid key làm root mới.
 Bước 4 : Nếu các khóa trong nút hiện tại đã được sửa đổi, hãy tính toán lại
node sketch và m.
Predecessor and Successor
 Predecessor and Successor : Điều này cũng được gọi là de-sketching. Thuật
toán dưới đây tìm thấy nút tiền nhiệm hoặc nút kế nhiệm của q trong một nút
của cây hợp nhất. Nó sẽ được áp dụng đệ quy để tìm các nút con cho đến khi
đạt được nút lá.
 Bước 1 : Tính toán sketch (q), sẽ đưa ra sketch gần đúng của q.
 Bước 2 : Sử dụng so sánh song song để có được Xi và Xi + 1 sao cho sketch
(Xi) <= sketch (q) <= sketch (Xi + 1).
 Bước 3 : Tìm y = tiền tố chung của (Xi hoặc Xi + 1) và k.
 Bước 4 : Đối với người kế nhiệm: Nối y với hậu tố 1000...000 để điền vào
các bit non_common và lưu trữ nó trong một biến e. Khi đó e = y100...
00.
Ví dụ : Cho Xi = 0 1 1 0 0 1 0 1 1
và k = 0 1 1 0 0 0 0 0 0
khi đó y = 0 1 1 0 0
và e = 0 1 1 0 0 1 0 0 0
Đối với người tiền nhiệm: Nối y với hậu tố 0111...11 để điền vào các bit
non_common và lưu trữ nó trong một biến e.Khi đó e = y011... 11.
 Bước 5 : Sử dụng so sánh song song để có được Xj và Xj+1 1 sao cho
sketch(Xj) < sketch(Xe) < sketch(Xj+1)
 Bước 6: Tiền thân của q = Xj.
Nút kế vị của q = Xj+1.

Complexity
 Time complexity:
1. Find, Successor, Predecessor: O(logwN)
2. Insert: O(log2w)
3. Delete: O(log2w)
 Space complexity: O(N)
Trong đó N là đếm các giá trị được lưu trữ và W là kích thước của từ, e.i. là kích
thước của kiểu dữ liệu được sử dụng để lưu trữ các giá trị.Sự phức tạp của việc
chèn và xóa phụ thuộc rất nhiều vào chiến lược được sử dụng để thực hiện các
thuộc tính động.

You might also like