1. Trang chủ
  2. » Luận Văn - Báo Cáo

TIỂU LUẬN Cấu trúc dữ liệu và giải thuật ĐẾ TÀI : Nghiên cứu và cài đặt chương trình thực hiện duyệt cây nhị phân, cây tổng quát và rừng theo ba phương pháp ( các cây được lưu trữ móc nối trong máy )

32 1,3K 6

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

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 32
Dung lượng 400,84 KB

Nội dung

***TRƯỜNG ĐẠI HỌC KINH TẾ QUỐC DÂN***VIỆN CÔNG NGHỆ THÔNG TIN KINH TẾ TIỂU LUẬN MÔN HỌC: CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT ĐẾ TÀI : Nghiên cứu và cài đặt chương trình thực hiện duyệt cây n

Trang 1

***TRƯỜNG ĐẠI HỌC KINH TẾ QUỐC DÂN***

VIỆN CÔNG NGHỆ THÔNG TIN KINH TẾ

TIỂU LUẬN MÔN HỌC:

CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT

ĐẾ TÀI : Nghiên cứu và cài đặt chương trình thực hiện duyệt cây nhị

phân, cây tổng quát và rừng theo ba phương pháp ( các cây được lưu trữ

móc nối trong máy )

Giảng viên hướng dẫn: ThS Lưu Minh Tuấn

Lớp tín chỉ: Cấu trúc Dữ liệu và Giải thuật (215)_2

****** HÀ NỘI, THÁNG 5-2016******

Trang 2

DANH SÁCH THÀNH VIÊN TRONG NHÓM

Trang 3

MỤC LỤC

- Lời nói đầu

- Chương I: Giới thiệu phát biểu đề tài

- Chương II: Nội dung về đề tài nghiên cứu

PHẦN 1: Tổng quan lý thuyết

I cấu trúc cây:

1.định nghĩa , khái niệm:

2.các khái niệm trên cây:

II các dạng cây thường gặp

1 cây nhị phân

1.1 ĐN, phân loại , tính chất

1.2 Biểu diễn cây nhị phân trong máy tính

1.2.1 Lưu trữ kế tiếp đối với cây nhị phân

1.2.2 Lưu trữ móc nối đối với cây nhị phân

2 Cây tổng quát, rừng

Biểu diễn cây tổng quát bằng cây nhị phân tương đươngIII Các phương pháp duyệt cây

1 Định nghĩa

2 Các phương pháp duyệt cây

2.1 Duyệt cây nhị phân theo 3 phương pháp

2.2.1 Duyệt theo thứ tự trước(TTT)2.2.2 duyệt theo thứ tự giữa(TTG)2.2.3 duyệt theo thứ tự sau(TTS)2.2 Duyệt cây tổng quát, rừng theo 3 phương pháp2.2.1 Duyệt cây tổng quát

2.2.2 Duyệt rừng PHẦN 2:Cài đặt thử nghiệm chương trình

- Chương III: dánh giá kết quả nghiên cứu và kết luận

- Các tài liệu tham khảo

Trang 4

LỜI NÓI ĐẦU

So với tất cả các ngành nghề và các lĩnh vực thì có thể nói công nghệ thông tin là một ngành động, nó luôn luôn phát triển với tốc độ nhanh chóng và ngày càng khẳng định vai trò quan trọng của mình trong việc đáp ứng nhu cầu học tập, làm việc và giải trí ngày càng cao của con người Khi công nghệ phát triển đến một trình độ nhất định thì nhu cầu về vấn đề bảo mật giữ liệu được đặt

ra và đề giải quyết vấn đề đó thì lý thuyết về cây được áp dụng và giữ vai trò quan trọng trong việc mã hóa dữ liệu, tổ chức dữ liệu trong máy tính hoạt động nhanh và hiệu quả hơn

Trong khoa học máy tính, cây là một cấu trúc dữ liệu được sử dụng rộng rãi goomg một tập hợp các nút được liên kết với nhau theo quan hệ cha con Cây trong cấu trúc dữ liệu đầu tiên là mô phỏng (hay nói cách khác là sự sao chép ) của cây ( có gốc ) trong lý thuyết đồ thị Hầu như mọi khái niệm trong cây của lý thuyết đồ thị đều được thể hiện trong cấu trúc dữ liệu Tuy nhiên cây trong cấu trúc dữ liệu đã tìm được ứng dụng phong phú và hiệu quả trong nhiều giải thuật Khi phân tích các giải thuật trên cấu trúc dữ liệu cây, người ta vẫn thường vẽ ra các cây tương ứng trong lý thuyết đồ thị

Trong bài tiểu luận này chúng em xin trình bày về : khái quát về cây nhị phân, cây tổng quát, rừng; các thuật toán cơ bản, code cài đặt các thuật toán cơ bản vê cây nhị phân, cây tổng quát và rừng

Em xin chân thành cảm ơn thầy Lưu Minh Tuấn đã nhiệt tình hướng dẫn và đào tạo điều kiện cho chúng em hiểu biết nhiều thêm Dù đã cố gắng hết sức nhưng bài của chúng em vẫn còn nhiều sai sót rất ong nhận được góp ý từ thầy ạ

để bài làm có thể được hoàn thiện hơn Em cảm ơn thầy ạ

Trang 5

CHƯƠNG I: GIỚI THIỆU PHÁT BIỂU ĐỀ TÀI

1 ĐỀ TÀI

Nghiên cứu và cài đặt chương trình thực hiện duyệt cây nhị phân, cây tổng quát

và rừng theo ba phương pháp ( các cây được lưu trữ móc nối trong máy )

 NỘI DUNG

Trình bày lý thuyết liên quan đến đề tài CTDL & GT sử dụng để cài đặt

Cây nhị phân được lưu trữ bằng phương pháp móc nối

Cây tổng quát được biểu diễn bằng cây nhị phân tương đương và được lưu trữ bằng phương pháp móc nối

Duyệt cây nhị phân theo ba phương pháp

Duyệt cây tổng quát theo ba phương pháp Duyệt rừng theo ba phương phápKết quả cần đưa ra danh sách các nút duyệt theo từng phương pháp trên mỗi cây(rừng)

2 PHẠM VI

Bài viết này chung ta sẽ nghiên cứu trong phạm vi kiến thức liên quan đến cây nhị phân, cây tổng quát và rừng:thong tin, cách duyệt cây nhị phân, cây tổng quát, rừng theo ba phương pháp và biết cách cài đặt chương trình duyệt cây

3 ĐỐI TƯỢNG

Bài viết này hướng đến những người muốn tìm hiểu về môn Cấu trúc dữ liệu và giải thuật nói chung, duyệt cây nhị phân, cây tổng quát và rừng theo ba phương pháp nói riêng

4 MỤC ĐÍCH CỦA VIỆC NGHIÊN CỨU

Cùng với sự phát triển của khoa học kỹ thuật, công nghệ thông tin nói chung và

bộ môn cấu trúc dữ liệu và giải thuật nói riêng ngày càng được ứng dụng rộng rãi trong nhiều lĩnh vực Với một cơ sở dữ liệu khổng lồ, việc đưa ra một

phương pháp nhằm giải quyết vấn đề tìm kiếm dữ liệu có hiệu quả và nhanh

Trang 6

nhất luôn được sự qua tâm của các nhà phát triển phần mềm Thông thường dữ liệu được biểu diễn dưới dạng danh sách lien kết Việc truy cập dữ liệu chưa đạt hiệu quả cao Sử dụng cấu trúc dữ liệu dạng cây là một giải pháp làm tăng hiệu suất trong các thao tác sử lý Chính vì vậy mục đích của việc nghiên cứu về cây

và các phương pháp duyệt cây sẽ giúp cho mọi người lưu trữ thong tin một cách nhanh và logic hơn, ngoài ra còn giúp các bạn thao tác xử lý nhanh tìm kiếm dễ dàng hơn những thong tin cần thiết trong kho dữ liệu của mình

Trang 7

CHƯƠNG II: NỘI DUNG ĐỀ TÀI NGHIÊN CỨU

PHẦN 1: TỔNG QUAN LÍ THUYẾT

 Cấu trúc một thư viện

+)Sơ đồ cấu trúc mục lục một quyển sách:

2.32

2.1

C3

3 C1

Trang chủ

Vănhóa Xã h iội

web

Trang 8

