Luận Văn Tốt Nghiệp Về Cấu Trúc Dữ Liệu Cây Đỏ Đen và Mô Phỏng

Khám phá luận văn tốt nghiệp về cấu trúc dữ liệu cây đỏ đen và mô phỏng, cung cấp kiến thức sâu sắc và ứng dụng thực tiễn trong lập trình.

Trường đại học

Đại học Đà Nẵng

Chuyên ngành

Tin học

Người đăng

Ẩn danh

Thể loại

khóa luận tốt nghiệp

2012

69
3
0

Phí lưu trữ

30 Point

Mục lục chi tiết

LỜI CẢM ƠN

Ý KIẾN ĐÁNH GIÁ CỦA GIÁO VIÊN HƯỚNG DẪN

1. CHƯƠNG 1: TỔNG QUAN VỀ CẤU TRÚC CÂY

1.1. CẤU TRÚC CÂY

1.2. ĐỊNH NGHĨA VÀ CÁC KHÁI NIỆM VỀ CÂY

1.3. SƠ ĐỒ CẤU TRÚC CÂY

1.4. ỨNG DỤNG CẤU TRÚC CÂY

1.5. MỘT SỐ VÍ DỤ VỀ ĐỐI TƯỢNG CÁC CẤU TRÚC DẠNG CÂY

1.6. TÌM HIỂU CÂY NHỊ PHÂN

1.7. MỘT SỐ DẠNG ĐẶC BIỆT CỦA CÂY NHỊ PHÂN

2. CHƯƠNG 2: CÂY NHỊ PHÂN TÌM KIẾM

2.1. MỘT SỐ KHÁI NIỆM

2.2. SƠ ĐỒ CÂY NHỊ PHÂN TÌM KIẾM

2.3. CẤU TRÚC DỮ LIỆU

2.4. CÁC THAO TÁC TRÊN CÂY NHỊ PHÂN TÌM KIẾM

2.4.1. Khởi tạo cây Binary Search Tree

2.4.2. Tạo cây nhị phân tìm kiếm

2.4.3. Duyệt cây nhị phân tìm kiếm

2.4.4. Tìm một phần tử x trong cây

2.4.5. Thêm một nút vào cây Binary Search Tree

2.4.6. Hủy một phần tử có khóa X

2.4.6.1. Trường hợp 1: X là nút lá
2.4.6.2. Trường hợp 2: X chỉ có một con (bên trái hoặc bên phải)
2.4.6.3. Trường hợp 3: X có đủ hai con

3. CHƯƠNG 3: CÂY ĐỎ ĐEN

3.1. THUẬN LỢI KHI SỬ DỤNG

3.2. CẤU TRÚC CÂY ĐỎ ĐEN

3.2.1. Cấu trúc lưu trữ

3.2.2. Khai báo cây đỏ đen

3.3. CÁC THUẬT TOÁN CƠ BẢN CỦA BLACK AND RED TREE

3.3.1. Thêm một node mới

3.3.2. Các phép lật màu trên đường đi xuống

3.3.3. Các phép quay khi chèn node

3.3.4. Các thao tác khôi phục cây

3.3.5. Các trường hợp vi phạm chính

3.3.5.1. Trường hợp 1
3.3.5.2. Trường hợp 2
3.3.5.3. Trường hợp 3

3.3.6. Nhận xét khi chèn

3.3.6.1. Trường hợp 1
3.3.6.2. Trường hợp 2
3.3.6.3. Trường hợp 3
3.3.6.4. Trường hợp 4

3.4. GIỚI THIỆU NGÔN NGỮ LẬP TRÌNH

3.4.1. Vài nét về ngôn ngữ Java

3.4.2. Một số đặc điểm của ngôn ngữ Java

3.4.3. Giới thiệu ứng dụng của Java vào chương trình cây đỏ đen

3.5. DEMO CHƯƠNG TRÌNH

TÀI LIỆU THAM KHẢO

Tóm tắt

I. Giới thiệu về Cấu Trúc Dữ Liệu Cây Đỏ Đen

Cấu trúc dữ liệu cây đỏ đen là một dạng cây nhị phân tìm kiếm tự cân bằng, được thiết kế để duy trì tính chất cân bằng trong quá trình chèn và xóa các nút. Cây đỏ đen có những đặc điểm nổi bật như mỗi nút có màu đỏ hoặc đen, và các quy tắc nhất định về màu sắc giúp đảm bảo rằng chiều cao của cây không vượt quá gấp đôi chiều cao của cây con. Điều này giúp tối ưu hóa thời gian tìm kiếm, chèn và xóa, với độ phức tạp trung bình là O(log n). Cấu trúc này rất hữu ích trong các ứng dụng yêu cầu hiệu suất cao trong việc xử lý dữ liệu lớn.

1.1. Định nghĩa và Tính chất của Cây Đỏ Đen

Cây đỏ đen là một cây nhị phân tìm kiếm với các quy tắc màu sắc. Mỗi nút có thể là màu đỏ hoặc đen. Quy tắc chính bao gồm: (1) Nút gốc luôn là màu đen, (2) Nút lá (null) luôn là màu đen, (3) Nếu một nút là màu đỏ, thì cả hai nút con của nó phải là màu đen, và (4) Mỗi đường đi từ một nút đến các nút lá phải có cùng số lượng nút đen. Những quy tắc này giúp duy trì tính cân bằng của cây, từ đó cải thiện hiệu suất tìm kiếm và thao tác trên cây.

II. Các Thuật Toán Cơ Bản của Cây Đỏ Đen

Các thuật toán cơ bản của cây đỏ đen bao gồm chèn, xóa và tìm kiếm. Khi chèn một nút mới, thuật toán sẽ thực hiện các phép lật màu và quay để duy trì tính chất của cây. Việc xóa cũng tương tự, với các bước kiểm tra và điều chỉnh màu sắc để đảm bảo cây vẫn cân bằng. Đặc biệt, thuật toán tìm kiếm trong cây đỏ đen có độ phức tạp O(log n), giúp tìm kiếm nhanh chóng và hiệu quả. Những thuật toán này không chỉ giúp duy trì cấu trúc của cây mà còn đảm bảo rằng các thao tác trên cây được thực hiện trong thời gian tối ưu.

2.1. Thuật Toán Chèn Nút

Khi chèn một nút mới vào cây đỏ đen, đầu tiên nút này được chèn như một nút đỏ. Sau đó, thuật toán sẽ kiểm tra các quy tắc màu sắc. Nếu vi phạm, các phép lật màu và quay sẽ được thực hiện để khôi phục tính chất của cây. Quá trình này đảm bảo rằng cây vẫn duy trì tính cân bằng và các quy tắc màu sắc được tuân thủ. Việc chèn nút mới có thể được thực hiện trong thời gian O(log n), nhờ vào cấu trúc cây tự cân bằng.

III. Ứng Dụng của Cây Đỏ Đen trong Thực Tiễn

Cấu trúc dữ liệu cây đỏ đen được ứng dụng rộng rãi trong nhiều lĩnh vực, đặc biệt là trong các hệ thống quản lý cơ sở dữ liệu và các ứng dụng yêu cầu tìm kiếm nhanh. Nhờ vào tính chất tự cân bằng, cây đỏ đen giúp tối ưu hóa thời gian truy cập dữ liệu, từ đó cải thiện hiệu suất của các ứng dụng. Ngoài ra, cây đỏ đen còn được sử dụng trong các thuật toán sắp xếp và tìm kiếm, giúp xử lý dữ liệu lớn một cách hiệu quả.

3.1. Ứng Dụng trong Hệ Thống Cơ Sở Dữ Liệu

Trong các hệ thống cơ sở dữ liệu, cây đỏ đen thường được sử dụng để tổ chức và truy xuất dữ liệu. Cấu trúc này cho phép thực hiện các thao tác tìm kiếm, chèn và xóa một cách nhanh chóng, giúp cải thiện hiệu suất của hệ thống. Các hệ quản trị cơ sở dữ liệu như MongoDB và Redis đã áp dụng cây đỏ đen để tối ưu hóa việc lưu trữ và truy xuất dữ liệu, từ đó nâng cao trải nghiệm người dùng.

25/01/2025
Luận văn tốt nghiệp cấu trúc dữ liệu cây đỏ đen và mô phỏng

Trích đoạn nội dung tài liệu

CHƯƠNG I: TỔNG QUAN VỀ CẤU TRÚC CÂY I. CẤU TRÚC CÂY: 1. ĐỊNH NGHĨA VÀ CÁC KHÁI NIỆM VỀ CÂY: - Cây là một đồ thị liên thông và không có chu trình đơn. - Cây đã được dùng từ năm 1857, khi nhà toán học Anh tên Arthur Cayley dùng cây để xác định những dạng khác nhau của hợp chất hóa học.

