Thuật toán tìm cây bao trùm lớn nhất

Một phần của tài liệu một số vấn đề ứng dụng của đồ thị trong tin học (Trang 82 - 89)

II. Cây bao trùm

4.2Thuật toán tìm cây bao trùm lớn nhất

4. Cây bao trùm lớn nhất

4.2Thuật toán tìm cây bao trùm lớn nhất

Vấn đề tìm cây bao trùm lớn nhất cũng có thể tiến hành tương tự như cho cây bao trùm nhỏ nhất. Có thể áp dụng thuật toán Kruskal hoặc thuật toán Prim để tìm cây bao trùm lớn nhất, chỉ có khác là ở mỗi bước của thuật toán cạnh mới

0 1 2 4 5 3 6 7 8 5 2 8 9 6 11 3 7 3 4 6 9

được chọn là cạnh có trọng số lớn nhất. Khi đó cạnh uk+1 được chọn sao cho

l(uk+1) = Max{l(u) : u ẻ U\Uk}.

Ví dụ có thể cải tiến thuật toán Prim để tìm cây bao trùm lớn nhất của đồ thị n đỉnh như sau:

- Bước 1: Chọn u1 sao cho l(u1) = max{l(u)} với u ẻ U đặt U1 = {u1}

- Bước 2: Chọn u2 sao cho l(u2) = max{l(u)} với u ẻ U\U1 và u kề với 1 cạnh thuộc U1

...

- Bước k +1: Giả sử đã có Uk = {u1, u2, ..., uk}

Chọn uk + 1 sao cho l(uk+1) = max{l(u)} với u ẻ U\Uk và u kề với 1 cạnh thuộc Uk và không lập thành chu trình với các cạnh ẻ Uk

Thuật toán dừng ở bước thứ n - 1 khi đó ta tìm được cây bao trùm lớn nhất.

Kết luận

Tin học là công cụ đắc lực, là lĩnh vực có nhiều ứng dụng phục vụ cho nhiều ngành khác nhau trong đời sống xã hội. Cho nên việc nghiên cứu các vấn đề ứng dụng cho tin học cũng là việc nghiên cứu các ứng dụng được giải quyết như thế nào trên máy tính. Có nhiều bài toán ứng dụng, nếu được mô hình tốt bằng đồ thị thì sẽ dễ dàng giải quyết được trên máy tính, vì cấu trúc và quá trình xử lý lữu trữ thông tin trên máy tính có tính chất rời rạc không liên tục mà bản chất của đồ thị cũng là rời rạc. 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ì vậy đề tài được thực hiện không chỉ đạt được các kết quả nghiên cứu về các ứng dụng mà còn làm sáng tỏ hơn cơ sở lý thuyết toán trong tin học.

Đề tài được hoàn thành, các kết quả đạt được trong việc nghiên cứu ứng dụng của lý thuyết đồ thị chủ yếu đó là các ứng dụng để giải các bài toán tối ưu, bài toán lập lịch, đặc biệt trong các vấn đề về cây, ở đây ta tìm thấy nhiều ứng dụng cho việc phân tích các giải thuật, tuy là cơ sở nhưng rất trọng tâm, sự mô hình hoá được các giải thuật bằng cây tạo được khả năng phân tích các thuật toán này được rõ nét hơn, nhờ những kết quả nghiên cứu được từ cây lại làm rõ hơn bản

chất của thuật toán, ví dụ như thuật toán mã hoá tiền tố Huffman, các thuật toán sắp xếp và tìm kiếm...

Nếu đi hết tất cả các vấn đề của Lý thuyết đồ thị thì đó là một khối lượng kiến thức rất khổng lồ, các vấn đề ứng dụng của đồ thị cũng rất nhiều, rất phong phú và đa dạng. Tuy nhiên do hạn chế về trình độ, thời gian không nhiều và nằm trong khuôn khổ của cuốn luận văn, nên những kết quả đạt được vẫn chưa đầy đủ và có thể có nhiều sai sót. Nhiều vấn đề ứng dụng còn nêu ra chung chung, mới dừng lại trên mô hình lý thuyết, chưa có những chứng minh bằng số liệu hay là chương trình cài đặt cụ thể, có nhiều vấn đề của đồ thị mà chưa nêu được thuật toán giải quyết và vẫn còn nhiều thuật toán chưa được cài đặt trên máy tính. Mặc dù vậy, các kết quả đạt được cũng đã phần nào góp phần làm sáng tỏ những tính chất cơ bản của đồ thị và các ứng dụng của nó.

ứng dụng của đồ thị là rất thực tiễn và quan trọng, việc nghiên cứu lý thuyết đồ thị và các ứng dụng của nó góp phần phát triển các kỹ thuật Tin học, đặc biệt trong khâu lập trình. Cần có những phương hướng nghiên cứu toàn diện hơn về đồ thị nhưng vẫn xoay quanh các vấn đề trọng tâm và những ứng dụng quan trọng và phổ biến của đồ thị, các vấn đề ứng dụng của đồ thị là rất rộng, nhưng vào mỗi ứng dụng lại cần nghiên cứu sâu hơn, đầy đủ hơn.

Tài liệu tham khảo

1. Đỗ Đức Giáo

* Toán rời rạc - NXB Đại Học Quốc gia Hà nội, 1999.

* Cơ sở toán trong lập trình - NXB Khoa học và Kỹ thuật, Hà Nội, 1998.

2. Nguyễn Đức Nghĩa - Nguyễn Tô Thành

Toán rời rạc - NXB Giáo Dục, 1999.

3. Kenneth H.Rosen

Discrete Mathematics And Its Applications.

Bản dịch tiếng Việt: Toán học rời rạc ứng dụng trong Tin học NXB Khoa Học và Kỹ Thuật, Hà Nội 1998.

Người dịch: Phạm Văn Thiều - Đặng Hữu Thịnh.

4. Nguyễn Cam - Chu Đức Khánh

Lý thuyết đồ thị - NXB Tp Hồ Chí Minh, 1999.

5. Hoàng Chúng

Đại cương về toán học hữu hạn - NXB Giáo dục, 1997. (adsbygoogle = window.adsbygoogle || []).push({});

6. Đỗ Xuân Lôi

Cấu trúc dữ liệu và giải thuật - NXB thống kê, 1999.

7. Nguyễn Thúc Hải

Mạng máy tính và các hệ thống mở - NXB Giáo dục, 1997.

8. Vũ Đức Thi

Các thuật toán nén dữ liệu.

Mục lục

Nội dung Trang

Lời nói đầu

...

1 Giới thiệu đề tài

...

2 Mục lục

...

5

Chương 1 Một số vấn đề cơ bản của đồ thị 9

I. Các định nghĩa đồ thị... 9

1. Định nghĩa đồ thị... 9

3. Đa đồ thị ... 10 4. Giả đồ thị... 10 II. Các loại đồ thị ... 11 1. Đồ thị vô hướng ... 11 2. Đồ thị có hướng ... 11 3. Đồ thị hỗn hợp ... 11

III. Một số khái niệm và tính chất cơ bản của đồ ... thị 11 1. Bậc đồ thị ... 11 1.1 Bậc đồ thị vô hướng ... 11 1.2 Bậc đồ thị có hướng ... 12 2. Đường đi và chu trình ... 13 2.1 Đường đi ... 13 2.2 Chu trình ... 13 3. Đồ thị liên thông ... 14 4. Đồ thị con và đồ thị bộ phận ... 15

IV. Các dạng biểu diễn của đồ thị ... 15

1.Biểu diễn hình học của đồ thị ... 15

2. Sự đẳng cấu ... 16 3. Một số đồ thị đặc biệt ... 17 3.1 Đồ thị đều ... 17 3.2 Đồ thị đầy đủ ... 17 3.3 Đồ thị bánh xe ... 17 3.4 Một vài ứng dụng của đồ thị đặc biệt ... 18 4. Biểu diễn đồ thị trên máy tính ... 19

4.1 Biểu diễn bằng ma trận kề ...

19 4.2 Danh sách cạnh (cung) ... 22

Chương 2 Số ổn định và tô màu đồ thị ... 24

I. Số ổn định trong, số ổn định ngoài, nhân đồ thị ... 24

1. Số ổn định trong ... 24

2. Số ổn định ngoài ... 24

3. Nhân đồ thị ... 24 (adsbygoogle = window.adsbygoogle || []).push({});

4. Các thuật toán tìm các tập ổn định trong cực đại, ổn định ngoài cực tiểu. 25 4.1 Thuật toán tìm số ổn định trong ... 25

4.2 Thuật toán tìm số ổn định ngoài... 25

5. ứng dụng đồ thị trong lập trình chơi cờ Ca rô... 26

II. tô màu đồ thị ... 29

1. Sắc số đồ thị ... 29

2. Tô màu đồ thị phẳng... 31

2.1 Đồ thị phẳng... 31

2.2 Định lý 5 màu (Kempe - Heawood)... 31

2.3 Bài toán 4 màu (Appel - Haken)... 32

3. Ví dụ ứng dụng ... 32

Chương 3 Chu trình, đường đi Euler và ... hamilton trong đồ thị 35 I. Chu trình và đường đi Euler ... 35

1. Chu trình Euler ... ... 35

1.1 Định nghĩa ... 35

1.2 Thuật toán tìm chu trình Euler ... 37

2. Đường đi Euler ... 38

2.1 Định nghĩa ... 38

2.2 Thuật toán tìm đường Euler ... 38

II. Chu trình và đường đi Hamilton ... 39

2. Đường Hamilton

... 40

3. Thuật toán liệt kê tất cả các chu trình Hamilton ... 41

Chương 4 Đường đi ngắn nhất trong đồ thị ... 42

I. Đường đi ngắn nhất trong đồ thị không có trọng số ... 42

1. Định nghĩa ... 42

2. Thuật toán ... 42

Ii. Đường đi ngắn nhất trong đồ thị có trọng số ... 43

1. Các khái niệm ... ... ... 43

2. Thuật toán tìm đường đi ngắn nhất cho đồ thị có trọng số ... 44

2.1 Cơ sở thuật toán tìm đường đi ngắn nhất ... 44

2.2 Thuật toán Dijkstra ... 45 (adsbygoogle = window.adsbygoogle || []).push({});

2.3 Thuật toán Ford - Bellman ... 45

2.4 Thuật toán Floyd ... 47

III. các ứng dụng ... 47

1. ứng dụng trong truyền tin... 47

2. ứng dụng trong việc lập lịch thi công của một công trình ... 50

IV. Chương trình mô tả thuật toán Dijkstra tìm đường đi ngắn nhất 53 Chương 5 Một số vấn đề về cây ... 56

I. Các khái niệm và tính chất cơ bản ... 56

1. Định nghĩa ... 56

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

3. Cây m phân ... 58

4. Các ứng dụng ... 58

4.1 Mã tiền tố ... 58

4.2 Cây biểu diễn biểu thức ... 61

4.3 Cây quyết định ... 62

4.4.1 Sắp xếp chèn với tìm kiếm nhị phân ... 63

4.4.2 Thuật toán sắp xếp hoà nhập ... 65

4.4.3 Thuật toán sắp xếp nhanh ... 68

II. Cây bao trùm ... 70

1. Định nghĩa và các tính chất ... 70

2. Các thuật toán tìm cây bao trùm ... 71

2.1 Thuật toán theo lý thuyết ... 71

2.2 Thuật toán tìm kiếm ưu tiên chiều sâu và chiều rộng ... 71

2.2.1 Kỹ thuật quay lui ... 72

2.2.2 Thuật toán tìm kiếm theo chiều sâu ... 72

2.2.3 Thuật toán tìm kiếm theo chiều rộng ... 73

2.3 Chương trình thể hiện cho các thuật toán ... 73

2.3.1 Chương trình Pascal về thuật toán quay lui ... 73

2.3.2 Chương trình cho thuật toán tìm kiếm chiều sâu và chiều rộng 74 3. Cây bao trùm bé nhất ... 76

3.1 Định nghĩa ... 76

3.2 Thuật toán tìm cây bao trùm bé nhất ... 76 (adsbygoogle = window.adsbygoogle || []).push({});

3.2.1 Thuật toán Kruskal ... 76

3.2.2 Thuật toán Prim... 77

3.2.3 Chương trình thể hiện thuật toán ... 78

3.3 ứng dụng cho bài toán kết nối hệ thống mạng ... 81

4. Cây bao trùm lớn nhất ... 81

4.1 Định nghĩa ... 81

4.2 Thuật toán tìm cây bao trùm lớn nhất ... 81

Kết luận... 83

Tài liệu tham khảo ...

Một phần của tài liệu một số vấn đề ứng dụng của đồ thị trong tin học (Trang 82 - 89)