1. Trang chủ
  2. » Giáo án - Bài giảng

Toán Ứng Dụng Cây Và Các Ứng Dụng

50 363 0

Đ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 50
Dung lượng 2,95 MB

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

Nội dung

Cách tạo cây khung của đồ thị Trong đồ thị liên thông G, chúng ta thực hiện loại bỏ một cạnh nằm trên một chu trình nào đó sẽ tạo ra đồ thị G' vẫn có tính liên thông.. Thực hiện tiếp v

Trang 1

Bài 2: BÀI TOÁN ĐẾM VÀ BÀI TOÁN TỒN TẠI

Bài 3: LÝ THUYẾT ĐỒ THỊ

Bài 4: BIỂU DIỄN ĐỒ THỊ VÀ CÁC THUẬT TOÁN TÌM KIẾM

Bài 5: CÂY VÀ CÁC ỨNG DỤNG

Trang 2

1.1 Giới thiệu 1.2 Định nghĩa 1.3 Các tính chất cơ bản

2 CÂY KHUNG CỦA ĐỒ THỊ 2.1 Giới thiệu

2.2 Định nghĩa 2.3 Bài toán tìm cây khung ngắn nhất 2.4 Thuật toán Kruskal

2.5 Thuật toán Prim

3 CÂY PHÂN CẤP 3.1 Giới thiệu 3.2 Định nghĩa 3.3 Duyệt cây nhị phân 3.4 Một số ứng dụng của cây

1.1 Giới thiệu 1.2 Định nghĩa 1.3 Các tính chất cơ bản

2 CÂY KHUNG CỦA ĐỒ THỊ 2.1 Giới thiệu

2.2 Định nghĩa 2.3 Bài toán tìm cây khung ngắn nhất 2.4 Thuật toán Kruskal

2.5 Thuật toán Prim

3 CÂY PHÂN CẤP 3.1 Giới thiệu 3.2 Định nghĩa 3.3 Duyệt cây nhị phân 3.4 Một số ứng dụng của cây

Trang 3

- Cây là một dạng của đồ thị được nhà toán học Anh,

Arthur Cayley, phát biểu và sử dụng từ năm 1857 cho

việc xác định những cấu trúc hợp chất hóa học.

Arthur Cayley

(1821-1895)

isobutan

Trang 4

- Sau đó cây được sử dụng nhiều trong khoa học máy tính

để xây dựng các thuật toán hiệu quả; tính toán chi phí

xây dựng mạng máy tính; mã hóa dữ liệu;

Trang 5

Định nghĩa Cây

Cho G=(V,E) là đồ thị vô hướng G được gọi là một C ây (tree) nếu và nếu G liên thông không có chu trình đơn

Trang 7

Phát biểu 1: Với cây T có n đỉnh, các phát biểu dưới đây

là tương đương:

1- T liên thông và có n-1 cạnh.

2- T không có chu trình đơn và có n-1 cạnh

3- Giữa hai đỉnh bất kỳ có đúng một đường đi đơn.

4- T liên thông và mỗi cạnh là một cầu.

B

G D

E

F A

C

H

Trang 8

Phát biểu 2: Với cây T là cây có n đỉnh, T có ít nhất là 2

E

H

Trang 9

Cách tạo cây khung của đồ thị

Trong đồ thị liên thông G, chúng ta thực hiện loại bỏ một

cạnh nằm trên một chu trình nào đó sẽ tạo ra đồ thị G'

vẫn có tính liên thông

Thực hiện tiếp việc loại bỏ các cạnh ở các chu trình khác

cho đến khi đồ thị T không còn chu trình nhưng vẫn liên

thông thì chúng ta thu được một cây nối tất cả các đỉnh của G - gọi là cây khung của đồ thị

Trang 10

Ví dụ: Cho đồ thị G trong hình dưới đây, hãy thực hiện

tìm các cây khung của đồ thị G.

B

G D

E

F A

C

H

Trang 11

Định nghĩa cây khung của đồ thị

Cho G=(V,E) là đồ thị vô hướng, liên thông Cây T=(V,F)

với F E được gọi là cây khung của đồ thị G.

B

G D

E

F A

C

H

Trang 12

Số cây khung của một đồ thị đầy đủ K n - có n đỉnh - được tính theo công thức là n n-2

Một đồ thị đầy đủ có 5 đỉnh sẽ có số cây khung là 5 3 = 125

Vậy làm thế nào để tìm được cây khung có độ dài ngắn

nhất cho đồ thị có trọng số?

B

D E

F A

Trang 13

Cho G=(V,E) là đồ thị vô hướng, liên thông có trọng số

Độ dài m(T) của cây khung T là tổng trọng số các cạnh

của cây:

Bài toán:

Trong số tất cả các cây khung của đồ thị G, hãy tìm ra cây

