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

Nghiên cứu các thuật toán về cây khung và ứng dụng

72 444 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 72
Dung lượng 0,9 MB

Nội dung

Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/ Điều đầu tiên em xin gửi lời cảm ơn tới các Thầy, Cô Trường Đại học Công nghệ thông tin và Truyền thông Thái Nguyên trong

Trang 1

Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/

ĐẠI HỌC THÁI NGUYÊN

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG

Trang 2

Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/

Tên em là Trần Thị Phương Thảo, học viên lớp Cao học K12E, chuyên ngành Khoa học máy tính, khóa học 2013 – 2015 Em xin cam đoan luận văn:

“NGHIÊN CỨU CÁC THUẬT TOÁN VỀ CÂY KHUNG VÀ ỨNG DỤNG ” Dưới sự hướng dẫn của PGS TSKH Nguyễn Xuân Huy - Trường Đại học

dung trình bày được trích dẫn đầy đủ từ các nguồn tài liệu tham khảo chính thống (báo khoa học, các sách có bản quyền), các nội dung trình bày trong luận văn hoàn toàn trung thực Và đây là công trình nghiên cứu của bản thân kết hợp với sự hướng dẫn của PGS TSKH.Nguyễn Xuân Huy tạo lập ra

Nếu có nội dung nào sao chụp lại hoặc không phải do chính bản thân tạo ra, em xin hoàn toàn chịu tránh nhiệm và chịu các hình thức kỷ luật

Phú Thọ, ngày 4 tháng 10 năm 2015

Trần Thị Phương Thảo

Trang 3

Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/

Điều đầu tiên em xin gửi lời cảm ơn tới các Thầy, Cô Trường Đại học Công nghệ thông tin và Truyền thông Thái Nguyên trong thời gian vừa qua đã cung cấp và truyền đạt chương trình học với các môn học có nội dung bổ ích Thông qua chương trình học, em được lĩnh hội nhiều về kiến thức chuyên môn, các phương pháp tiếp cận bài toán trong tin học

Em xin gửi lời cảm ơn sâu sắc tới PGS TSKH Nguyễn Xuân Huy,

người Thầy đã hướng dẫn, chỉ bảo, giám sát, theo dõi, cung cấp phương pháp, nguồn dữ liệu tiếp cận bài toán để em có thể hoàn thành được luận văn của mình

Em xin cảm ơn Ban Giám hiệu trường THPT Trần Phú cùng các đồng nghiệp trong Trường, xin cảm ơn Trường Đại học Công nghệ thông tin và Truyền thông, Đại học Thái Nguyên đã tạo mọi điều kiện giúp đỡ để em hoàn thành chương trình học tập và luận văn tốt nghiệp

Điều cuối cùng em xin cảm ơn gia đình, bạn bè luôn nhiệt tình ủng

hộ, động viên, giúp đỡ cả về vật chất lẫn tinh thần trong thời gian học tập

và nghiên cứu

Trong quá trình thực hiện luận văn, mặc dù đã có rất nhiều cố gắng nhưng cũng không tránh khỏi những thiếu sót Kính mong nhận được sự cảm thông và tận tình chỉ bảo của các Thầy, Cô và các bạn

Em xin trân trọng cảm ơn!

Phú Thọ, ngày 4 tháng 10 năm 2015

HỌC VIÊN Trần Thị Phương Thảo

Trang 4

Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/

MỞ ĐẦU 1

1 Tính cấp thiết của đề tài 1

2 Đối tượng và phạm vi nghiên cứu 2

3 Phương pháp nghiên cứu 2

4 Hướng nghiên cứu của đề tài 3

5 Những nội dung nghiên cứu chính 3

CHƯƠNG 1: TỔNG QUAN VỀ CÂY KHUNG 4

1.1 MỘT SỐ KHÁI NIỆM LIÊN QUAN TỚI ĐỒ THỊ 4

1.1.1 Định nghĩa đồ thị 4

1.1.2 Các loại đồ thị 5

1.1.3 Bậc của đồ thị 6

1.2 ĐỒ THỊ CON, ĐỒ THỊ BỘ PHẬN 8

1.2.1 Đồ thị con, đồ thị bộ phận 8

1.2.2 Đường đi, chu trình trong đồ thị 8

1.3 TỔNG QUAN VỀ CÂY KHUNG 10

1.3.1 Định nghĩa về cây 10

1.3.2 Cây khung 11

1.3.3 Cây khung cực tiểu 12