Từ đó, cây đã được dùng để giải nhiều bài toán trong nhiều lĩnh vực khác nhau trong đó cây rất hay sử dụng trong Tin học. - Cây là một tập hợp T các phần tử (gọi là nút của cây) trong đó có một nút đặc biệt gọi là nút gốc (root), các nút còn lại được chia thành những tập rời nhau T1, T2, …, Tn theo quan hệ phân cấp trong đó Ti cũng được gọi là một cây. Mỗi nút ở cấp i sẽ quản lý một số nút ở cấp i +1. Quan hệ này người ta còn gọi là quan hệ cha - con.

- Gốc của cây là một đỉnh đặc biệt, thông thường là đỉnh trên cùng. Mức của đỉnh là độ dài đường đi từ gốc đến đỉnh đó. Chiều cao của cây là số mức lớn nhất của nút có trên cây đó. * Ví dụ : Đồ thị sau là cây V 1 V V 2 3 V V V V 4 5 6 7 + Ta chọn V1 là gốc có mức 0 thì V2, V3 là những đỉnh mức 1, các đỉnhV4, V5, V6, V7 có mức 2, và chiều cao của cây là 2.

- Rừng là đồ thị mà mỗi thành phần liên thông là cây. Luan van - Một nút là một cây. Nút đó cũng gọi là gốc của cây ấy. - Bậc của một nút là số cây con của nút đó.

- Bậc của một cây là bậc lớn nhất của các nút trong cây (số cây con tối đa của một nút thuộc cây). - Cây có bậc n thì gọi là cây n-phân. Cây n-phân là cây mà mọi đỉnh có tối đa n con và có ít nhất một đỉnh có n con. - Cây n-phân đầy đủ là cây mà mọi đỉnh trong có đúng n con.

- Cây cân bằng là cây mà mọi đỉnh lá có mức là h hay h-1, trong đó h là chiều cao của cây. - Đỉnh lá là đỉnh có bậc 1 còn được gọi là lá. Thường dùng cho cây có gốc, khi đó lá là đỉnh không có con. - Nút gốc là nút không có nút cha.

- Các nút không có nút con được gọi là nút lá. - Nút nhánh là nút có bậc khác 0 và không phải là gốc. - Ta quy ước: Một cây không có nút nào được gọi là cây rỗng (null tree). - Độ dài đường đi từ gốc đến nút x: Px = số cạnh cần đi qua kể từ gốc đến x.

SƠ ĐỒ CẤU TRÚC CÂY: Luan van A Gốc Cạnh Nút C B G H D E F Lá 3. ỨNG DỤNG CẤU TRÚC CÂY: - Xây dựng các thuật toán rất có hiệu quả để định vị các phần tử trong một danh sách. - Xây dựng các mạng máy tính với chi phí rẻ nhất cho các đường điện thoại nối các máy phân tán. - Cây cũng được dùng để tạo ra các mã có hiệu quả để lưu trữ và truyền dữ liệu.

- Cấu trúc cây được ứng dụng trong các giải thuật tìm kiếm, giải thuật sắp xếp và nhiều bài toán khác. - Cây dùng để biểu diễn bài toán quyết định (cây quyết định), biểu diễn quá trình tính toán các biểu thức đại số. MỘT SỐ VÍ DỤ VỀ ĐỐI TƯỢNG CÁC CẤU TRÚC DẠNG CÂY: 4. Sơ đồ tổ chức của một công ty: Luan van BB-Electronic Corp R&D Kinh Tài Sản doanh vụ xuất Nội Quốc TV CD Amplie địa tế r Châu Mỹ Các Âu nước 4.

Mục lục một quyển sách: Student Guide Giới Điể Môi Chương trình thiệu m trường mẫu Bài Thực Thi tập hành 4. Biểu diễn biểu thức số học dưới dạng cây: x + y * (z - t) + u / v. NHẬN XÉT: - Trong cấu trúc cây không tồn tại chu trình. - Tổ chức một cấu trúc cây cho phép truy cập nhanh đến các phần tử của nó.

TÌM HIỂU CÂY NHỊ PHÂN : 1. ĐỊNH NGHĨA : - Cây nhị phân là một dạng cấu trúc cây quan trọng, mỗi nút của nó chỉ có tối đa hai nút con. - Với mỗi nút trên cây nhị phân, cây con xuất phát từ nút con trái gọi là cây con trái và cây con xuất phát từ nút con phải gọi là cây con phải của nó. Như vậy, cây nhị phân là cây có thứ tự.

