Bài giảng Cấu trúc dữ liệu và giải thuật: Cấu trúc dữ liệu cây M-nhánh với B-cây - Bùi Tiến Lên
lượt xem 4
download
Bài giảng Cấu trúc dữ liệu và giải thuật: Cấu trúc dữ liệu cây M nhánh với B cây cung cấp cho người học các kiến thức về cây m nhánh, các thao tác trên cây m-nhánh, thao tác duyệt cây, B-cây,... Mời các bạn cùng tham khảo.
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Bài giảng Cấu trúc dữ liệu và giải thuật: Cấu trúc dữ liệu cây M-nhánh với B-cây - Bùi Tiến Lên
- CẤU TRÚC DỮ LIỆU CÂY M-NHÁNH VS B CÂY Bùi Tiến Lên 01/01/2017 CuuDuongThanCong.com https://fb.com/tailieudientucntt
- CÂY M-NHÁNH CuuDuongThanCong.com https://fb.com/tailieudientucntt
- Cây m-nhánh Định nghĩa 1 Cây m-nhánh (m-way tree) là một cây tìm kiếm có những tính chất sau I Mỗi nút có I tối thiểu 1 khóa I tối đa m − 1 khóa có giá trị phân biệt I Các khóa trong mỗi nút được sắp thứ tự tăng dần Spring 2017 CuuDuongThanCong.com Data structure & Algorithm https://fb.com/tailieudientucntt 3
- Cây m-nhánh (cont.) Định nghĩa 1 I Mỗi nút có k khóa {v1 , ..., vk } thì sẽ có k + 1 cây con {T1 , ..., Tk+1 }, các cây con có thể rỗng I Cây con đầu T sẽ chứa các khóa v trong khoảng 1 v ∈ (−∞, v1 ) (1) I Cây con cuối Tk+1 sẽ chứa các khóa v trong khoảng v ∈ (vk , ∞) (2) I Cây con Ti , i = 2, .., k sẽ chứa các khóa v trong khoảng v ∈ (vi , vi+1 ) (3) I Mỗi khóa vi sẽ có cây con trái là Ti và cây con phải Ti+1 Spring 2017 CuuDuongThanCong.com Data structure & Algorithm https://fb.com/tailieudientucntt 4
- Minh họa v1 vi vi+1 vk T1 Ti Tk+1 Hình 1: Nút và các khóa và các cây con Spring 2017 CuuDuongThanCong.com Data structure & Algorithm https://fb.com/tailieudientucntt 5
- Minh họa (cont.) v1 vi vi+1 vk Ti Ti+1 Hình 2: Khóa và cây con trái và con phải Spring 2017 CuuDuongThanCong.com Data structure & Algorithm https://fb.com/tailieudientucntt 6
- Minh họa (cont.) 16 18 6 22 26 4 20 24 28 30 Hình 3: Cây 3-nhánh Spring 2017 CuuDuongThanCong.com Data structure & Algorithm https://fb.com/tailieudientucntt 7
- Các thao tác trên cây m-nhánh Đối với cây m-nhánh có các thao tác cơ bản trên cây I Duyệt từng khóa của cây I Tìm một khóa trong cây I Thêm một khóa vào cây I Xóa một khóa khỏi cây Spring 2017 CuuDuongThanCong.com Data structure & Algorithm https://fb.com/tailieudientucntt 8
- Thao tác duyệt cây Ta có thể xem cây như một đồ thị tổng quát và áp dụng các thuật toán duyệt của đồ thị để duyệt cây. Có hai thuật toán duyệt cơ bản I Duyệt theo chiều sâu (Depth First Traversal - DFT ) I Duyệt theo chiều rộng (Breath First Traversal - BFT ) Spring 2017 CuuDuongThanCong.com Data structure & Algorithm https://fb.com/tailieudientucntt 9
- Duyệt theo chiều sâu PROCEDURE Dft(r ) BEGIN Thăm nút r FOR mỗi nút con u của r DO IF u chưa được thăm THEN DFT(u) END Spring 2017 CuuDuongThanCong.com Data structure & Algorithm https://fb.com/tailieudientucntt 10
- Duyệt theo chiều rộng PROCEDURE Bft(r ) BEGIN Đưa nút r vào hàng đợi queue WHILE queue khác rỗng BEGIN Lấy nút đỉnh khỏi queue gọi là nút x Thăm nút x FOR mỗi nút con u của x DO IF u chưa thăm THEN đưa u vào queue END END Spring 2017 CuuDuongThanCong.com Data structure & Algorithm https://fb.com/tailieudientucntt 11
- Minh họa duyệt cây m-nhánh 16 18 6 22 26 4 20 24 28 30 Hình 4: Hãy xác định khóa lớn nhất và nhỏ nhất của cây. Hãy xác định khóa đứng trước và đứng sau của khóa 18 Spring 2017 CuuDuongThanCong.com Data structure & Algorithm https://fb.com/tailieudientucntt 12
- Tìm kiếm một khóa trong cây Tìm kiếm trên cây m-nhánh tương tự như tìm kiếm trên phân cây nhị phân tìm kiếm I Bắt đầu từ nút gốc của cây I Duyệt cây theo hướng từ trên xuống (top-down) I Tại mỗi nút so sánh khóa cần tìm với các giá trị khóa tại nút (có thể sử dụng phương pháp tìm kiếm nhị phân) I Nếu tìm thấy thì dừng việc tìm kiếm lại nếu không thì sử dụng các phương trình (1, 2, 3) để xác định cây con có khả năng chứa khóa và tiếp tục tìm trong cây con của nút này Spring 2017 CuuDuongThanCong.com Data structure & Algorithm https://fb.com/tailieudientucntt 13
- Minh họa tìm khóa trên cây I Tìm kiếm khóa 30 16 18 6 22 26 4 20 24 28 30 Hình 5: Tìm kiếm Spring 2017 CuuDuongThanCong.com Data structure & Algorithm https://fb.com/tailieudientucntt 14
- Minh họa tìm khóa trên cây I Tìm kiếm khóa 30 16 18 6 22 26 4 20 24 28 30 Hình 5: Tìm kiếm Spring 2017 CuuDuongThanCong.com Data structure & Algorithm https://fb.com/tailieudientucntt 14
- Minh họa tìm khóa trên cây I Tìm kiếm khóa 30 16 18 6 22 26 4 20 24 28 30 Hình 5: Tìm kiếm Spring 2017 CuuDuongThanCong.com Data structure & Algorithm https://fb.com/tailieudientucntt 14
- Thao tác thêm khóa vào cây Thêm một khóa v vào cây m-nhánh I Duyệt cây để tìm kiếm vị trí của v cho đến khi gặp cây con rỗng I Thêm khóa v vào nút cha của cây con rỗng nếu nút cha còn “chỗ trống” (ít hơn m − 1 khóa) I Hoặc, nếu không còn nút trống tạo nút mới và thêm khóa v vào nút đó Spring 2017 CuuDuongThanCong.com Data structure & Algorithm https://fb.com/tailieudientucntt 15
- Minh họa thêm khóa vào cây 16 18 6 22 26 4 20 24 28 30 Hình 6: Cây 3-nhánh Spring 2017 CuuDuongThanCong.com Data structure & Algorithm https://fb.com/tailieudientucntt 16
- Minh họa thêm khóa vào cây (cont.) 16 18 6 8 22 26 4 20 24 28 30 Hình 7: Thêm khóa 8 Spring 2017 CuuDuongThanCong.com Data structure & Algorithm https://fb.com/tailieudientucntt 17
- Minh họa thêm khóa vào cây (cont.) 16 18 6 8 22 26 4 20 24 28 30 27 Hình 8: Thêm khóa 27 Spring 2017 CuuDuongThanCong.com Data structure & Algorithm https://fb.com/tailieudientucntt 18
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Bài giảng Cấu trúc dữ liệu - Bài 1:Tổng quan về cấu trúc dữ liệu và giải thuật
47 p | 172 | 17
-
Bài giảng Cấu trúc dữ liệu 1: Chương 1 - Lương Trần Hy Hiến
7 p | 161 | 9
-
Bài giảng Cấu trúc dữ liệu và giải thuật trong C++ - Bài 8: Cấu trúc dữ liệu ngăn xếp
28 p | 76 | 9
-
Bài giảng Cấu trúc dữ liệu giải thuật: Các kiểu dữ liệu trừu tượng cơ bản - Cấu trúc dữ liệu tuyến tính
92 p | 115 | 9
-
Bài giảng Cấu trúc dữ liệu và giải thuật – Bài 17: Cấu trúc dữ liệu dạng cây
21 p | 75 | 8
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Các cấu trúc dữ liệu
193 p | 55 | 7
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 1 - Trần Minh Thái (Trường Đại học Hồng Bàng )
62 p | 155 | 6
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Cấu trúc dữ liệu cây AA - Bùi Tiến Lên
30 p | 35 | 6
-
Bài giảng Cấu trúc dữ liệu - Chương 3: Cấu trúc cây
65 p | 54 | 6
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 1 - Trần Minh Thái (2016)
62 p | 94 | 6
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Cấu trúc dữ liệu mảng với danh sách liên kết - Bùi Tiến Lên
36 p | 41 | 5
-
Bài giảng Cấu trúc dữ liệu: Chương 1 - ThS. Thiều Quang Trung (2018)
44 p | 42 | 4
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 1 – Trần Minh Thái (2017)
67 p | 103 | 4
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 7 - Châu Thị Bảo Hà
133 p | 112 | 4
-
Bài giảng Cấu trúc dữ liệu và giải thuật trong C++ - Bài 9: Cấu trúc dữ liệu hàng đợi
12 p | 50 | 4
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 5 - Ngô Quang Thạch
24 p | 58 | 3
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 2 - Th.S Thiều Quang Trung
41 p | 67 | 3
-
Bài giảng Cấu trúc dữ liệu giải thuật: Cấu trúc dữ liệu
17 p | 49 | 1
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn