Cây 2-3-4 – Lý thuyết và mô phỏng Nghiên Cứu Khoa Học
MỤC LỤC 1
LỜI MỞ ĐẦU
I. LÝ DO CHỌN ĐỀ TÀI 2
II. MỤC ĐÍCH NGHIÊN CỨU ĐỀ TÀI 2
III. NHIỆM VỤ NGHIÊN CỨU ĐỀ TÀI 3
IV. ĐỐI TƯỢNG NGHIÊN CỨU 3
V. PHƯƠNG PHÁP NGHIÊN CỨU 3
PHẦN NỘI DUNG 4
CHƯƠNG 1. LÝ THUYẾT CÂY 2-3-4 4
I. Giới thiệu về cây 2-3-4 4
II. Tổ chức cây 2-3-4
6
III. Tìm kiếm
8
IV. Tách node 8
1. Tách node con
8
2. Tách node gốc 11
3. Tách theo hướng đi xuống 12
V. Chèn node 14
VI. Tính hiệu quả của Cây 2-3-4 15
VII. Chuyển từ cây 2-3-4 sang cây đỏ đen 16
CHƯƠNG 2. MÔ PHỎNG THUẬT TOÁN TRÊN CÂY 2-3-4 21
I. Tổng quan về mô phỏng thuật toán 21
1. Khái niệm thuật toán và các đặc trưng của thuật toán 21
2. Khái niệm mô phỏng thuật toán
21
II. Các yêu cầu mô phỏng thuật toán 22
III. Quá trình thiết kế nhiệm vụ mô phỏng thuật toán 23
IV. Mô phỏng thuật toán trên Cây 2-3-4 23
Lý thuyết và mô phỏng” được chọn làm đề tài nghiên cứu.
II. Mục đích nghiên cứu đề tài
Sinh viên: Đỗ Thị Thùy Dương – Lớp A_K54_CNTT
2
Cây 2-3-4 – Lý thuyết và mô phỏng Nghiên Cứu Khoa Học
Mục đích nghiên cứu của khóa luận này nhằm tìm hiểu và đánh giá các
thuật toán trên Cây 2-3-4, đồng thời xây dựng một phần mềm mô phỏng các thuật
toán này nhằm hỗ trợ cho việc học, nghiên cứu và tiến tới dạy các thuật toán trên
Cây 2-3-4.
III .Nhiệm vu nghiên cứu đề tài.
Nghiên cứu tổng quan về mô phỏng thuật toán, các yêu cầu, phương pháp
tiếp cận, phương pháp thiết kế một mô đun mô phỏng thuật toán.
Thiết kế minh họa các mô đun minh họa các thuật toán trên Cây2-3-4.
IV. Đối tượng nghiên cứu.
Đề tài nghiên cứu đi sâu vào nghiên cứu và cài đặt một số thuật toán:
- Thuật toán tìm kiếm trên Cây 2-3-4
- Thuật toán chèn một node và chèn một giá trị vào Cây 2-3-4
- Thuật toán tách node trên Cây 2-3-4
- Thuật toán xóa node và xóa một giá trị trên Cây 2-3-4
V. Phưong pháp nghiên cứu.
Phương pháp nghiên cứu chủ yếu tham khảo các tài liệu tham khảo liên
quan đến Cây nhị phân tìm kiếm, Cây 2-3-4 thông qua các sách, tài liệu tham khảo
và đặc biệt là nguồn tài liệu phong phú trên mạng Internet.
Sinh viên: Đỗ Thị Thùy Dương – Lớp A_K54_CNTT
3
Cây 2-3-4 – Lý thuyết và mô phỏng Nghiên Cứu Khoa Học
PHẦN NỘI DUNG
Chương I. Lý thuyết về Cây 2-3-4
I. Giới thiệu về cây 2-3-4.
Như chúng ta đã biết, các thuật toán về cây nhị phân luôn rất tốt cho nhiều
Hình 4.1 cây 2-3-4
Các số 2, 3 và 4 trong cụm từ cây 2-3-4 có ý nghĩa là khả năng có bao nhiêu
liên kết đến các node con có thể có được trong một node cho trước. Đối với các
node không phải là lá, có thể có 3 cách sắp xếp sau:
Một node với một mục dữ liệu thì luôn luôn có 2 con.
Một node với hai mục dữ liệu thì luôn luôn có 3 con.
Một node với ba mục dữ liệu thì luôn luôn có 4 con.
Sinh viên: Đỗ Thị Thùy Dương – Lớp A_K54_CNTT
5
Cây 2-3-4 – Lý thuyết và mô phỏng Nghiên Cứu Khoa Học
Như vậy, một node không phải là lá phải luôn luôn có số node con nhiều hơn
1 so với số mục dữ liệu của nó. Nói cách khác, đối với mọi node với số con là c và
số mục dữ liệu là d, thì : c = d + 1. Sau đây là các ví dụ cụ thể:
Hình 4.2. Các trường hợp của cây 2-3-4
Với mọi node lá thì không có node con nhưng có thể chứa 1, 2 hoặc 3 mục
dữ liệu, không có node rỗng.
Một cây 2-3-4 có thể có đến 4 cây con nên được gọi là cây nhiều nhánh bậc
4.
Trong cây 2-3-4 mỗi node có ít nhất là 2 liên kết ,trừ lnode lá (node không có
liên kết nào).
Hình 4.2 trình bày các trường hợp của cây 2-3-4. Một node với 2 liên kết gọi
là một 2-node, một node với 3 liên kết gọi là một 3-node, và một node với 4 liên
kết gọi là một 4-node, nhưng ở đây không có loại node nào là 1-node.
II. Tổ chức cây 2-3-4.
Các mục dữ liệu trong mỗi node được sắp xếp theo thứ tự tăng dần từ trái
sang phải (sắp xếp từ thấp đến cao).
Sinh viên: Đỗ Thị Thùy Dương – Lớp A_K54_CNTT
6
Cây 2-3-4 – Lý thuyết và mô phỏng Nghiên Cứu Khoa Học
Một đặc tính quan trọng của bất kỳ cấu trúc cây là mối liên hệ giữa các liên
III. Tìm kiếm.
Thao tác tìm kiếm trong cây 2-3-4 tương tự như thủ tục tìm kiếm trong cây
nhị phân. việc tìm kiếm bắt đầu từ node gốc và chọn liên kết dẫn đến cây con với
phạm vi giá trị phù hợp.
Ví dụ, để tìm kiếm mục dữ liệu với khoá là 64 trên cây ở hình 4.1, bạn bắt
đầu từ gốc. Tại node gốc không tìm thấy mục khoá này. Bởi vì 64 lớn 50, chúng ta
đi đến node con 1, (60/70/80)(lưu ý node con 1 nằm bên phải, bởi vì việc đánh số
của các node con và các liên kết bắt đầu tại 0 từ bên trái). Tại vị trí này vẫn không
tìm thấy mục dữ liệu, vì thế phải đi đến node con tiếp theo. Tại đây bởi vì 64 lớn
hơn 60 nhưng nhỏ hơn 70 nên đi tiếp đến node con 1. Tại thời điểm chúng ta tìm
được mục dữ liệu đã cho với liên kết là 62/64/66.
IV. Tách node
1. Tách node con
Việc thêm vào sẽ trở nên phức tạp hơn nếu gặp phải một node đầy (node có
số mục dữ liệu đầy đủ) trên nhánh dẫn đến điểm thêm vào. Khi điều này xảy ra,
node này cần thiết phải được tách ra. Quá trình tách nhằm giữ cho cây cân bằng.
Loại cây 2-3-4 mà chúng ta đề cập ở đây thường được gọi là cây 2-3-4 top-down
bởi vì các node được tách ra theo hướng đi xuống điểm chèn.
Sinh viên: Đỗ Thị Thùy Dương – Lớp A_K54_CNTT
8
Cây 2-3-4 – Lý thuyết và mô phỏng Nghiên Cứu Khoa Học
Giả sử ta đặt tên các mục dữ liệu trên node bị phân chia là A, B và C. Sau
đây là tiến trình tách (chúng ta giả sử rằng node bị tách không phải là node gốc;
chúng ta sẽ kiểm tra việc tách node gốc sau này):
Một node mới và rỗng được tạo. Nó là anh em với node sẽ được tách và
được đưa vào bên phải của nó.
Mục dữ liệu C được chuyển vào node mới.
Mục dữ liệu B được chuyển vào node cha của node được tách.
Mục dữ liệu A không thay đổi.
Hai node con bên phải nhất bị hủy kết nối từ node được tách và kết nối đến
10
Cây 2-3-4 – Lý thuyết và mô phỏng Nghiên Cứu Khoa Học
Một ví dụ về việc tách node trình bày trên hình 4.4. Một cách khác để mô tả
sự tách node là một 4-node được chuyển đổi sang hai 2-nút.
Chú ý rằng ảnh hưởng của sự tách node là dịch chuyển dữ liệu đi lên về bên
phải. Sự sắp xếp lại này nhằm mục đích giữ cho cây cân bằng.
Hình 4.4: Tách một nút
(i ) Trước khi chèn vào
(ii) Sau khi chèn vào
2. Tách node gốc
Khi gặp phải node gốc đầy tại thời điểm bắt đầu tìm kiếm điểm chèn, kết quả
của việc tách thực hiện như sau:
Node mới được tạo ra để trở thành gốc mới và là cha của node được tách.
Node mới thứ hai được tạo ra để trở thành anh em với node được tách.
Mục dữ liệu C được dịch chuyển sang node anh em mới.
Mục dữ liệu B được dịch chuyển sang node gốc mới.
Mục dữ liệu A vẫn không đổi.
Hai node con bên phải nhất của node được phân chia bị hủy kết nối khỏi nó
và kết nối đến node mới bên phải.
Sinh viên: Đỗ Thị Thùy Dương – Lớp A_K54_CNTT
11
Cây 2-3-4 – Lý thuyết và mô phỏng Nghiên Cứu Khoa Học
Một ví dụ về việc tách node trình bày trên hình 4.5 cho ta thấy rõ hơn quá
trình tách node gốc.
Hình 4.5 Tách node gốc
i) Trước khi thêm vào
ii) Sau khi thêm vào
Hình 4.5 chỉ ra việc tách node gốc. Tiến trình này tạo ra một node gốc mới ở
mức cao hơn mức của node gốc cũ. Kết quả là chiều cao tổng thể của cây được
node con nhiều hơn 1 so với các mục dữ liệu trong một nút.
Việc thêm vào cây 2-3-4 trong bất cứ trường hợp nào thì quá trình cũng bắt
đầu bằng cách tìm kiếm node lá phù hợp.
Nếu không có node đầy nào (node có đủ 3 mục dữ liệu) được bắt gặp trong
quá trình tìm kiếm, việc chèn vào khá là dễ dàng. Khi node lá phù hợp được tìm
thấy, mục dữ liệu mới đơn giản là thêm vào nó. Hình 4.3 trình bày một mục dữ
liệu với khoá 18 được thêm vào cây 2-3-4.
Việc chèn vào có thể dẫn đến phải di chuyển một hoặc hai mục dữ liệu trong
node vì thế các khoá sẽ nằm với trật tự đúng sau khi mục dữ liệu mới được thêm
vào. Trong ví dụ này số 23 phải được đẩy sang phải để nhường chỗ cho 18.
Sinh viên: Đỗ Thị Thùy Dương – Lớp A_K54_CNTT
14
Cây 2-3-4 – Lý thuyết và mô phỏng Nghiên Cứu Khoa Học
Hình 4.3 Chèn vào không làm tách cây
(i) trước khi chèn vào
(ii) sau khi chèn vào
VI. Tính hiệu quả của Cây 2-3-4
Trong cây đỏ-đen node trên mỗi mức phải được duyệt trong quá trình tìm
kiếm, hoặc tìm kiếm một node đã tồn tại hoặc chèn vào một node mới. Số lượng
các mức trong cây đỏ-đen (cây nhị phân cân bằng) là log
2
(N+1), vì thế thời gian
tìm kiếm là tỷ lệ với giá trị này.
Một node cũng phải được duyệt trong cây 2-3-4, nhưng cây 2-3-4 thì ngắn
hơn (có ít mức hơn) so với cây đỏ-đen khi số lượng các mục dữ liệu như nhau.
Xem hình 4.8, ở đây cây 2-3-4 có ba mức còn cây đỏ-đen có năm mức.
Cụ thể hơn, trong cây 2-3-4 có đến 4 con trên một nút. Nếu mỗi node là đầy,
chiều cao của cây phải tỷ lệ với log
4
(N). Logarith với cơ số 2 và cơ số 4 khác nhau
VII. Chuyển từ cây 2-3-4 sang cây đỏ đen.
Một cây 2-3-4 có thể được chuyển sang cây đỏ-đen bằng cách áp dụng các
luật sau:
Chuyển đổi bất kỳ 2-node ở cây 2-3-4 sang node đen ở cây đỏ-đen.
Chuyển đổi bất kỳ 3-node sang node con C (với hai con của chính nó) và
node cha P (với các node con C và node con khác). Không có vấn đề gì ở đây khi
một mục trở thành node con và mục khác thành node cha. C được tô màu đỏ và P
được tô màu đen.
Chuyển đổi bất kỳ 4-node sang node cha P và cả hai node con C1, C2 màu
đỏ.
Hình 4.7 trình bày các chuyển đổi này. Các node con trong các cây con được
tô màu đỏ; tất cả các node khác được tô màu đen.
Hình 4.8 trình bày cây 2-3-4 và cây đỏ-đen tương ứng với nó bằng cách áp
dụng các chuyển đổi này. Các đường chấm xung quanh các cây con được tạo ra từ
Sinh viên: Đỗ Thị Thùy Dương – Lớp A_K54_CNTT
16
Cây 2-3-4 – Lý thuyết và mô phỏng Nghiên Cứu Khoa Học
3-node và 4-nút. Các luật của cây đỏ-đen tự động thoả mãn với sự chuyển đổi này.
Kiểm tra rằng: Hai node đỏ không bao giờ được kết nối, và số lượng các node đen
là như nhau ở mọi đường dẫn từ gốc đến lá (hoặc node con null).
Bạn có thể nghĩ rằng một 3-node ở cây 2-3-4 là tương đương với node cha có
một node con màu đỏ ở cây đỏ-đen, và một 4-node là tương đương với node cha
có hai node con đỏ. Điều này nghĩa là node cha màu đen với node con đen ở cây
đỏ-đen không biểu diễn một 3-node ở cây 2-3-4; nó chỉ biểu diễn một 2-node với
node con 2-node khác. Tương tự, một node cha màu đen với 2 con màu đen không
biểu diễn cho 4-nút.
Hình 4.7 Chuyển đổi từ cây 2-3-4 sang cây đỏ-đen
Sinh viên: Đỗ Thị Thùy Dương – Lớp A_K54_CNTT
17
Cây 2-3-4 – Lý thuyết và mô phỏng Nghiên Cứu Khoa Học
19
Cây 2-3-4 – Lý thuyết và mô phỏng Nghiên Cứu Khoa Học
thể trở thành node cha. Tùy thuộc vào node nào được chọn, node con sẽ là node
con bên trái hoặc node con bên phải, và độ dốc của đường thẳng nối node cha và
node con sẽ ở bên trái hoặc bên phải.
Cả hai sự sắp xếp là hợp lệ; Tuy nhiên, chúng không tham gia để cân bằng
cây. Chúng ta hãy xem xét tình huống trong ngữ cảnh lớn hơn.
Hình 4.10-i trình bày cây 2-3-4 còn hình 4.10-ii, và 4.10-iii trình bày các cây
đỏ-đen tương đương được suy ra từ cây 2-3-4 bằng cách áp dụng các luật chuyển
đổi ở trên. Sự khác nhau giữa chúng là cách lựa chọn hai mục dữ liệu nào trong 3-
node để tạo node cha; Trong hình ii, 80 là node cha, trong hình iii, 70 là node cha.
Mặc dù cách sắp xếp này là hợp lệ, bạn có thể thấy rằng cây trong hình ii là
không cân bằng trong khi cây trong hình iii là cân bằng. Với cây đỏ-đen được cho
trong hình ii, chúng ta sẽ quay nó sang phải (và thực hiện việc chuyển đổi hai
màu) để cân bằng nó. Điều đáng ngạc nhiên sự quay này cho kết quả chính xác
giống như cây trong hình iii.
Sinh viên: Đỗ Thị Thùy Dương – Lớp A_K54_CNTT
20
Cây 2-3-4 – Lý thuyết và mô phỏng Nghiên Cứu Khoa Học
Hình 4.10: 3-node và phép quay
CHƯƠNG II. MÔ PHỎNG THUẬT TOÁN TRÊN CÂY 2-3-4
I. Tổng quan về mô phỏng thuật toán.
1. Khái niệm thuật toán và các đặc trưng của thuật toán.
Thuật toán là một dãy hữu hạn các thao tác được sắp xếp theo một trình tự
xác định sao cho sau khi thực hiện dãy các thao tác ấy, từ Input của bài toán nhận
được Output cần tìm.
Các thuật toán có một số tính chất chung, đó là:
Đầu vào (Input): Một thuật toán có các giá trị đầu vào từ một
tập xác định.
Đầu ra (Output): Từ mỗi tập giá trị đầu vào, thuật toán sẽ tạo
kiểm tra được hiệu năng của hệ thống.
Bên cạnh việc giúp người sử dụng hiểu hơn về hệ thống, mô phỏng thuật
toán còn được dùng để giúp thực hiện quá trình dò lỗi dễ dàng hơn.
II. Các yêu cầu về mô phỏng thuật toán.
Phản ánh đúng nội dung của thuật toán
Có thể thực hiện giải thuật theo hình thức từng bước một để
theo dõi giá trị của các biến và các đối tượng trong bài toán.
Sinh viên: Đỗ Thị Thùy Dương – Lớp A_K54_CNTT
22
Cây 2-3-4 – Lý thuyết và mô phỏng Nghiên Cứu Khoa Học
Có hình ảnh động (có thể có âm thanh khi cần) để mô tả trực
quan quá trình thi hành của thuật toán.
Có thể kiểm định thuật toán trong trường hợp ngẫu nhiên,
trường hợp xấu nhất, trường hợp tốt nhất.
Tạo các mức độ sử dụng khác nhau cho người học.
6.Cấu trúc tổng quát của mô phỏng.
INPUT GIẢI THUẬT OUTPUT
III. Quy trình thiết kế nhiếm vụ mô phỏng thuật toán.
Sơ đồ quy trình thiết kế nhiệm vụ mô phỏng thuật toán như sau:
Sinh viên: Đỗ Thị Thùy Dương – Lớp A_K54_CNTT
23
- Tự động
Visual FoxPro là một trong các ngôn ngữ lập trình quản trị cơ sơ dữ liệu.
Visual FoxPro đã được nhiều thế hệ những người lập trình Việt Nam sử dụng viết
các trình ứng dụng quản lý điểm, quản lý tài chính, quản lý bán hàng… từ những
phiên bản đầu tiên của FoxPro for DOS, đến các phiên bản FoxPro for Windows
và ngôn ngữ lập trình Visual FoxPro như hiện tại. Ngôn ngữ Visual FoxPro dễ sử
dụng, đã được dạy trong nhiều trường phổ thông Việt Nam.
Visual FoxPro ngoài tính năng cung cấp các chức năng giúp người lập trình
có thể tạo ra các hệ quản trị cơ sở dữ liệu, nó còn cung cấp cho chúng ta tập hợp
các lệnh, các hàm giúp người lập trình có thể lập trình hướng đối tượng trên đó.
Lập trình hướng đối tượng trong Visual FoxPro là một hướng xây dựng và sử
dụng ngôn gữ lập trình bằng các phân loại các đối tượng thành ra các lớp, điều
khiển chương trình thông qua các tác vụ của các đối tượng. Lập trình hướng đối
tượng tạo điều kiện cho người lập trình sắp xếp, tổ chức các môđun trong chương
trình một cách khoa học, chặt chẽ. Trên cơ sở đó tiết kiệm thời gian viết mã lệnh
và tạo thuận lợi cho công tác bảo trì phần mềm.
Ngoài ra, Visual FoxPro còn cung cấp các chức năng giúp cho người lập
trình có thể xây dựng giao diện phần mềm thân thiện và dễ sử dụng. Bên cạnh đó,
nó còn cung cấp cho chúng ta một số lớp đồ họa, giúp cho việc xây dựng các hình
ảnh mô phỏng được thuận tiện, đơn giản, tốn ít thời gian, mà không cần phải viêt
mã lệnh.
2. Phân tích và thiết kế thuật toán mô phỏng Cây 2-3-4.
Sinh viên: Đỗ Thị Thùy Dương – Lớp A_K54_CNTT
24
Cây 2-3-4 – Lý thuyết và mô phỏng Nghiên Cứu Khoa Học
a. Phân tích.
Các node trong Cây 2-3-4 được sắp xếp theo giá trị các khóa của chúng –
giống cây tìm kiếm nhị phân.
Các giá trị khóa được sinh ra một cách ngẫu nhiên, nhiều lần.
Mỗi node có thể là hình chữ nhật, có hiện thị các mục giá trị. Do đó cần xây
dựng một lớp riêng cho các node gọi là lớp “node234”