MỘT SỐ DẠNG ĐẶC BIỆT CỦA CÂY NHỊ PHÂN : A A A A B B B B C C C C D D D D Luan van A A B C B C D E F G D E F G H I J A f) e) B C G D E F J g) I H - Các cây a), b), c), d) được gọi là cây nhị phân suy biến. + Cây a) được gọi là cây lệnh trái. + Cây b) được gọi là cây lệnh phải. + Cây c), d) được gọi là cây zic-zắc.

- Cây e) được gọi là cây nhị phân hoàn chỉnh. Như vậy, cây nhị phân hoàn chỉnh là cây nhị phân đầy đủ mà tất cả các lá có cùng một mức. - Cây f) có các nút tối đa ở cả mọi mức nên gọi là cây nhị phân đầy đủ cân bằng. Đó là trường hợp đặc biệt của cây nhị phân hoàn chỉnh.

Luan van - Cây g) gọi là cây gần đầy, khác với cây e) ở chỗ các nút ở mức cuối không đạt về phía trái. TÍNH CHẤT : - Trong các cây nhị phân cùng có số lượng nút như nhau thì cây nhị phân suy biến có chiều cao lớn nhất, cây nhị phân hoàn chỉnh hoặc cây nhị phân gần đầy có chiều cao nhỏ nhất, loại cây này cũng là cây có dạng cân đối nhất. - Số lượng tối đa các nút mức k (k≥1) trên cây nhị phân là 2k-1. - Số lượng tối đa các nút trên cây nhị phân độ cao h là 2h-1 (h≥1).

 Chứng minh : 2) Chứng minh bằng quy nạp : Ta biết : - Ở mức 1 : k=1, cây nhị phân có tối đa 1=20 nút. - Ở mức 2 : k=2, cây nhị phân có tối đa 2=21 nút. Giả sử kết quả đúng với mức k-1, nghĩa là ở mức này cây nhị phân có tối đa là 2k-2 nút. Mỗi nút ở mức k-1 sẽ có tối đa hai con, do đó 2k-2 nút ở mức k-1 sẽ cho : 2k-2 * 2=2k-1 nút tối đa ở mức k (Tính chất 2 được chứng minh).

3) Ta biết rằng chiều cao của cây là số mức lớn nhất có trên cây. Theo 2) ta suy ra số nút tối đa có trên cây nhị phân với chiều cao h là : 20 + 21 + 22 +. Luan van CHƯƠNG II: CÂY NHỊ PHÂN TÌM KIẾM I. MỘT SỐ KHÁI NIỆM: - Cây nhị phân tìm kiếm (Binary Search Tree) là một cấu trúc dữ liệu rất thuận lợi cho bài toán tìm kiếm.

- Cây nhị phân tìm kiếm là cây nhị phân trong đó dữ liệu được gán với các nút và dữ liệu được sắp xếp theo khóa sao cho khóa tại mỗi nút của cây lớn hơn khóa của các nút cây con bên trái và nhỏ hơn hoặc bằng khóa của các nút cây con bên phải. - Nếu số nút trên cây là N thì chi phí tìm kiếm trung bình chỉ khoảng log2N. - Cây tìm kiếm ứng với n khóa k1, k2, …, kn là cây nhị phân mà mỗi nút đều được gán một khóa sao cho với mỗi nút k: + Mọi khóa trên cây con trái đều nhỏ hơn khóa trên nút k. + Mọi khóa trên cây con phải đều lớn hơn khóa trên nút k.

- Cây nhị phân tìm kiếm là một cấu trúc dữ liệu cơ bản được sử dụng để xây dựng các cấu trúc dữ liệu trừu tượng hơn như các tập hợp, đa tập hợp, các dãy kết hợp. SƠ ĐỒ CÂY NHỊ PHÂN TÌM KIẾM: 44 Cây con Cây con trái phải 18 88 13 37 59 10 8 15 23 40 55 71 Luan van III. CẤU TRÚC DỮ LIỆU: Typedef struct NODE { int data; NODE* left; NODE* right; }; Typedef struct NODE* TREE; TREE root; IV. CÁC THAO TÁC TRÊN CÂY NHỊ PHÂN TÌM KIẾM: 1.

