1. Trang chủ
  2. » Tất cả

Bai tap bài tập tuần 10 – cây b tree th tuan 10

3 2 0

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Bài tập tuần 10 – Cây B-Tree
Trường học Trường Đại Học Công Nghệ Thông Tin – Đại Học Quốc Gia Hà Nội
Chuyên ngành Khoa học máy tính
Thể loại Bài tập
Năm xuất bản 2023
Thành phố Hà Nội
Định dạng
Số trang 3
Dung lượng 340,89 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Bài tập Tuần 10 – Cây B Tree Bài 1 Thêm một dãy các số nguyên 10, 20, 30, 40, 50, 60, 70, 80, 90 vào một cây B Tree rỗng Với t=3, t là bậc tối thiểu Bài 2 Hiện thực cây B Tree, với Cây B Tree được địn[.]

Trang 1

Bài tập Tuần 10 – Cây B-Tree

Bài 1

Thêm một dãy các số nguyên : 10, 20, 30, 40, 50, 60, 70, 80, 90 vào một cây B-Tree rỗng Với t=3, t là bậc tối thiểu

Bài 2

Hiện thực cây B-Tree, với Cây B-Tree được định nghĩa như sau:

struct BTreeNode {

BTreeNode **Child; // Dãy các con trỏ Child

}

// Tạo 1 node của cây B-Tree

BTreeNode * CreateNode( int _t , bool _leaf )

{

BTreeNode * pCurr = new BTreeNode ();

pCurr->t = _t ;

pCurr->leaf = _leaf ;

pCurr->keys = new int [2 * pCurr->t - 1];

pCurr->Child = new BTreeNode *[2 * pCurr->t];

pCurr->n = 0;

return pCurr;

}

Viết các hàm sau:

a) Duyệt cây B-Tree:

void BTree_Traverse( BTreeNode * root)

b) Tìm một khoá k trên cây B-Tree:

BTreeNode * BTree_Search( BTreeNode * root, int k)

c) Thêm một node có khoá k vào cây B-Tree:

void BTree_Insert( BTreeNode * root, int k)

Hướng dẫn:

Khi thêm nút vào cây B-Tree nếu tại một node bị đầy (node đó có số khoá lớn hơn 2t-1), thì phải tách node đó thành hai node

Thủ tục Tách (split) 1 node bị đầy:

Trang 2

x x

Bài 3 – Đồ thị

Thuật toán Prims – Tìm cây khung nhỏ nhất

• Cho G = (V, E) là một đồ thị liên thông có trọng số gồm n đỉnh

• Bước 1 Chọn tuỳ ý một đỉnh bất kỳ v ∈ V và khởi tạo: Y = {v} và T = Ø

• Bước 2 Trong số những cạnh e = (V,W), trong đó v ∈ Y và w ∈ V\Y, ta chọn cạnh có

độ dài nhỏ nhất

• Bước 3 Gán Y = Y ∪ {w} và T = T ∪ {e}

• Bước 4 Nếu T đủ n-1 phần tử thì dừng, ngược lại làm tiếp bước 2

• T chính là cây khung nhỏ nhất

Cho đồ thị như Hình 3.1 Hãy tìm cây khung nhỏ nhất _MST

Hình 3.1: Đồ thị G(V, E) có trọng số

Hướng dẫn

Các bước tìm cây khung MST theo thuật toán Prims:

Trang 3

Cho G(V, E): V=6, E=9

visited[] = {0, 0, 0, 0, 0, 0}

PriorityQueue(Q) = {}

push tất cả các cạnh của đỉnh ‘1’ vào hàng đợi Đỉnh ‘1’ là visited _đã xét

.visited[] = {1, 0, 0, 0, 0, 0}

Q = {1 -> 3(4), 1 -> 5(5)}

Extract Min from Q, and go to that vertex

Min = 4, và ‘3’ là node kế tiếp được xét

.push tất cả các cạnh của đỉnh ‘3’ vào Queue Đỉnh ‘3’ đã visited

.visited[] = {1, 0, 1, 0, 0, 0}

Q = {1->5(5), 3->2(3), 3->4(2), 3->5(3), 3->1(4)}

Extract Min từ Q, và tới đỉnh kế tiếp là

 Đỉnh ‘4’

Lặp lại các bước này cho đến khi các đỉnh của đồ thị G được duyệt hết, ta được cây khung nhỏ nhất như Hình 3.3

Hình 3.3: Cây khung nhỏ nhất của đồ thị G

a) Cài đặt thuật toán Prims để tìm cây khung nhỏ nhất MST (Minimum Spaning Tree)

============================ *** ============================

Ngày đăng: 25/03/2023, 07:20

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w