1.3.4 Rừng khung, rừng khung cực tiểu 13

1.3.4.1 Rừng khung 13

1.3.4.2 Rừng khung cực tiểu 14

1.3.5 Cầu, cạnh trọng yếu 15

1.3.6 Khớp 16

1.3.7 Liên thông hóa 16

1.4 BIỂU DIỄN ĐỒ THỊ TRÊN MÁY TÍNH 20

Trang 5

Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/

1.4.2 Ma trận liên thuộc 22

1.4.3 Danh sách kề 23

CHƯƠNG 2: TÌM HIỂU MỘT SỐ THUẬT TOÁN VỀ CÂY KHUNG 25

2.1 GIỚI THIỆU KỸ THUẬT FIND UNION 25

2.2 THUẬT TOÁN TÌM CÂY KHUNG, CÂY KHUNG CỰC TIỂU 31

2.2.1 Thuật toán tìm cây khung 31

2.2.2 Thuật toán tìm cây khung cực tiểu 33

2.3 THUẬT TOÁN LIỆT KÊ CÁC CÂY KHUNG THÀNH PHẦN CỦA RỪNG KHUNG 40

2.4 THUẬT TOÁN LIỆT KÊ CÁC CÂY KHUNG THÀNH PHẦN CỦA RỪNG KHUNG CỰC TIỂU 44

2.5 THUẬT TOÁN LIỆT KÊ CÁC CẦU 48

2.6 THUẬT TOÁN LIỆT KÊ CÁC KHỚP 50

CHƯƠNG 3: MỘT SỐ ỨNG DỤNG CỦA BÀI TOÁN CÂY KHUNG GIẢI QUYẾT VẤN ĐỀ THỰC TẾ 54

3.1 BÀI TOÁN CÁP MẠNG 54

3.2 BÀI TOÁN TUYẾN ĐƯỜNG QUAN TRỌNG TRONG QUÂN SỰ 59

3.3 CÀI ĐẶT CHƯƠNG TRÌNH 64

KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 64

Tài liệu tham khảo: 66

Trang 6

Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/

1 Tính cấp thiết của đề tài

Khái niệm về cây khung được CayLey đưa ra năm 1857 [4]

Cây là đồ thị vô hướng, liên thông, không có chu trình

Trong tin học, cây được dùng để xây dựng các thuật toán, tổ chức các thư mục, các thuật toán tìm kiếm, lưu trữ và nén dữ liệu,…[3,5] Có rất nhiều bài toán vận dụng khái niệm về cây như: Sửa chữa đường, định chiều các đường

đi trong thành phố, tìm cây khung có nhiều lá nhất…

Cây khung của một đồ thị hữu hạn, vô hướng và liên thông là đồ thị con liên thông chứa mọi đỉnh và ít cạnh nhất [1,2,3,4,5,6,7] Nếu đồ thị ban đầu có

n đỉnh thì cây khung của đồ thị này có n đỉnh và n - 1 cạnh Nhiều bài toán trong thực tiễn đòi hỏi phải xây dựng cây khung với các biến thể khác nhau, thí dụ: Bài toán du lịch, bài toán kết nối mạng máy tính, bài toán quản lý vốn vay của địa phương

Một số biến thể của cây khung cũng được vận dụng nhiều trong thực tiễn [3] Thí dụ: Một mạng giao thông có nhiều cầu Khi một cầu bị phá thì mạng

vẫn có thể liên thông Một cầu được gọi là trọng yếu nếu như khi bỏ cầu đó

thì mạng mất liên thông [3] Trong chiến tranh đối phương thường quan tâm phá những cầu trọng yếu Trong một mạng máy tính đường nối giữa hai máy

được xem là trọng yếu nếu đường nối đó bị đứt thì mạng mất tính liên thông

Một đỉnh trong đồ thị liên thông được gọi là trọng yếu hay đỉnh khớp nếu

bỏ đỉnh đó và những cạnh liên thuộc thì đồ thị mất tính liên thông [3]

Trang 7

Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/

niệm cây khung Thí dụ, mọi cầu trọng yếu đều phải thuộc một cây khung nào

đó

Với những lí do trên học viên chọn đề tài nghiên cứu các thuật toán về cây khung và ứng dụng nhằm các mục đích sau:

- Tìm hiểu các khái niệm về đồ thị nói chung và đồ thị liên thông nói riêng

- Tìm hiểu sâu về cây khung và các thuật toán liên quan đến cây khung và các biến thể của cây khung

- Xây dựng một số ứng dụng cây khung giải quyết một số vấn đề thực tiễn: Bài toán kết nối mạng, bài toán quản lý giao thông, bài toán quản lý cụm hải đảo và các quần thể động thực vật

2 Đối tượng và phạm vi nghiên cứu

a Đối tượng nghiên cứu:

Tổng quan lý thuyết về cây khung

Tìm hiểu một số thuật toán về cây khung điển hình như: Tìm cây khung, tìm cây khung cực tiểu, các bài toán về rừng khung, liệt kê các cây khung, cầu trọng yếu, đỉnh khớp…

Các ứng dụng của việc giải quyết các bài toán cây khung vào trong thực tế

b Phạm vi nghiên cứu:

Khảo sát, đánh giá tổng quan về lý thuyết cũng như các bài toán và các biến thể của cây khung trong lớp các đồ thị hữu hạn

3 Phương pháp nghiên cứu

Sử dụng các phương pháp nghiên cứu chính sau:

Trang 8

Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/

thức, tìm hiểu các khái niệm, thuật toán sử dụng trong đề tài

- Phương pháp thực nghiệm: Điều tra chọn mẫu, xử lý thông tin,

- Phương pháp trao đổi khoa học, lấy ý kiến chuyên gia

4 Hướng nghiên cứu của đề tài

- Tổng quan về lý thuyết đồ thị và cây khung

- Nghiên cứu các thuật toán về cây khung

- Ứng dụng của các bài toán cây khung trong thực tế

- Cài đặt thử nghiệm chương trình

5 Những nội dung nghiên cứu chính

Nội dung chính của luận văn được chia thành ba chương, cụ thể như sau:

Trang 9

Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/

u

u

TỔNG QUAN VỀ CÂY KHUNG

1.1 MỘT SỐ KHÁI NIỆM LIÊN QUAN TỚI ĐỒ THỊ

( Các khái niệm cơ bản liên quan đến đồ thị được trình bày chi tiết trong tài liệu [1,2,6])

1.1.1 Định nghĩa đồ thị

Đồ thị là một cấu trúc rời rạc bao gồm các đỉnh và các cạnh nối các đỉnh của

đồ thị Các loại đồ thị khác nhau được phân biệt dựa trên kiểu và số lượng cạnh nối hai đỉnh nào đó của đồ thị

- Nếu u = (x,y) mà x,y là cặp đỉnh có phân biệt thứ tự hay có hướng từ x đến

y thì u là một cung, khi đó x là gốc còn y là ngọn hoặc x là đỉnh ra, y là đỉnh vào

x x

Trang 10

Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/

cặp đỉnh là những cạnh song song hay là cạnh bội

1.1.2 Các loại đồ thị

a Đồ thị vô hướng

- Đồ thị G=<V,E> được gọi là đồ thị vô hướng nếu tất cả các cạnh u E

mà cặp đỉnh thuộc nó u = (x,y) (trong đó x,y V) không phân biệt thứ tự

Hình 1.1: Đơn đồ thị vô hướng gồm 8 đỉnh 7 cạnh

b Đồ thị có hướng

Đồ thị G = <V, E> được gọi là đồ thị có hướng nếu tất cả các cạnh u E mà cặp đỉnh thuộc nó u = (x, y) (trong đó x,y V) có phân biệt thứ tự Đồ thị có hướng là đồ thị mà mọi u=(x, y) V đều là cung

Trang 11

Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/

Trang 12

Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/

cạnh E = 1,2 , {1,5}, {2,3}, {2,5}, {3,4}, {4,5}, 4,6

Bậc của đỉnh v trong đồ thị G, ký hiệu d G (v), là số cạnh liên thuộc với v, trong

đó, khuyên được tính hai lần Một đỉnh có bậc 0 là đỉnh cô lập Đỉnh có bậc 1

là một đỉnh treo hay lá Trong đồ thị ví dụ, các đỉnh 1 và 3 có bậc là 2, các đỉnh 2, 4 và 5 có bậc bằng 3, đỉnh 6 có bậc 1

Nếu tập cạnh E là hữu hạn thì tổng giá trị bậc của các đỉnh gọi là bậc của đồ

thị Bậc của đồ thị bằng hai lần số cạnh Số các đỉnh bậc lẻ luôn là số chẵn

Bậc cực đại của đồ thị G, ký hiệu Δ(G), là bậc lớn nhất của các đỉnh trong đồ thị; bậc cực tiểu, δ(G), là bậc nhỏ nhất của các đỉnh trong đồ thị

b Bậc của đồ thị có hướng

Hình 1.4: Đồ thị có hướng

Xét đồ thị cho trong hình 1.4 Ta có:

deg - (a)=1, deg - (b)=2, deg - (c)=2, deg - (d)=2, deg - (e) = 2

deg + (a)=3, deg + (b)=1, deg + (c)=1, deg + (d)=2, deg + (e)=2

Trang 13

Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/

hai lần) Bậc của v được ký hiệu là

Trong một đồ thị có hướng, bậc trong của đỉnh v là số cung kết thúc tại v, còn bậc ngoài là số cung xuất phát từ v Bậc trong và bậc ngoài của v được ký

Đỉnh với được gọi là đỉnh cô lập Đỉnh có được gọi

là lá Nếu mỗi đỉnh của đồ thị đều có bậc bằng nhau và bằng k thì đồ thị được gọi là đồ thị chính quy bậc k và đồ thị được coi là có bậc bằng k

Đỉnh có được gọi là đỉnh phát, đỉnh có là đỉnh thu

Trong đồ thị có hướng Γ, bậc ngoài dΓ+

(v), số cung xuất phát từ đỉnh v, và bậc trong dΓ-(v), số cung đi vào đỉnh v Bậc dΓ(v) của đỉnh v bằng tổng bậc ngoài

và bậc trong của đỉnh đó Bậc ngoài cực đại và cực tiểu được ký hiệu Δ+

- Nếu trong đồ thị đó ta bỏ đi một số đỉnh nào đó và các cạnh (cung) xuất phát

từ đỉnh đó thì phần còn lại của đồ thị được gọi là đồ thị con của đồ thị G đã cho

- Nếu trong đồ thị G ta bỏ đi một số cạnh nhưng giữ nguyên các đỉnh thì phần còn lại của đồ thị được gọi là đồ thị bộ phận của đồ thị G

1.2.2 Đường đi, chu trình trong đồ thị

Trang 14

Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/

trên đồ thị vô hướng G = (V, E) là dãy x 0 , x 1 ,…, x n-1 , x n

Hình 1.7 Hình 1.8

Hình 1.7 và 1.8: Đường đi trên đồ thị

Trên đồ thị vô hướng cho trong hình 1.7 : a, d, c, f, e là đường đi đơn độ dài

4 Còn d, e, c, a không là đường đi, do (c,e) không phải là cạnh của đồ thị Dãy b, c, f, e, b là chu trình độ dài 5 Đường đi a, b, e, d, a, b có độ dài là 5 không phải là đường đi đơn, do cạnh (a, b) có mặt trong nó 2 lần

Khái niệm đường đi và chu trình trên đồ thị có hướng được định nghĩa hoàn toàn tương tự như trong trường hợp đồ thị vô hướng, chỉ khác là ta có chú ý đến hướng trên các cung

Trang 15

Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/

1.3.1 Định nghĩa về cây : Cho đồ thị G = <V, E>, G được gọi là một cây nếu

G liên thông và không có chu trình đơn, Đồ thị vô hướng không có chu trình đơn gọi là rừng (hợp của nhiều cây), với n = V > 1

Khi đó sáu tính chất sau là tương đương

(1) G là đồ thị liên thông và không có chu trình

(2) G không có chu trình và có n - 1 cạnh

(3) G liên thông và có n - 1 cạnh

(4) G không có chu trình và nếu thêm vào một cạnh nối 2 đỉnh

không kề nhau thì G xuất hiện duy nhất một chu trình

(5) G liên thông và nếu bỏ đi một cạnh tuỳ ý thì đồ thị nhận được

sẽ không liên thông

(6) Mỗi cặp đỉnh trong G nối với nhau bằng một đường duy nhất

Trang 16

Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/

Hình 1.17: Cây

1.3.2 Cây khung

Định nghĩa : Cây khung (còn gọi là cây bao trùm) của một đồ thị n đỉnh, m

cạnh là cây gồm n đỉnh với số cạnh tối thiểu bảo toàn tính liên thông của đồ

thị

Cho đồ thị G = <V, E> với số đỉnh n lớn hơn 1

Giả sử G' là đồ thị bộ phận của G (G' nhận được từ G bằng cách bỏ đi một số cạnh nhưng vẫn giữ nguyên đỉnh) Nếu G' = <V, E'> là một cây thì G' gọi là cây bao trùm của G Theo đúng tính chất về cây G' là cây bao trùm phải có

n - 1 cạnh và là một đồ thị liên thông không có chu trình

Giả sử G = (V, E) là đồ thị vô hướng Cây T = (V, F) với F E gọi là cây khung của đồ thị G Tức là nếu như loại bỏ một số cạnh của G để được một cây thì cây đó gọi là cây khung (hay cây bao trùm của đồ thị)

Dễ thấy rằng với một đồ thị vô hướng liên thông có thể có nhiều cây khung Điều kiện cần và đủ để một đồ thị vô hướng có cây khung là đồ thị đó phải liên thông

Trang 17

Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/

Hình 1.18 Hình 1.19

Hình 1.20 Hình 1.21

Hình 1.18 đồ thị G

Hình 1.19, 1.20, 1.21 cây khung của đồ thì G

1.3.3 Cây khung cực tiểu

Định nghĩa : Cho đồ thị G vô hướng và liên thông với n đỉnh và m cạnh, cạnh

(u,v) có trọng số p(u,v) là một số dương Cây khung cực tiểu (còn gọi là cây bao trùm ngắn nhất) của G là cây khung với tổng trọng số của các cạnh trong

Trang 18

Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/

Hình 1.22: Đồ thị G

Hình 1.23

Cây khung cực tiểu của đồ thị G có trọng số = 30

1.3.4 Rừng khung, rừng khung cực tiểu

1.3.4.1 Rừng khung

Định nghĩa : Cho G là một đồ thị vô hướng gồm n đỉnh và m cạnh Hãy xác

định các cây khung trong mỗi mảnh liên thông của G Tập hợp các cây khung

đó được gọi là rừng khung của đồ thị G

Rừng là đồ thị mà mỗi thành phần liên thông của nó là một cây

Trang 19

Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/

Định nghĩa: Cho đồ thị G vô hướng và liên thông với n đỉnh và m cạnh,

cạnh (u,v) có trọng số p(u,v) là một số dương Rừng khung cực tiểu của G là

rừng khung với tổng trọng số của các cạnh trong khung là nhỏ nhất

Trang 20

Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/

Định nghĩa : Một cạnh trong đồ thị G đƣợc gọi là cầu hoặc cạnh trọng yếu

nếu xóa cạnh đó đi (giữ lại các đỉnh ở hai đầu), sẽ làm tăng số thành phần liên thông của đồ thị

cầu phải là cạnh khung, nghĩa là phải thuộc một cây hoặc rừng khung

Trang 21

Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/

1.3.7 Liên thông hóa

Đối với đồ thị vô hướng G ( V, E

G gọi là liên thông (connected) nếu luôn tồn tại đường đi giữa mọi cặp đỉnh phân biệt của đồ thị

Nếu G không liên thông thì chắc chắn nó sẽ là hợp của hai hay nhiều đồ thị conliên thông, các đồ thị con này đôi một không có đỉnh chung Các đồ thị con liên thông rời nhau như vậy được gọi là các thành phần liên thông của đồ thị đang xét

Khớp

Trang 22

Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/

Hình 1.29 : Đồ thị G và các thành phần liên thông G1, G2, G3 của nó

Đôi khi, việc xoá đi một đỉnh và tất cả các cạnh liên thuộc với nó sẽ tạo ra một đồ thị con mới có nhiều thành phần liên thông hơn đồ thị ban đầu, các đỉnh như thế gọi là đỉnh cắt hay điểm khớp

Hoàn toàn tương tự, những cạnh mà khi ta bỏ nó đi sẽ tạo ra một đồ thị có

nhiều thành phần liên thông hơn so với đồ thị ban đầu được gọi là một cạnh cắt hay một cầu

Trang 23

Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/

Hình 1.30 : Khớp và cầu

a Đồ thị vô hướng liên thông

Định nghĩa: Đồ thị vô hướng G = (V, E) được gọi là liên thông nếu luôn tìm

được đường đi giữa hai đỉnh bất kỳ của nó

Định lý 1: Nếu bậc của mọi đỉnh đồ thị vô hướng G=<V,E> không nhỏ

hơn một nửa số đỉnh thì đồ thị đó liên thông

Định lý 2 : Đồ thị vô hướng liên thông là định hướng được khi và chỉ khi

mỗi cạnh của nó nằm trên ít nhất một chu trình

c

d

H2

Trang 24

Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/

Hình 1.31: Đồ thị G Hình 1.32: Đồ thị H

Trong hình 1.31 : Đồ thị G là liên thông

Trong hình 1.32 : Đồ thị H là không liên thông

Ta gọi đồ thị con của đồ thị G = (V, E) là đồ thị H = (W, F), trong đó W ⊆ V

và F ⊆ E

b Đồ thị có hướng liên thông

Đối với đồ thị có hướng có hai khái niệm liên thông phụ thuộc vào việc ta có xét đến hướng trên các cung hay không

Trang 25

Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/

nếu luôn luôn tìm được đường đi giữa 2 đỉnh bất kỳ của nó

Định nghĩa 2 : Đồ thị có hướng G=<X,U> được gọi là liên thông yếu nếu

đồ thị vô hướng tương ứng (tức là đồ thị đã cho được thay các cung bởi các cạnh) với nó là đồ thị liên thông

Rõ ràng nếu đồ thị là liên thông mạnh thì nó cũng là liên thông yếu, nhưng điều ngược lại là không luôn đúng, như chỉ ra trong ví dụ dưới đây

Hình 1.35 Đồ thị liên thông mạnh G và đồ thị liên thông yếu H

Trong hình 1.35 đồ thị G là liên thông mạnh, còn H là liên thông yếu nhưng

không là liên thông mạnh

Định nghĩa 3: Nếu e = (u, v) là cung của đồ thị có hướng G thì ta nói hai đỉnh

u và v là kề nhau, và nói cung (u, v) nối đỉnh u với đỉnh v hoặc cũng nói cung

Trang 26

Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/

(cuối) của cung (u,v)

Tương tự như khái niệm bậc, đối với đồ thị có hướng ta có khái niệm bán bậc

ra và bán bậc vào của một đỉnh

Định nghĩa 4: Ta gọi bán bậc ra ( bán bậc vào) của đỉnh v trong đồ thị có

hướng là số cung của đồ thị đi ra khỏi nó (đi vào nó) và ký hiệu là deg + (v) (deg - (v))

Rất nhiều tính chất của đồ thị có hướng không phụ thuộc vào hướng trên các cung của nó Vì vậy, trong nhiều trường hợp sẽ thuận tiện hơn nếu ta bỏ qua hướng trên các cung của đồ thị Đồ thị vô hướng thu được bằng cách bỏ qua hướng trên các cung được gọi là đồ thị vô hướng tương ứng với đồ thị có hướng đã cho

1.4 BIỂU DIỄN ĐỒ THỊ TRÊN MÁY TÍNH

1.4.1 Ma trận kề và ma trận trọng số

Giả sử G=(V,E) là một đơn đồ thị với n đỉnh

Ma trận kề không- một cấp n x n

A=[aij] trong đó:

aij= 0 nếu không có cạnh nối đỉnh i với đỉnh j

aij=1 nếu có cạnh nối đỉnh i với đỉnh j

Trang 27

Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/

Chú ý:Ma trận kề của một đơn đồ thị là ma trận đối xứng

Ma trận kề là một ma trận thưa khi đồ thị tương đối ít cạnh

Trong trường hợp mỗi cạnh {i,j} được gắn với một trọng số k nào đó

Ta thay ma trận không-một bằng ma trận trọng số A=[aij] trong đó:

aij=∞ nếu không có cạnh nối đỉnh i với đỉnh j

aij=k nếu có cạnh nối đỉnh i với đỉnh j có trọng số k

1.4.2 Ma trận liên thuộc

Một cách thường dùng nữa để biểu diễn đồ thị là dùng ma trận liên thuộc Giả sử G=(V,E) là một đồ thị vô hướng với các đỉnh v1, v2, vn và các cạnh là

e1, e2, em

Khi đó ma trận liên thuộc M=[mij] kích thước n x m trong đó:

mij=0 nếu cạnh ej không nối với đỉnh vi

mij=l nếu cạnh ej nối với đỉnh vi

Trang 28

Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/

Khi đó ma trận liên thuộc tương ứng sẽ là:

Trang 29

Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/

Người ta dùng danh sách liên kết đơn thuận hoặc nghịch để biểu diễn chúng dưới dạng đỉnh kề hoặc cạnh kề

Kết luận : Lý thuyết đồ thị là mảng rất lớn nằm trong toán rời rạc, đồ thị

đóng vai trò quan trọng làm cơ sở toán cho tin học và lý thuyết về cây khung được ứng dụng nhiều trong thực tiễn Vì vậy việc nghiên cứu cơ sở lý thuyết

đồ thị và tổng quan về cây khung là rất cần thiết giúp cho việc ứng dụng xây dựng các thuật toán của cây khung Trong phạm vi nghiên cứu đề tài, những vấn đề mà tôi nêu trên là một phần của lý thuyết đồ thị, nhằm mục đích phục

vụ cho quá trình nghiên cứu các chương sau

Trang 30

Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/

CHƯƠNG 2

TÌM HIỂU MỘT SỐ THUẬT TOÁN VỀ CÂY KHUNG

2.1 GIỚI THIỆU KỸ THUẬT FIND-UNION

Kỹ thuật Find-Union (Tìm-Gộp) dùng để quản lí hợp của các tập rời nhau

Ta minh hoạ kỹ thuật này qua bài toán sau:

Bài toán công viên:

Cô giáo dẫn các em thiếu nhi đi chơi công viên Lớp có n em mã số lần lượt từ 1 đến n Vào công viên, để các bạn khỏi lạc nhau, cô giáo qui định chia nhóm như sau:

Cô lần lượt đọc mã số của từng cặp hai bạn Hai bạn đó sẽ thuộc cùng nhóm Dĩ nhiên, nếu bạn A và B cùng nhóm, bạn B và C cùng nhóm thì cả ba

Trang 31

Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/

nhất trong nhóm sẽ làm nhóm trưởng Sau m lần ghép cặp như vậy thì các em được chia thành mấy nhóm, hãy liệt kê mã số của các bạn trong từng nhóm Input: text file Park.inp

- Dòng đầu tiên: hai số nguyên dương n và m,

- Dòng thứ i trong số m dòng tiếp theo: mỗi dòng hai số nguyên dương a b

là mã số của hai bạn được ghép vào cùng nhóm

Output: Hiển thị

- Dòng đầu tiên: k số lượng nhóm

- Tiếp đến là k dòng, mỗi dòng liệt kê danh sách một nhóm

Park.inp Output Ý nghĩa: Tổng cộng các em được chia thành 3

nhóm Nhóm thứ nhất gồm 3 bạn có số hiệu là 1, 2

và 5; Nhóm thứ hai 3 bạn: 3, 4 và 7 Nhóm cuối cùng có 2 bạn: 6 và 8

Điều lí thú trong kỹ thuật này là ở điểm nhóm trưởng chính là em mang

số hiệu nhỏ nhất trong nhóm Lúc đầu, chưa ghép cặp thì mỗi em tạo thành một nhóm riêng Như vậy, lúc đầu ta có n nhóm Vì mỗi nhóm chỉ có duy nhất 1 em nên chính em đó là nhóm trưởng của chính mình Ta mường tượng mỗi bạn j phải bám thắt lưng bạn đứng trước i trong cùng nhóm Theo qui

Trang 32

Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/

Ta qui ước gọi d là mảng chứa thông tin liên kết giữa các phần tử trong

Bước 3 Quyết định xem ai sẽ là nhóm trưởng của nhóm gộp mới này Dễ

hiểu là nhóm trưởng mới sẽ là em có số hiệu nhỏ nhất trong 2 nhóm trưởng x

d [1] [2] [3] [4] [5] [6] [7] [8]

Trang 33

Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/

x < y Ta chỉ việc gán d[y] = x, yx Ý nghĩa của việc này là: cô giáo qui định nhóm trưởng y phải bám thắt lưng nhóm trưởng x Ta suy ra ngay rằng mọi em trong nhóm y đi theo nhóm trưởng y, mà y lại đi theo x nên mọi em trong nhóm y sẽ đi theo x Nếu x > y ta gán d[x] = y, xy với ý nghĩa tương

tự như trên Nếu x = y thì có nghĩa là i và j hiện ở trong cùng một nhóm (vì có cùng nhóm trưởng) nên ta không phải làm gì

Hãy quan sát lần lượt các hình dưới đây để phát hiện ra qui luật cập nhật từng cặp học sinh theo yêu cầu của cô giáo

Trang 34

Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/

d [1] [2] [3] [4] [5] [6] [7] [8]

Để cập nhật cặp (5,1) ta để ý rằng nhóm trưởng của 5 là 2, vì d[5] = 2, nhóm trưởng của 1 là 1, vì d[1] = 1 Vì 1 < 2 nên ta cho nhóm trưởng 2 bám vào nhóm trưởng 1, tức là gán d[2] = 1, 21

d [1] [2] [3] [4] [5] [6] [7] [8]

Trang 35

Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/

Hàm Init khởi trị mảng d[1 n], d[i] = i với ý nghĩa lúc đầu mỗi em tạo thành một nhóm riêng biệt với nhóm trưởng là chính mình

và chỉ khi x và y có cùng nhóm trưởng, tức là Find(x) = Find(y)

- Nếu 2 em x và y thuộc 2 nhóm khác nhau, Find(x) ≠ Find(y), thì ta thực

sự gộp 2 nhóm này và hàm Union cho ra giá trị 1

int Union(int x, int y) {

x = Find(x); y = Find(y);

if (x == y) return 0;

if (x < y) d[y] = x;

Trang 36

Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/

return 1;

}

Việc cần làm cuối cùng là liệt kê thành viên của mỗi nhóm Ta duyệt lại mảng d, mỗi khi tìm được một nhóm trưởng i theo hệ thức d[i] = i, do i là nhóm trưởng nên mọi thành viên của nhóm này đều có số hiệu lớn hơn i Do đặc điểm này nên ta chỉ cần duyệt tiếp mảng d kể từ j = i+1 đến n, nếu nhóm trưởng của j là i thì ta hiển thị thành viên j

Nhớ rằng lúc đầu ta có tổng cộng n nhóm Mỗi khi ta gộp thực sự 2 nhóm, tức là khi Union(x,y) = 1 thì số lượng nhóm sẽ giảm đi 1 Nhờ nhận xét này ta dễ dàng tính được số nhóm tại thời điểm kết thúc

Kết quả của thuật toán sử dụng kỹ thuật Find-Union không phụ thuộc vào trật tự duyệt các cặp ghép

Độ phức tạp tính toán: Hàm Find thực hiện tối đa n bước tham chiếu x = d[x] Hàm Union gọi hàm Find do đó có độ phức tạp O(n) Tổng cộng lại, với m cặp ghép ta có độ phức tạp cỡ n.m – tuyến tính theo chiều dài input

Ghi nhớ: Để vận dụng kỹ thuật Find-Union ta cần:

1 Khai báo một mảng nguyên d, khởi trị d[i] = i với i = 1 n;

2 Cài đặt hàm Find;

3 Cài đặt hàm Union

Trong các mục tiếp theo ta sẽ trình bày các ứng dụng kỹ thuật Union vào các bài toán trên đồ thị

Find-Trong tài liệu này, nếu không ghi chú gì thêm, ta ngầm hiểu các đồ thị

được cho là đơn đồ thị hữu hạn

2.2 THUẬT TOÁN TÌM CÂY KHUNG, CÂY KHUNG CỰC TIỂU 2.2.1 Thuật toán tìm cây khung

Ngày đăng: 29/12/2015, 16:11

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[2] Eppstein, David , "Spanning trees and spanners", Handbook of Computational Geometry, 1999 Sách, tạp chí
Tiêu đề: Spanning trees and spanners
[3] Wu, Bang Ye; Chao, Kun-Mao, Spanning Trees and Optimization Problems, 2004 Sách, tạp chí
Tiêu đề: Spanning Trees and Optimization Problems
[4] Bader, David A. , Cong, Guojing, "A fast, parallel spanning tree algorithm for symmetric multiprocessors (SMPs)", Journal of Parallel and Distributed Computing, 2005 Sách, tạp chí
Tiêu đề: A fast, parallel spanning tree algorithm for symmetric multiprocessors (SMPs)
[5] Wilson, David Bruce, "Generating random spanning trees more quickly than the cover time", Proceedings of the Twenty-eighth Annual ACM Symposium on the Theory of Computing (STOC 1996) Sách, tạp chí
Tiêu đề: Generating random spanning trees more quickly than the cover time
[6] Serre, Jean-Pierre, Trees, Springer Monographs in Mathematics, 2003 Sách, tạp chí
Tiêu đề: Trees
[7] Gabow, Harold N.; Myers, Eugene W, "Finding all spanning trees of directed and undirected graphs", SIAM Journal on Computing, 1978 Sách, tạp chí
Tiêu đề: Finding all spanning trees of directed and undirected graphs
[1] Lê Minh Hoàng, Giải thuật và lập trình, ĐHSP Hà Nội, 1999 - 2002. Tài liệu tiếng nước ngoài Khác

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w