Khởi tạo cây Binary Search Tree: 1. Khởi tạo cây Binary Search Tree: Cho con trỏ quản lý địa chỉ nút gốc về con trỏ NULL. void init (Node &root) { root = NULL; } 1. Tạo Node: Node* GetNode (int x) { p = new Node; if (p!= NULL) { p→ left = NULL; Luan van p→ right = NULL; p→ data = x; } return (p); } 1.

Tạo cây nhị phân tìm kiếm: - Ta có thể tạo cây nhị phân tìm kiếm bằng cách lặp lại quá trình thêm một phần tử vào một cây rỗng. void creatTree (Tree &root) { int x, n; cout << “ nhap n= ”; cin>> n; for (int i=1; i<=n; i++) { cout << “ nhap gia tri: ”; cin>> x; insertTree (root.x); } } - Ví dụ về tạo cây nhị phân tìm kiếm: 25 37 10 18 29 50 3 1 6 5 12 20 35 13 32 41 25 10 37 Luan van 2. Duyệt cây nhị phân tìm kiếm: - Khi một cây nhị phân tìm kiếm được tạo ra, tất cả các nút có thể được duyệt theo thứ tự giữa nhờ duyệt đệ quy cây con bên trái, in nút đang duyệt, rồi duyệt đệ quy cây con bên phải, tiếp tục làm như vậy với mỗi nút của cây trong quá trình đệ quy. Với mọi cây nhị phân, cây có thể được duyệt theo thứ tự trước hoặc theo thứ tự sau, cả hai cách đều hữu dụng với cây nhị phân tìm kiếm.

- Phép duyệt có độ phức tạp là Ω(n), vì nó phải duyệt qua tất cả các nút. Độ phức tạp trên cũng là O(n). - Khi duyệt theo thứ tự giữa, trình tự các nút duyệt qua sẽ cho ta một dãy các nút theo thứ tự tăng dần của khóa. Duyệt theo thứ tự trước (Node - Left - Right): Duyệt nút gốc, duyệt cây con bên trái, duyệt cây con bên phải.

Duyệt theo thứ tự giữa (Left - Node - Right): Duyệt cây con bên trái, duyệt nút gốc, duyệt cây con bên phải. Duyệt theo thứ tự sau (Left - Right - Node): Duyệt cây con bên trái, duyệt cây con bên phải, duyệt nút gốc. void LRN (TREE root) { if (root!=NULL) { LRN (root→ left); LRN (root→ right); cout << root→ data<< “ “; } Luan van } 3. Tìm một phần tử x trong cây:  Giải thuật tìm kiếm: + Đầu vào: Cây nhị phân tìm kiếm T và khóa K.

Nội dung được bảo vệ bản quyền — Tải xuống đầy đủ

Bài viết "Luận Văn Tốt Nghiệp Về Cấu Trúc Dữ Liệu Cây Đỏ Đen và Mô Phỏng" của tác giả Phan Thị Như Ngọc, dưới sự hướng dẫn của PGS. Trần Quốc Chiến tại Đại học Đà Nẵng, tập trung vào việc nghiên cứu và mô phỏng cấu trúc dữ liệu cây đỏ đen, một trong những cấu trúc dữ liệu quan trọng trong lập trình và thuật toán. Bài luận văn không chỉ cung cấp cái nhìn sâu sắc về lý thuyết mà còn hướng dẫn cách áp dụng thực tiễn, giúp người đọc hiểu rõ hơn về cách thức hoạt động và ứng dụng của cây đỏ đen trong các bài toán thực tế.

Để mở rộng thêm kiến thức về các chủ đề liên quan, bạn có thể tham khảo các tài liệu sau: Luận Văn: Khảo Sát Mạng LAN với Các Phần Mở Rộng Không Dây, nơi bạn sẽ tìm thấy thông tin về mạng LAN và các công nghệ mở rộng không dây, hay Luận Văn Thạc Sĩ Khoa Học Máy Tính: Quản Lý Ngữ Nghĩa Dữ Liệu Mở Liên Kết Sử Dụng Blockchain, một nghiên cứu về quản lý dữ liệu trong môi trường hiện đại. Cuối cùng, Cài đặt và thực nghiệm SQLCipher trên hệ điều hành Android cho luận văn thạc sĩ cũng là một tài liệu hữu ích, giúp bạn hiểu thêm về bảo mật dữ liệu trong ứng dụng di động. Những tài liệu này sẽ giúp bạn có cái nhìn đa chiều hơn về các khía cạnh khác nhau trong lĩnh vực công nghệ thông tin và cấu trúc dữ liệu.