1.2-Một số định nghĩa về cây

Định nghĩa 1: Một cây là tập hợp hữu hạn các nút trong đó có một nút đặc biệt

gọi là gốc (root) Giữa các nút có một quan hệ phân cấp gọi là "quan hệ cha con"

Định nghĩa đệ quỵ:

-Mỗi nút là một cây

- n là nút và n1, n2, , nk là gốc của các cây C1,C2 ,Ck; (không có nút chung)

-n là cha của các nút n1,n2, ,nk thì có một cây mới C

2-Một số khái niệm cơ bản:

 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

Độ dài đường đi từ gốc đến nút x: là số nhánh cần đi qua kể từ gốc đến x

Độ dài của đường đi: là số nút trên đường đi -1

Độ dài đường đi tổng của cây :

Trong đó Px là độ dài đường đi từ gốc đến X

Độ dài đường đi trung bình : PI = PT/n (n là số nút trên cây T)

Trang 9

- Mức của các nút trong cây trên:

Mức của các nút T5,T6,T7,T8,T9,T10 bằng 3

Mức của các nút T11,T12,T13,T14,T15,T16 bằng 4

Chiều dài đường đi tới nút T3 là 2

 Rừng cây: là tập hợp nhiều cây trong đó thứ tự các cây là quan

trọng.Một cây khác rỗng khi mất gốc sẽ trở thành một rừng

T14 T13

T12 T11

Trang 10

II Các dạng cây thường gặp

BC

Trang 11

1 Cây nhị phân( binary tree )

1.1 Định nghĩa, phân loại, tính chất

(*) Phân loại cây nhị phân

 Cây nhị phân lệch trái

 Cây nhị phân lệch phải

ED

CB

Trang 12

 Cây nhị phân zic-zăc

BB

D

A

CB

Trang 13

(*) Tính chất:

- Số nút tối đa ở 1 mức i trên cây nhị phân là : 2i−1 ( i>=1)-Số nút tối đa trên cây nhị phân có chiều cao h là: 2h-1 (h>=1)

1.2 Biểu diễn cây nhị phân trong máy tính

1.2.1 Lưu trữ kế tiếp đối với cây nhị phân

* Phương pháp: Ta có thể sử dụng một vecto V có n phần tử để lưu trữ cây nhị

phân đầy đủ có n nút ( giả sử mỗi nút của cây được lưu trữ hết 1 phần tử của vecto V) theo nguyên tắc như sau:

- Đánh số thứ tự cho các nút của cây từ 1,2 ,….,n bằng cách xuất phát từ nút gốctheo nguyên tắc từ trên xuống, từ phảitrái Hết mức này đến mức khác

 lưu ý: Nếu nút cha có chỉ số là i thì 2 nút con chỉ số là 2i và 2i+1

Ngược lại nếu biết chỉ số nút con là j thì ta xác định được chỉ số của nút cha là

số nguyên dưới của j/2 ( j div 2)

-Phần tử Vi của vecto V sẽ lưu trữ nút có số thứ tự (chỉ số) i tương ứng

(*) Ví dụ 1: thực hiện lưu trữ kế tiếp cây nhị phân sau:

A

CB

Trang 14

V[1] V[2] V[3] V[4] V[5] V[6] V[7]

1.2.2 Lưu trữ móc nối đối với cây nhị phân

Ta có thể lưu trữ cây nhị phân bằng danh sách móc nối cấu trúc của 1 nút như sau:

Trong đó:

+ Dulieu: lưu trữ thong tin của nút

+ Trotrai, Trophai: là các trường con trỏ tương ứng trỏ tới nút gốc của cây con trái và cây con phải của nút

Hình ảnh lưu trữ giống với hình dáng tự nhiên của cây

* ví dụ 2: Biểu diễn cây nhị phân ở ví dụ 1 trên theo phương pháp móc nối:

GF

ED

A

Trang 15

Gg

2 Cây tổng quát, rừng :

2.1.Biểu diễn ( lưu trữ) cây tổng quát bằng cây nhị phân tương đương (NPTĐ)

(*) Phương pháp: Để lưu trữ cây tổng quát bằng cây nhị phân tương

đương ta coi mọi nút trên cây tổng quát nếu có thì chỉ có 2 đặc điểm: + Nút con cả ( cực trái)

