B+ TREE: Tìm kiếm, Chèn và Xóa Operations

⚡ Tóm tắt thông minh

Cây B+ là một chỉ mục động đa cấp lưu trữ con trỏ dữ liệu chỉ tại các nút lá được liên kết, giúp tìm kiếm chính xác và nhanh chóng. Bài viết này đề cập đến các quy tắc của cây B+, sự khác biệt giữa cây B+ và cây B, cũng như các thao tác tìm kiếm, chèn và xóa.

  • 🍃 Bảo quản lá: Cây B+ chỉ lưu trữ con trỏ dữ liệu tại các nút lá, khác với cây B.
  • 🔗 Các lá nối liền nhau: Tất cả các nút lá đều được liên kết, do đó, để quét toàn bộ phạm vi chỉ cần một lần quét tuyến tính.
  • 🔍 Tìm kiếm: Hàm Search thực hiện tìm kiếm nhị phân trên cây và trả về bản ghi phù hợp.
  • Chèn: Khi một nhánh lá đầy, một nửa số phần tử của nó sẽ chuyển sang nhánh lá mới và nhánh cha sẽ được cập nhật.
  • Xóa bỏ: Thao tác xóa loại bỏ một mục nhập lá và mượn hoặc hợp nhất các mục nhập anh chị em để duy trì sự cân bằng.

B+ TREE: Tìm kiếm, Chèn và Xóa Operaví dụ

Cây B+ là gì?

A Cây B+ Cây B+ chủ yếu được sử dụng để triển khai lập chỉ mục động ở nhiều cấp độ. So với cây B-Tree, cây B+ chỉ lưu trữ các con trỏ dữ liệu tại các nút lá của cây, giúp quá trình tìm kiếm chính xác và nhanh hơn.

Quy tắc cho cây B+

Dưới đây là những quy tắc thiết yếu cho một cây B+.

  • Lá được sử dụng để lưu trữ các bản ghi dữ liệu.
  • Các bản ghi được lưu trữ trong các nút bên trong của cây.
  • Nếu giá trị khóa đích nhỏ hơn nút bên trong, thì con trỏ sẽ được theo dõi ngay bên trái nó.
  • Nếu giá trị của khóa đích lớn hơn hoặc bằng nút bên trong, thì con trỏ nằm ngay bên phải nó sẽ được theo dõi.
  • Gốc có tối thiểu hai con.

Tại sao nên sử dụng cây B+

Dưới đây là những lý do nên sử dụng cây B+:

  • Các từ khóa chủ yếu được sử dụng để hỗ trợ tìm kiếm bằng cách chỉ dẫn đến trang phù hợp.
  • Cây B+ sử dụng "hệ số lấp đầy" để quản lý sự tăng giảm của cây.
  • Trong cây B+, nhiều khóa có thể dễ dàng được đặt trên trang bộ nhớ vì chúng không có dữ liệu liên quan đến các nút bên trong. Do đó, nó sẽ nhanh chóng truy cập dữ liệu cây trên nút lá.
  • Việc quét toàn diện tất cả các phần tử chỉ cần một lần duyệt tuyến tính duy nhất vì tất cả các nút lá của cây B+ đều được liên kết với nhau.

Cây B+ so với cây B

Dưới đây là những điểm khác biệt chính giữa cây B+ và cây B.

Cây B+ Cây B
Phím tìm kiếm có thể được lặp lại. Phím tìm kiếm không thể dư thừa.
Dữ liệu chỉ được lưu trên các nút lá. Cả các nút lá và các nút bên trong đều có thể lưu trữ dữ liệu.
Dữ liệu được lưu trữ trên nút lá giúp việc tìm kiếm chính xác hơn và nhanh hơn. Quá trình tìm kiếm diễn ra chậm do dữ liệu được lưu trữ trên các nút lá và các nút bên trong.
Việc xóa không khó, vì một phần tử chỉ bị xóa khỏi nút lá. Xóa các phần tử là một quá trình phức tạp và tốn thời gian.
Các nút lá được liên kết giúp tìm kiếm hiệu quả và nhanh chóng. Bạn không thể liên kết các nút lá.

Tìm kiếm Operasản xuất

Trong cây B+, tìm kiếm là một trong những thao tác dễ thực hiện nhất và cho kết quả nhanh chóng và chính xác.

Thuật toán tìm kiếm sau đây có thể áp dụng:

  • Để tìm bản ghi cần thiết, bạn cần thực hiện lệnh Tìm kiếm nhị phân trên các bản ghi có sẵn trong Cây.
  • Trong trường hợp khớp chính xác với khóa tìm kiếm, bản ghi tương ứng sẽ được trả về cho người dùng.
  • Trong trường hợp khóa chính xác không được tìm thấy khi tìm kiếm ở nút cha, nút hiện tại hoặc nút lá, thì “thông báo không tìm thấy” sẽ được hiển thị cho người dùng.
  • Quá trình tìm kiếm có thể được chạy lại để có kết quả tốt hơn và chính xác hơn.

Tìm kiếm Operathuật toán

1. Call the binary search method on the records in the B+ Tree.
2. If the search parameters match the exact key
       The accurate result is returned and displayed to the user
   Else, if the node being searched is the current and the exact key is not found by the algorithm
       Display the statement "Recordset cannot be found."

Đầu ra: Bộ bản ghi khớp với khóa chính xác sẽ được hiển thị cho người dùng; nếu không, người dùng sẽ được thông báo là nỗ lực không thành công.

Chèn Operasản xuất

Thuật toán sau đây có thể áp dụng cho thao tác chèn:

  • 50 phần trăm phần tử trong các nút được chuyển sang một lá mới để lưu trữ.
  • Nút cha của nút lá mới được liên kết chính xác với giá trị khóa tối thiểu và vị trí mới trong cây.
  • Chia nút cha thành nhiều vị trí hơn trong trường hợp nó được sử dụng hết.
  • Để có kết quả tốt hơn, khóa trung tâm được liên kết với nút cấp cao nhất của nút lá đó.
  • Cho đến khi không tìm thấy nút cấp cao nhất, hãy tiếp tục lặp lại quy trình được giải thích ở các bước trên.

Chèn Operathuật toán

1. If inserting at least 1 entry into the leaf container does not make it full, then add the record.
2. Else, divide the node into more locations to fit more records.
   a. Assign a new leaf and transfer 50 percent of the node elements to a new placement in the tree.
   b. The minimum key of the binary tree leaf and its new key address are associated with the top-level node.
   c. Divide the top-level node if it gets full of keys and addresses.
      i. Similarly, insert a key in the center of the top-level node in the hierarchy of the Tree.
   d. Continue to execute the above steps until a top-level node is found that does not need to be divided anymore.
3. Build a new top-level root node of 1 key and 2 indicators.

Đầu ra: Thuật toán sẽ xác định phần tử và chèn thành công vào nút lá được yêu cầu.

Chèn Operasản xuất

Ví dụ mẫu B+ Tree ở trên được giải thích theo các bước bên dưới:

  • Đầu tiên, chúng ta có 3 nút, và 3 phần tử đầu tiên, là 1, 4 và 6, được thêm vào các vị trí thích hợp trong các nút.
  • Giá trị tiếp theo trong chuỗi dữ liệu là 12, cần được đưa vào Cây.
  • Để thực hiện điều này, hãy chia nút và thêm 6 làm phần tử con trỏ.
  • Bây giờ, một cấu trúc phân cấp bên phải của cây được tạo ra, và các giá trị dữ liệu còn lại được điều chỉnh tương ứng bằng cách giữ nguyên.ping Hãy ghi nhớ các quy tắc áp dụng cho giá trị bằng hoặc lớn hơn so với các cặp khóa-giá trị ở bên phải.

Xóa bỏ Operasản xuất

Độ phức tạp của quy trình xóa trong Cây B+ vượt xa chức năng chèn và tìm kiếm.

Thuật toán sau đây có thể áp dụng khi xóa một phần tử khỏi Cây B+:

  • Đầu tiên, chúng ta cần xác định vị trí của một mục lá trong Cây chứa khóa và con trỏ, sau đó xóa mục lá đó khỏi Cây nếu mục lá đó đáp ứng chính xác các điều kiện xóa bản ghi.
  • Nếu nút lá chỉ đáp ứng được yếu tố thỏa đáng là đầy một nửa, thì thao tác hoàn tất; ngược lại, nút lá có số lượng mục nhập tối thiểu và không thể bị xóa.
  • Các nút liên kết khác ở bên phải và bên trái có thể xóa bất kỳ mục nào và sau đó di chuyển chúng đến nút lá. Nếu các tiêu chí này không được đáp ứng, thì chúng nên kết hợp nút lá và nút liên kết của nó trong cấu trúc cây phân cấp.
  • Khi một nút lá được hợp nhất với các nút lân cận bên phải hoặc bên trái, các mục giá trị trong nút lá hoặc nút lân cận được liên kết trỏ đến nút cấp cao nhất sẽ bị xóa.