khung có độ dài ngắn nhất - gọi là cây khung ngắn nhất của đồ thị

Trang 14

Các bài toán thực tế

1- Bài toán nối mạng máy tính:

Với mạng máy tính gồm n máy đánh số từ 1 đến n Biết

chi phí nối máy i với máy j là m(i,j) (chi phí phụ thuộc vào

độ dài cáp nối cần sử dụng) Hãy tìm cách nối mạng sao

cho tổng chi phí là nhỏ nhất

2- Bài toán xây dựng hệ thống đường sắt:

Chúng ta muốn xây dựng một hệ thống đường sắt nối n

thành phố để hành khách từ một thành phố có thể đi đến

bất kỳ các thành phố còn lại Yêu cầu thiết kế để chi phí

xây dựng hệ thống đường đi là nhỏ nhất.

Trang 15

- Đồ thị G=(V,E), liên thông, có trọng số

- Cây khung T=(V,F), với F E

Thuật toán Kruscal tìm cây khung ngắn nhất

Until |F|=n-1 // số phần tử của tập F bằng (n-1)

Trang 16

Ví dụ:

Tìm cây khung ngắn nhất

của đồ thị G trong hình bên.

Giải:

Đặt tập là F= ø (F-là tập cạnh của cây khung ngắn nhất)

Sắp xếp các cạnh của đồ thị G theo trọng số tăng dần:

{(v 3 , v 5 ), (v 4 , v 6 ), (v 4 , v 5 ), (v 5 , v 6 ), (v 3 , v 4 ), (v 1 , v 3 ),

(v 2 , v 3 ), (v 2 , v 4 ), (v 1 , v 2 )}.

Trang 17

Ví dụ: (tiếp theo)

Thêm vào cạnh (v 3 , v 5 ) vào F; |F|=1

Xét lực lượng của F, |F|<5, nên tiếp tục quá trình xét nạp:

- nạp cạnh (v4, v6) vào F; |F|=2

- nạp cạnh (v4, v5) vào F; |F|=3

- không nạp cạnh (v5, v6) vào F vì tạo chu trình.

- không nạp cạnh (v3, v4) vào F vì tạo chu trình.

- nạp cạnh (v1, v3) vào F; |F|=4

- nạp cạnh (v2, v3) vào F; |F|=5 Kết thúc vì |F|=5

Trang 19

Ví dụ:

Tìm cây khung ngắn nhất của đồ thị G trong hình dưới.

Trang 20

- Thuật toán Kruskal không đạt hiệu quả cao trong việc tìm

cây khung ngắn nhất cho đồ thị vì số bước thực hiện

được tính theo số cạnh của đồ thị.

- Thuật toán Prim được đánh giá có hiệu quả hơn với

những đồ thị có số cạnh m > n(n-1)/2 Thuật toán được

thực hiện theo cách duyệt các đỉnh của đồ thị.

Trang 21

- Đồ thị G=(V,E), liên thông, có trọng số

- Cây khung T=(V,F), với F E

Thuật toán Prim tìm cây khung ngắn nhất

Trang 22

8

8

Trang 23

Ví dụ 1: Lấy đỉnh xuất phát là A Bảng thực hiện như sau:

Trang 24

Ví dụ 1: Lấy đỉnh xuất phát là A

1 (A,C) đầu tiên cạnh (A,C) được chọn vì có trọng số

nhỏ nhất khi xét tập hợp các cạnh liên thuộc đỉnh A gồm: (A,C) và (A,B)

2 (C,D),(A,C) cạnh (C,D)-cạnh tiếp theo được chọn vì có

trọng số nhỏ nhất khi xét tập hợp các cạnh liên thuộc với A, C gồm: (A,B), (C,B), (C,D)

Loại (A,D) vì tạo chu trình

cạnh (A,D) không được chọn vì tạo chu trình với 2 cạnh (C,D) và (A,C) đã chọn

4 (C,D),(A,C) cạnh (B,C) là cạnh tiếp theo được chọn vì có

trọng số nhỏ nhất (xét dãy các cạnh liên thuộc đỉnh A,C và D) và không tạo chu trình

5 (B,C),(C,D),(A,C) Do số cạnh là 3 = n-1 nên kết thúc việc xét

Trang 25

Ví dụ 1: Lấy đỉnh xuất phát là B Bảng thực hiện như sau:

Trang 26

Ví dụ 2:

Tìm cây khung ngắn nhất của đồ thị G dưới đây.

Sử dụng thuật toán Prim.

Trang 27

6 4 A

Trang 28

Trên một cây khung ngắn nhất của đồ thị G, chúng ta xác định một đỉnh gọi là gốc

- Từ gốc chúng ta vẽ được các đường đi có hướng đi đến

các đỉnh khác của cây khung, và tạo ra cây gọi là cây

phân cấp Quan hệ giữa các đỉnh là "cha-con".

C

A

D

E

Trang 29

Từ cây khung ngắn nhất của đồ thị G, chúng ta vẽ được cây T1 có gốc là C; cây T2 có gốc là E.

D B

Trang 30

Một số ứng dụng thực tế sử dụng cây để vẽ mô hình:

1- sơ đồ tổ chức

2- cây thư mục trong hệ điều hành

3- cây tên miền Internet

Trang 31

sơ đồ tổ chức công ty máy tính

Trang 32

Hệ thống thư mục-tệp tin

Trang 33

Cây hệ thống tên miền Internet - DNS

Trang 34

Với T là cây có gốc.

- Có 1 đỉnh là gốc.

- Nếu v là một đỉnh khác

gốc của T, khi đó "cha"

của v là đỉnh u sao cho

A K

Trang 35

- Các đỉnh có "con" được gọi là

đỉnh trong của cây T Lá được

gọi là đỉnh ngoài.

- Nếu v là một đỉnh của cây T thì

đỉnh v và các con cháu tạo

thành cây con của cây T - có

gốc là v.

E

C A

D

Cây con của T - có gốc là

Trang 36

- Cây T được gọi là cây k-phân nếu mỗi đỉnh trong của T

có nhiều nhất là k con.

E

C A

G

D G

B

E

C A

H D

Trang 37

- Cây T được gọi là cây k-phân đầy đủ nếu mọi đỉnh

trong của T có đúng k con.

T1 cây nhị phân

đầy đủ

T2 cây ngũ phân đầy đủ

T3 cây tam phân không đầy đủ

Trang 38

- Cây nhị phân là cây mà mỗi đỉnh trong của cây có tối đa là hai con.

- Cây nhị phân được sắp thứ tự trái-phải cho các cây con để thực hiện việc duyệt (hay còn gọi là "thăm viếng") các đỉnh.

B

A

J I

H

C E

Cây con trái

Cây con phải

Trang 39

- Có ba kiểu duyệt cây thường được sử dụng để duyệt cây nhị phân:

Duyệt theo kiểu tiền thứ tự (Pre-order)

Node - Left - Right

Duyệt theo kiểu trung thứ tự (In-order)

Left - Node - Right

Duyệt theo kiểu hậu thứ tự (Post-order)

Left - Right - Node

Trang 40

Duyệt theo kiểu tiền thứ tự

Node - Left - Right

Cách thực hiện:

- Trước tiên thăm gốc (node)

- Duyệt cây con bên trái theo kiểu tiền thứ tự

- Duyệt cây con bên phải theo kiểu tiền thứ tự.

Trang 41

Duyệt theo kiểu trung thứ tự Left - Node - Right

Trang 42

Duyệt theo kiểu hậu thứ tự

Left - Right - Node

Trang 43

Hình minh họa cho ba kiểu duyệt cây

Trang 44

Ứng dụng 1: Trong tổ chức cây thư mục của hệ điều hành,

để tính dung lượng của thư mục, chúng ta duyệt cây theo kiểu hậu thứ tự.

Trang 45

Ứng dụng 2: Biểu diễn biểu thức số học theo dạng cây để

lập chương trình tính biểu thức.

- Năm 1920, nhà toán học Ba lan, Jan Łukasiewic, đề xuất dùng cây để biểu diễn và tính toán biểu thức số học trong lập trình máy tính.

Trang 46

c

*

Trang 47

Ứng dụng 2:

Ví dụ: (tt)

Thực hiện việc duyệt cây B1 và cây B2 theo kiểu trung thứ

tự chúng ta có cùng 1 kết quả như sau:

a + b * c - d /2

/

c

*

Trang 48

d a

/

c

*

Trang 49

d a

/

c

*

Trang 50

CÂY VÀ CÁC ỨNG DỤNG

Ứng dụng 2:

- Việc biểu diễn biểu thức số học theo dạng tiền thứ tự (hoặc hậu thứ tự) cho phép bỏ dấu ngoặc đơn trong cách biểu diễn biểu thức số học, vẫn đảm bảo tính đúng của kết quả tính toán

- Chúng ta gọi cách viết biểu thức theo kiểu tiền thứ tự là

Ngày đăng: 05/12/2016, 11:27

HÌNH ẢNH LIÊN QUAN

Hình bên. - Toán Ứng Dụng Cây Và Các Ứng Dụng
Hình b ên (Trang 27)
Sơ đồ tổ chức công ty máy tính - Toán Ứng Dụng Cây Và Các Ứng Dụng
Sơ đồ t ổ chức công ty máy tính (Trang 31)
Hình minh họa cho ba kiểu duyệt cây - Toán Ứng Dụng Cây Và Các Ứng Dụng
Hình minh họa cho ba kiểu duyệt cây (Trang 43)

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w