+ Nút em kế cận phải

 Lúc đó cây nhị phân biểu diễn cây tổng quát này mà ta gọi là cây nhị phân tương đương được xác định như sau:

+ Nút gốc cây NPTĐ là nút gốc của cây tổng quát T;

+ Nút con trái của 1 nút trên cây NPTĐ là nút con cả của nút

đó trên cây tổng quát

+ Nút con phải của 1 nút trên cây NPTĐ là nút em kế cận phải của nút đó trên cây tổng quát

ED

A

IG

FE

H

K

M

Trang 16

Nút C= + con cả: G

+ em kế cận phải: D

Nút M= + con cả:Ф

+ em kế cận phải:Ф

*Về cấu trúc lưu trữ: cây NPTĐ được tổ chức gồm các nút, mỗi nút có

quy cách như sau:

Conca Dulieu Emkecan

+ Dulieu: biểu diễn thông tin của nút

+ Conca, Emkecan: là các trường con trỏ tương ứng trỏ tới nút con cả

và nút em kế cận phải của nút đó trên cây tổng quát

 Cây này được lưu trữ móc nối trong máy Nút gốc trỏ bởi con trỏ T

2.2 Biểu diễn rừng T bằng cây nhị phân tương đương:

Rừng T gồm các cây T1,T2,T3… ,Tk được biểu diễn bằng cây NPTĐ theo phương pháp giống với cây tổng quát chỉ khác ở các điểm sau:

+ Coi nút gốc của T2 là nút em kế cận phải của cây T1,…

+ Nút gốc của cây NPTĐ là nút gốc của cây T1

+ Các nút thuộc cây con trái của cây NPTĐ là các nút thuộc T1

Các nút thuộc cây con phải của cây NPTĐ là các nút thuộc các cây còn lại T2,…,Tk

II Các phương pháp duyệt cây

1-Định nghĩa

Trang 17

Duyệt một cây là một trình tự làm việc với các nút trong cây,trình

tự này giống như một chuyến đi qua các nút trên cây theo kiểu liên kếtcha- con Các giải thuật khác nhau về thứ tự viếng thăm giữa một nút cha và các nút con

2.các phương pháp duyệt cây

2.1 Đối với cây nhị phân

2.1.1 Duyệt theo thứ tự trước (TTT)

 Ý tưởng:

- Thăm gốc T

- Duyệt toàn bộ cây con trái theo TTT

- Duyệt toàn bộ cây con phải theo TTT

Trang 18

Call Duyet_TTG(trophai(T)); End;

Return;

2.1.3 Duyệt theo thứ tự sau (TTS):

 Ý tưởng:

- Duyệt toàn bộ cây con trái theo TTS

- Duyệt toàn bộ cây con phải theo TTS

Trang 19

Begin

Call Duyet_TTS( trotrai(T));

Call Duyet_TTS( trophai(T));

Write(dulieu(T));

End;

Return;

 Ví dụ: duyệt cây nhị phân sau theo 3 phương pháp:

- Duyệt theo TTT: A,B,D,E,G,I,H,C,F

- Duyệt theo TTG: D,B,I,G,E,H,A,C,F

- Duyệt theo TTS: D,I,G,H,E,B,F,C,A

2.2.Duyệt cây tổng quát, rừng theo 3 phương pháp

2.2.1 Duyệt cây tổng quát

A

CB

FE

D

HG

I

Trang 20

Phép duyệt cây tổng quát cũng được đặt ra tương tự như đối với cây nhị phân Tuy nhiên có một số điều cần phải xem xét thêm khi định nghĩa phép duyệt, đó là:

- Sự nhất quán về thứ tự các nút được thăm giữa phép duyệt cây tổng quát và phép duyệt cây nhị phân tương đương của nó

- Sự nhất quán giữa định nghĩa phép định nghĩa phép duyệt cây tổng quát với định nghĩa phép duyệt cây nhị phân Vì cây nhị phân cũng có thể coi là cây tổng quát và ta có thể áp dụng định nghĩa phép duyệt cây tổng quát cho cây nhị phân

Ta có thể xây dựng được định nghĩa của phép duyệt cây tổng quát T như sau

 Duyệt theo thứ tự trước

a) Nếu T rỗng thì không làm gì

b) Nếu T khác rỗng thì

Thăm gốc của T

Duyệtcác cây con thứ nhất T1 của gốc của cây T theo thứ tự trước

Duyệt các cây con còn lại T2, T3, ,Tn của gốc T theo thứ tự trước

 Duyệt theo thứ tự giữa

a) Nếu T rỗng thì không làm gì

b) Nếu T khác rỗng thì

Duyệtcác cây con thứ nhất T1 của gốc của cây T theo thứ tự giữa

Thăm gốc của T

Duyệt các cây con còn lại T2, T3, ,Tn của gốc T theo thứ tự giữa

 Duyệt theo thứ tự sau

a) Nếu T rỗng thì không làm gì

b) Nếu T khác rỗng thì

Duyệtcác cây con thứ nhất T1 của gốc của cây T theo thứ tự sau

Duyệt các cây con còn lại T2, T3, ,Tn của gốc T theo thứ tự sau

Trang 21

E E

Trang 22

Duyệt rừng Sau theo 3 phương pháp:

LÀM:

Biến đổi rừng trên thành cây tổng quát bằng cách đưa thêm 1 nút “gốc giả”(Ф) trở thành nút cha của các nút gốc A,1,X

Ta được kết quả

- Duyệt theo TTT: Ф,A,B,E,C,D,1,2,3,X

- Duyệt theo TTG: B,A,C,E,D,Ф,2,1,3,X

- Duyệt theo TTS: B,E,C,D,A,2,3,1,X,Ф

X1

A

32

DC

B

E

Trang 23

procedure NhapCayNP(var T:Tree; a:MyArray; n:integer);

var key, keyLeft, keyRight:typeKey;

Trang 25

if T=nil then write('Cay Rong');else

Trang 26

2.DUYỆT CÂY TỔNG QUÁT THEO 3 PHƯƠNG PHÁP

Trang 28

3.DUYỆT RỪNG THEO 3 PHƯƠNG PHÁP

Trang 29

end;

procedure DuyetTruoc(T:pointer);var j,i:integer;

Trang 30

DuyetSau(T^.child[i]); end;

Trang 31

CHƯƠNG III: ĐÁNH GIÁ KẾT QUẢ NGHIÊN CỨU VÀ KẾT

LUẬN

Sau thời gian tìm hiểu và thực hiện nghiên cứu bài tiểu luận về đề tài

“Nghiên cứu và cài đặt chương trình thực hiện duyệt cây nhị phân, cây tổng quát

và rừng theo ba phương pháp ( các cây được lưu trữ móc nối trong máy )” chúng em đã hoàn thành một số yêu cầu cơ bản về những nội dung sau:

Ưu điểm:

 Trình bày được những kiến thức cơ bản liên quan đến cây nhị phân,cây tổng quát

 Duyệt cây nhị phân,cây tổng quát bằng 3 phương pháp(TTT,TTG,TTS)

& biểu diễn cây tổng quát bằng cây nhị phân tương đương

 Cài đặt thử nghiệm chương trình ( bằng pascal)

 Xây dựng được chương trình giải bài toán tìm kiếm trên đồ thị bằng cách sử dụng các thuật toán duyệt cây cơ bản

Nhược điểm:

Mặc dù chúng em đã có nhiều cố gắng và tìm hiểu tuy nhiên kiến thức còn

nhiều hạn chế nên bài tiểu luận còn nhiều thiếu sót như:chương trình còn có lỗi

về nhập liệu ,cần xây dựng hoàn thiện hơn các chức năng để người sử dụng có thể theo dõi kết quả các bước tìm kiếm và duyệt cây hơn

Trên đây là bài tiểu luận và một số kết quả đã đạt được cũng như thiếu sót trong quá trình làm bài kính mong nhận được những góp ý và nhận xét của thầy

để bài tiểu luận của chúng em được hoàn thiện hơn

Chúng em xin chân thành cảm ơn!

Trang 32

CÁC TÀI LIỆU THAM KHẢO

1 Bài giảng Cấu trúc Dữ liệu và giải thuật- PGS.TS.Đặng Minh Ất-ThS.Lưu

Ngày đăng: 05/05/2016, 10:07

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w