✨Cây van Emde Boas

Cây van Emde Boas

Cây van Emde Boas (hay hàng đợi ưu tiên van Emde Boas), còn gọi là cây vEB, là một cấu trúc dữ liệu cây để biểu diễn mảng liên hợp có khóa là số tự nhiên m bit. Nó thực hiện mỗi thao tác trong thời gian O(log m). Cấu trúc dữ liệu này được tìm ra bởi một nhóm lãnh đạo bởi Peter van Emde Boas năm 1977.

Các thao tác

Cây vEB cho phép thực hiện các thao tác của mảng liên hợp có thứ tự, bao gồm: Chèn: chèn một cặp khóa/giá trị với 1 khóa m bit Xóa: xóa một cặp khóa/giá trị với 1 khóa cho trước Tìm: tìm giá trị liên hợp với 1 khóa cho trước Tìm phần tử sau: tìm cặp khóa/giá trị có khóa nhỏ nhất lớn hơn hoặc bằng k *Tìm phần tử trước: tìm cặp khóa/giá trị có khóa lớn nhất nhỏ hơn hoặc bằng k.

Phương thức hoạt động

thumb|alt=Ví dụ cây van Emde Boas|Một cây Van Emde Boas cùng với cấu trúc hỗ trợ của nút gốc sau khi đã chèn 1, 2, 3, 5, 8 và 10.

Cho đơn giản, giả sử log2 m = k với k là số tự nhiên. Giả sử M=2m. Một cây vEB T cho tập hợp {0,..., M-1} có nút gốc chứa 1 mảng mang tên T.con có kích thước M1/2. T.con[i] là con trỏ đến cây vEB con lưu trữ các giá trị trong khoảng {iM1/2,...,(i+1)M1/2-1}. Ngoài ra T chứa hai giá trị T.minT.max cùng với một cây vEB hỗ trợ T.aux.

Dữ liệu trong cây vEB được lưu trữ như sau. Giá trị nhỏ nhất được lưu trong T.min và giá trị lớn nhất được lưu trong T.max. Hai giá trị này không được lưu tại bất kì nơi nào khác trong cây. Nếu T là rỗng, ta quy ước T.max=-1T.min=M. Các giá trị còn lại được lưu trong các cây con. Giá trị x được lưu trong cây con T.con[i] trong đó i=\lfloor x/M^{1/2}\rfloor. Cây hỗ trợ T.aux lưu trữ các cây con khác rỗng. Nghĩa là T.aux chứa giá trị j khi và chỉ khi T.con[j] là khác rỗng.

👁️ 0 | 🔗 | 💖 | ✨ | 🌍 | ⌚
**Cây van Emde Boas** (hay **hàng đợi ưu tiên van Emde Boas**), còn gọi là cây vEB, là một cấu trúc dữ liệu cây để biểu diễn mảng liên hợp có khóa là số tự
Trong khoa học máy tính, **tìm kiếm nhị phân** (), còn gọi là **tìm kiếm nửa khoảng** (_half-interval search_), **tìm kiếm logarit** (_logarithmic search_), hay **chặt nhị phân** (_binary chop_), là một thuật toán tìm
Đây là danh sách các cấu trúc dữ liệu. Bạn có thể xem danh sách thuật ngữ rộng hơn tại danh sách các thuật ngữ liên quan đến cấu trúc dữ liệu và giải thuật.
phải|nhỏ|[[Lưu đồ thuật toán (thuật toán Euclid) để tính ước số chung lớn nhất (ưcln) của hai số _a_ và _b_ ở các vị trí có tên A và B. Thuật toán tiến hành bằng