Xóa bỏ Operasản xuất

Ví dụ trên minh họa quy trình loại bỏ một phần tử khỏi cây B+ có thứ tự cụ thể.

  • Đầu tiên, vị trí chính xác của phần tử cần xóa được xác định trong Cây.
  • Ở đây, phần tử cần xóa chỉ có thể được xác định chính xác ở cấp độ lá chứ không phải ở vị trí chỉ mục. Do đó, phần tử có thể bị xóa mà không ảnh hưởng đến các quy tắc xóa, tức là giá trị của khóa tối thiểu.

Xóa bỏ Operasản xuất

  • Trong ví dụ trên, chúng ta phải xóa 31 khỏi Cây.
  • Chúng ta cần xác định vị trí các trường hợp xuất hiện của số 31 trong bảng Index và Leaf.
  • Ta thấy rằng giá trị 31 có sẵn ở cả cấp độ nút Index và nút Leaf. Do đó, ta xóa nó khỏi cả hai trường hợp.
  • Nhưng chúng ta phải điền chỉ mục trỏ đến 42. Bây giờ chúng ta sẽ xem xét đứa trẻ bên phải dưới 25 và lấy giá trị nhỏ nhất để đặt làm chỉ mục. Vì vậy, 42 là giá trị duy nhất hiện có, nó sẽ trở thành chỉ mục.

Xóa bỏ Operathuật toán

1) Start at the root and go up to the leaf node containing the key K.
2) Find the node n on the path from the root to the leaf node containing K.
   A. If n is root, remove K
      a. if root has more than one key, done
      b. if root has only K
         i)  if any of its child nodes can lend a node
             Borrow key from the child and adjust child links
         ii) Otherwise merge the children nodes. It will be a new root
      c. If n is an internal node, remove K
         i)  If n has at least ceil(m/2) keys, done!
         ii) If n has less than ceil(m/2) keys,
             If a sibling can lend a key,
                Borrow key from the sibling and adjust keys in n and the parent node
                Adjust child links
             Else
                Merge n with its sibling
                Adjust child links
      d. If n is a leaf node, remove K
         i)  If n has at least ceil(M/2) elements, done!
             In case the smallest key is deleted, push up the next key
         ii) If n has less than ceil(m/2) elements
             If the sibling can lend a key
                Borrow key from a sibling and adjust keys in n and its parent node
             Else
                Merge n and its sibling
                Adjust keys in the parent node

Đầu ra: Khóa “K” bị xóa và các khóa được mượn từ các khóa cùng cấp để điều chỉnh giá trị trong n và các nút cha của nó nếu cần.

Câu Hỏi Thường Gặp

Cây B+ lập chỉ mục cho các bảng lớn và kho lưu trữ đặc trưng, ​​là nguồn sức mạnh cho trí tuệ nhân tạo và phân tích. Vì các nút lá được liên kết với nhau, việc quét phạm vi trên các hàng hoặc các phần tử nhúng diễn ra nhanh chóng, cho phép các quy trình AI lấy dữ liệu huấn luyện một cách hiệu quả trong khi cơ sở dữ liệu xử lý việc lập chỉ mục.

Đúng vậy. Trợ lý AI có thể tạo ra mã chèn, tìm kiếm và xóa trong cây B+. C++, Java, hoặc là Python Từ một mô tả đơn giản. Hãy kiểm tra kỹ kết quả đầu ra, vì logic tách và hợp nhất rất dễ mắc lỗi nhỏ.

Thứ tự (m) là số lượng con tối đa mà một nút có thể có. Một nút có thể chứa tối đa m − 1 khóa và phải có ít nhất ceil(m/2) con, điều này giúp cây cân bằng và nông.

Cây B+ là chỉ mục mặc định trong các cơ sở dữ liệu quan hệ như... MySQL (InnoDB), PostgreSQLvà Oraclevà trong các hệ thống tệp như NTFS và ext4. Các lá liên kết của chúng giúp cho việc truy vấn phạm vi và đọc tuần tự trở nên rất hiệu quả.

Tóm tắt bài viết này với: