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

Khảo sát tính liên thông của đồ thị bằng kỹ thuật find union và ứng dụng

80 391 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 80
Dung lượng 0,96 MB

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

Nội dung

Tính cấp thiết của đề tài Đồ thị được định nghĩa là một cặp G = V, E trong đó: V là tập các đỉnh hoặc node, E là tập các cung hoặc liên kết, đó là 2 tập con phần tử của V tức là một cạn

Trang 1

Tôi xin cam đoan đây là công trình nghiên cứu của riêng tôi Các

số liệu, kết quả đánh giá, nhận xét và các đề xuất cải tiến mới nêu trong Luận văn là trung thực và chưa từng được ai công bố trong bất

kỳ công trình nào khác

Tôi xin cam đoan rằng mọi sự giúp đỡ cho việc thực hiện Luận văn này cũng như các trích dẫn hay tài liệu học thuật tham khảo đã được cảm ơn đến tác giả hay ghi rõ ràng nguồn gốc thông tin trích dẫn trong Luận văn

Học viên thực hiện Luận văn

TRẦN BÌNH AN

Trang 2

Trước hết, cho tôi được gửi lời cảm ơn đến sự hướng dẫn và giúp đỡ tận tình của PGS TSKH Nguyễn Xuân Huy

Xin cảm ơn các Thầy/Cô tại trường Đại học Công nghệ Thông tin và Truyền thông Thái Nguyên đã sát cánh và cung cấp cho tôi những kiến thức quí báu trong suốt thời gian học tập và nghiên cứu thực hiện luận văn Tôi cũng in gửi lời cảm ơn đến gia đình, bạn bè cùng những người thân đã luôn quan tâm và giúp đỡ tôi trong suốt thời gian học tập, nghiên cứu để hoàn thành luận văn này

Luận văn không thể tránh khỏi những sai sót, rất mong nhận được ý kiến đóng góp của Thầy/Cô và các bạn để luận văn được hoàn thiện hơn Tôi xin chân thành cảm ơn

Thái Nguyên, tháng 4 năm 2016

TRẦN BÌNH AN

Trang 3

MỤC LỤC

LỜI CAM ĐOAN

LỜI CẢM ƠN

MỤC LỤC i

DANH MỤC TỪ VIẾT TẮT iii

DANH MỤC CÁC BẢNG iv

DANH MỤC CÁC HÌNH v

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 3

2.1 Đối tượng nghiên cứu 3

2.2 Phạm vi nghiên cứu 3

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

3.1 Về lý thuyết: 3

3.2 Về thực nghiệm: 3

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

Chương 1 TỔNG QUAN VỀ LÝ THUYẾT ĐỒ THỊ HỮU HẠN 5

1.1 Đồ thị và các khái niệm liên quan 5

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

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

1.1.3 Một số dạng đồ thị đặc biệt 9

1.1.4 Bậc của đồ thị 12

1.1.5 Đường đi, chu trình, tính liên thông của đồ thị 14

1.2 Biểu diễn đồ thị trên máy tính 16

1.2.1 Ma trận kề, ma trận trọng số 16

1.2.2 Danh sách cạnh (cung) 19

1.2.3 Danh sách kề 22

Chương 2 KỸ THUẬT FIND – UNION TRONG XỬ LÝ ĐỒ THỊ 23

2.1 Kỹ thuật FIND – UNION 23

2.2 Những bài toán cơ bản trong lý thuyết đồ thị 30

Trang 4

2.2.1 Thành phần liên thông 30

2.2.2 Cây khung 33

2.2.3 Cây khung cực tiểu 35

2.2.4 Rừng khung 36

2.2.4 Cầu 40

2.2.5 Đỉnh khớp 45

Chương 3 MỘT SỐ ỨNG DỤNG 48

3.1 Một số ứng dụng 48

3.2 Bài toán “Giao thông trong ứng phó thiên tai” 48

3.3 Hướng giải quyết bài toán 50

3.3.1 Phân tích bài toán 50

3.1.2 Hướng giải quyết bài toán 50

3.3.3 Demo 55

KẾT LUẬN 61

HƯỚNG PHÁT TRIỂN CỦA ĐỀ TÀI 62

TÀI LIỆU THAM KHẢO 63

PHỤ LỤC 64

Trang 5

 Thuộc, nếu a  A: Ta nói

a là phần tử con của tập A

Member, if A is a set and

a is one of the objects of

A, this is denoted a ∈ A

>; ≥ Lớn hơn; lớn hơn hoặc

Trang 6

DANH MỤC CÁC BẢNG

Bảng 1.1 Biểu diễn ma trận vô hướng không có trọng số bằng ma trận 16

Bảng 1.2 Biểu diễn đồ thị có hướng có trọng số bằng ma trận 18

Bảng 1.3 Biểu diễn đồ thị vô hướng có trọng số bằng ma trận 19

Bảng 1.4 Biểu diễn đồ thị không trọng số bằng danh sách cạnh (cung) 21

Bảng 1.5 Biểu diễn đồ thị có trọng số bằng danh sách cạnh có trọng số 21

Bảng 1.6 Biểu diễn đồ thị bằng danh sách kề 22

Bảng 2.1 File đồ thị vào G gồm 9 đỉnh, 6 cạnh và kết quả đầu ra 23

Bảng 2.2 Đồ thị G gồm 9 đỉnh, 6 cạnh 31

Bảng 2.3 File dữ liệu vào và ra của đồ thị G 9 đỉnh, 12 cạnh 35

Bảng 3.1 Đặt số hiệu cho huyện Bát Xát và các xã 55

Bảng 3.2 Kết quả chạy chương trình kiểm tra tính liên thông 57

Bảng 3.3 Kết quả chạy chương trình cây khung 59

Bảng 3.4 Khoảng cách từ các xã đến xã Trịnh Tường 60

Trang 7

DANH MỤC CÁC HÌNH

Hình 1.1 Các mô hình đồ thị 6

Hình 1.2 Đồ thị hữu hạn 6

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

Hình 1.4 Đơn đồ thị có hướng 8 đỉnh 7 cạnh 8

Hình 1.5 Đồ thị hỗn hợp 8

Hình 1.6 Đồ thị đầy đủ 9

Hình 1.7 Đồ thị vòng C1, C2, C3 10

Hình 1.8 Đồ thị bánh xe W1, W2, W3 10

Hình 1.9 Đồ thị lập phương Q1, Q2, Q3 10

Hình 1.10 Đồ thị 2 phía K2,3, K3,3, K3,4 11

Hình 1.11 Đồ thị phẳng K 12

Hình 1.12 Đồ thị vô hướng 12

Hình 1.13 Đồ thị có hướng 13

Hình 1.14 Đường đi trên đồ thị 14

Hình 1.15 Đồ thị không liên thông 15

Hình 1.16 Đồ thị vô hướng không có trọng số G 16

Hình 1.17 Đồ thị G có hướng, có trọng số 18

Hình 1.18 Đồ thị vô hướng G có trọng số 19

Hình 1.19 Đồ thị vô hướng không có trọng số G 20

Hình 1.20 Đồ thị vô hướng có trọng số G 21

Hình 1.21 Đồ thị vô hướng không có trọng số và có trọng số 22

Hình 2.1 Khởi trị danh sách d[i] Error! Bookmark not defined.5 Hình 2.2 Cập nhật cạnh (1, 2) 26

Hình 2.3 Cập nhật cạnh (3, 6) 27

Hình 2.4 Cập nhật cạnh (2, 7) 27

Hình 2.5 Cập nhật cạnh (3, 8) 27

Hình 2.6 Cập nhật cạnh (5, 9) 28

Hình 2.7 Cập nhật cạnh (4, 9) 29

Trang 8

Hình 2.8 Các mảnh liên thông của đồ thị G 31

Hình 2.9 Đồ thị liên thông G có cây khung là nét in đậm 35

Hình 2.10 Rừng khung của đồ thị G 37

Hình 2.11 Biểu diễn cầu, cạnh trọng yếu 41

Hình 3.1 Bản đồ huyện Bát Xát 55

Hình 3.2 Mô hình hóa các tuyến đường huyện Bát Xát 57

Hình 3.3 Cây khung cực tiểu của mảnh liên thông với xã Trịnh Tường 60

Trang 9

MỞ ĐẦU

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

Đồ thị được định nghĩa là một cặp G = (V, E) trong đó: V là tập các đỉnh hoặc node, E là tập các cung hoặc liên kết, đó là 2 tập con phần tử của

V (tức là một cạnh có liên quan đến hai đỉnh và các mối liên hệ được biểu diễn như một cạnh có thứ tự của các đỉnh với các cạnh cụ thể)

Trong khoa học máy tính, đồ thị được sử dụng để biểu diễn mạng truyền thông, tổ chức dữ liệu, thiết bị tính toán, tính toán dòng.Ví dụ, cấu trúc liên kết của một website có thể biểu diễn bởi một đồ thị có hướng, trong đó các đỉnh biểu diễn các trang web và các cạnh có hướng biểu diễn đường dẫn từ một trang tới một trang khác.Một cách tiếp cận tương tự cũng

có thể giải quyết các vấn đề trong du lịch, sinh học, thiết kế chíp máy tính

và nhiều vấn đề khác nữa Do đó, việc phát triển các thuật toán để xử lý đồ thị là vấn đề quan tâm lớn của khoa học máy tính

Lý thuyết đồ thị cũng thường được sử dụng nghiên cứu phân tử trong hóa học và vật lý Trong vật lý chất rắn, cấu trúc ba chiều của cấu trúc nguyên tử mô phỏng phức tạp có thể được nghiên cứu định lượng bằng cách thu thập số liệu thống kê về các đặc tính lý thuyết đồ thị liên quan đến các cấu trúc liên kết của các nguyên tử Trong hóa học một đồ thị biểu diễn một mô hình tự nhiên cho một phân tử, nơi đỉnh biểu diễn cho các nguyên

tử và các liên kết cạnh.Cách tiếp cận này đặc biệt được sử dụng trong xử lý máy tính của cấu trúc phân tử, từ biên tập hóa học tới tìm kiếm cơ sở dữ liệu

Trong vật lý thống kê, đồ thị có thể biểu diễn các kết nối cục bộ giữa

sự tương tác của các bộ phận của một hệ thống, cũng như sự biến đổi của một tiến trình vật lý trên hệ thống Đồ thị cũng được sử dụng để biểu diễn các vi kênh của môi trường xốp, trong đó các đỉnh biểu diễn cho các lỗ chân lông và các cạnh biểu diễn cho kênh nhỏ hơn nối các lỗ chân lông

Trang 10

Trong xã hội, người ta có thể dùng lý thuyết đồ thị để đo độ uy tín của một diễn viên hoặc tìm hiểu phạm vi lan rộng của một tin đồn, đặc biệt là thông qua việc sử dụng các phần mềm phân tích mạng xã hội…

Tương tự như vậy, lý thuyết đồ thị cũng hữu ích trong sinh học như giúp ích cho những nỗ lực bảo tồn, nơi một đỉnh có thể đại diện cho khu vực mà một số loài tồn tại (hoặc môi trường sống) và các cạnh đại diện cho con đường di cư, hoặc di chuyển giữa các vùng Những thông tin này rất quan trọng khi nhìn vào mô hình sản xuất giống hoặc theo dõi sự lây lan của dịch bệnh, ký sinh trùng hoặc làm thế nào thay đổi đối với phong trào thể ảnh hưởng đến các loài khác

Trong toán học, đồ thị hữu ích trong hình học và một số phần của cấu trúc liên kết như lý thuyết liên kết.Lý thuyết đồ thị đại số liên kết chặt chẽ với các lý thuyết nhóm

Một số cấu trúc đồ thị có thể gán trọng số cho mỗi cạnh của đồ thị.Đồ thị có trọng số được sử dụng để biểu diễn cấu trúc trong đó cặp kết nối có một vài giá trị số.Ví dụ, nếu một đồ thị đại diện cho mạng lưới đường bộ thì trọng số đại diện cho độ dài quãng đường

Qua đó, học viên nhận thấy lý thuyết đồ thị được ứng dụng trong mọi lĩnh vực của cuộc sống, bằng cách biểu diễn này hay biểu diễn khác ta có

mô hình hóa vấn đề ta quan tâm thông qua biểu diễn vấn đề đó bằng đồ thị

và áp dụng lý thuyết đồ thị vào giải quyết được vấn đề Nhận thức được tầm quan trọng của lý thuyết đồ thị trong cuộc sống nên học viên đã chọn

đề tài khảo sát tính liên thông của đồ thị bằng kỹ thuật Find - Union và ứng dụng nhằm mục đích sau:

- Tìm hiểu các khái niệm về đồ thị hữu hạn

- Tìm hiểu về tính liên thông của đồ thị

- Tìm hiểu kỹ thuật Find – Union

Trang 11

- Tìm hiểu các thuật toán liên quan đến đồ thị hữu hạn

- Áp dụng kỹ thuật Find – Union xây dựng một số ứng dụng giải quyết một số vấn đề trong thực tiễn

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

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

- Tổng quan về đồ thị và đồ thị hữu hạn liên thông

- Tìm hiểu kỹ thuật Find - Union

- Tìm hiểu một số bài toán áp dụng kỹ thuật Find – Union trong lý thuyết đồ thị như: Bài toán xác định thành phần liên thông, bài toán chu trình, bài toán cây khung, bài toán cây khung cực tiểu, bài toán mạng, bài toán rừng khung, bài toán rừng khung cực tiểu…

2.2 Phạm vi nghiên cứu

- Tập trung vào khảo sát tổng quan về lý thuyết cũng như cài đặt các

bài toán áp dụng kỹ thuật Find – Union trong đồ thị hữu hạn

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

3.1 Về lý thuyết:

- Lý thuyết về đồ thị hữu hạn

- Tìm hiểu thuật toán Find – Union

- Tìm hiểu các bài toán về đồ thị hữu hạn áp dụng thuật toán Find – Union

- Vận dụng các công cụ toán học, lý thuyết học rời rạc

3.2 Về thực nghiệm:

- Tìm hiểu ngôn ngữ, môi trường và kỹ thuật lập trình

- Xây dựng hệ thống chương trình để thử nghiệm và đánh giá kết quả

Trang 12

- Hình thành một số bài toán ứng dụng vào thực tiễn và xây dựng qui trình giải

4 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 3 chương cụ thể như

sau:

Trang 13

Chương 1 TỔNG QUAN VỀ LÝ THUYẾT ĐỒ THỊ HỮU HẠN

Khái niệm lý thuyết đồ thị đầu tiênđược biết đến trong bài báo của Leonhard Euler về Bảy cây cầu ở Königsberg, xuất bản năm 1736.Trong bài báo, ông đã sử dụng khái niệm lý thuyết đồ thị để đưa

ra hướng giải quyết cho bài toán.Kể từ đây, việc sử dụng lý thuyết đồ thị ngày càng phổ biến, nó giúp nhiều nhà toán học mô phỏng và giải quyết nhiều bài toán lớn của thế giới

Năm 1845, Gustav Kirchhoff đưa ra Định luật Kirchhoff cho mạch điện để tính điện thế và cường độ dòng điện trong mạch điện

Năm 1852 Francis Guthrie đưa ra bài toán bốn màu về vấn đề liệu chỉ với bốn màu có thể tô màu một bản đồ bất kì sao cho không có hai nước nào cùng biên giới được tô cùng màu.Bài toán này được xem như đã khai sinh ra lí thuyết đồ thị, và chỉ được giải sau một thế kỉ vào năm 1976 bởi Kenneth Appel và Wolfgang Haken.Trong khi cố gắng giải quyết bài toán này, các nhà toán học đã phát minh ra nhiều thuật ngữ và khái niệm nền tảng cho lí thuyết đồ thị

Trong khoảng vài mươi năm trở lại đây, cùng với sự ra đời của máy tính điện tử và sự phát triển nhanh chóng của tin học, lý thuyết đồ thị càng được quan tâm đến nhiều hơn.Thí dụ như trong kiến trúc mạng máy tính, tổ chức và tìm kiếm dữ liệu trên mạng, chỉ dẫn đườngđi

Trong chương 1 sẽ trình bày những khái niệm tổng quan cơ bản về lý thuyết đồ thị, cách biểu diễn đồ thị trên máy tính như: định nghĩa một đồ thị, các loại đồ thị, bậc của đồ thị, tính liên thông của đồ thị, đường đi, chu trình của đồ thị…

1.1 Đồ thị và các khái niệm liên quan

1.1.1 Định nghĩa đồ thị

Chúng ta thường xuyên nhìn thấy hoặc đã sử dụng bản đồ giao thông của một thành phố, sơ đồ tổ chức một cơ quan, sơ đồ khối tính toán của

Trang 14

một thuật toán, sơ đồ mạng máy tính , đó chính là những thí dụ cụ thể về

đồ thị

Thí dụ: Một số dạng của đồ thị trong thực tế

Mạng máy tính Sơ đồ giao thông Mạng nơron

Hình 1.1.Các mô hình đồ thị

Đồ thị (Graph, ký hiệu G): Là một cấu trúc rời rạc gồm các đỉnh

và các cạnh nối các đỉnh đó Được mô tả:

G = (V, E) trong đó:

V gọi là tập các đỉnh(Vertices) và E gọi là tập các cạnh(Edges) Có

thể coi E là tập các cặp (u, v) với u và v là hai đỉnh của V [4]

Hình 1.2.Đồ thị hữu hạn

Đồ thị G cho ở hình 1.2 với tập ác đỉnh V = {a, b, c, d, e} và tập các cạnh E ={(a, b), (b, c), (b, e), (c, e), (c, d)}

Nếu (a, b) là một cạnh của đồ thị thì ta nói rằng đỉnh b kề với đỉnh a

và cả hai đỉnh a và b kề với cạnh (a, b)

Trong đồ thị ở hình 1.2 thì hai đỉnh a và c kề với đỉnh b, ba đỉnh a, c

Trang 15

và e kề với đỉnh b Do vậy, ta có thể định nghĩa đồ thị bằng ánh xạ kề như sau:

Về bản chất, đồ thị là một tập hợp các đối tượng được biểu diễn bằng các đỉnh và giữa các đối tượng này có một quan hệ nhị nguyên biểu diễn bằng các cạnh

Cặp đỉnh (x, y) ∈ E không sắp thứ tự được gọi là cạnh vô hướng, còn nếu nó có sắp thứ tự thì được gọi là cạnh có hướng

1.1.2 Các loại đồ thị

1.1.2.1 Đồ 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ự [8]

Hình 1.3.Đơn đồ thị vô hướng 8 đỉnh 7 cạnh

Trang 16

1.1.2.2 Đồ 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 [8]

Hình 1.4.Đơn đồ thị có hướng 8 đỉnh 7 cạnh

1.1.2.3 Đồ thị hỗn hợp

Đồ thị G = (V,E) được gọi là đồ thị hỗn hợp nếu tất cả các cạnh u E

mà cặp đỉnh thuộc nó u = (x,y) có nhiều hơn một đường đi [3]

Hình 1.5 Đồ thị hỗn hợp

Trang 17

1.1.3 Một số dạng đồ thị đặc biệt

1.1.3.1 Đồ thị đầy đủ

Đồ thị đầy đủ n đỉnh, ký hiệu bởi Kn, là đơn đồ thị vô hướng mà giữa

hai

đỉnh bất kỳ của nó luôn có cạnh nối [3]

Thí dụ: Các đồ thị đầy đủ K1, K2, K3 cho trong hình 1.6

Trang 18

Hình 1.7

Hình 1.7 Đồ thị vòng C 1 , C 2 , C 3 1.1.3.3 Đồ thị bánh xe

Đồ thị bánh xeWnthu được từ Cn bằng cách bổ sung vào một đỉnh mới

nốivới tất cả các đỉnh của Cn [4]

Thí dụ: Đồ thị bánh xe W1, W2, W3như hình 1.8

Hình 1.8 Đồ thị bánh xe W1, W2, W3

1.1.3.4 Đồ thị lập phương

Đồ thị lập phương n đỉnh Qnlà đồ thị với các đỉnh biểu diễn 2n xâu nhị

phânđộ dài n Hai đỉnh của nó gọi là kề nhau nếu như hai xâu nhị phân

tương ứng chỉ khác nhau 1 bit [4]

Thí dụ: Đồ thị vòng Q1, Q2, Q3như hình 1.9

Hình 1.9 Đồ thị lập phương Q1, Q2, Q3

Trang 19

1.1.3.5 Đồ thị hai phía

Đơn đồ thị G=(V,E) được gọi là đồ thị hai phía nếu như tập đỉnh V

của nó cóthể phân hoạch thành hai tập X và Y sao cho mỗi cạnh của đồ thị

chỉ nối mộtđỉnh nào đó trong X với một đỉnh nào đó trong Y Khi đó ta sẽ

sử dụng ký hiệu G=(X∪Y, E) để chỉ đồ thị hai phía với tập đỉnh X∪Y [4]

Định lý: Đơn đồ thị là đồ thị hai phía khi và chỉ khi nó không chứa

chu trìnhđộ dài lẻ

Để kiểm tra xem một đồ thị liên thông có phải là hai phía hay không ta

có thểáp dụng thủ tục sau:

- Cho v là một đỉnh bất kỳ của đồ thị

- Đặt X={v}, còn Y là tập các đỉnh kề của v Khi đó các đỉnh kề của

các đỉnhtrong Y phải thuộc vào X Ký hiệu tập các đỉnh như vậy là T

- Vì thế nếu phát hiện T∩Y # thì đồ thị không phải là hai phía, kết

Trang 20

1.1.3.6 Đồ thị phẳng

Đồ thị được gọi là đồ thị phẳng nếu ta có thể vẽ nó trên mặt phẳng sao

chocác cạnh của nó không cắt nhau ngoài ở đỉnh Cách vẽ như vậy sẽ được

gọi làbiểu diễn phẳng của đồ thị.z

Thí dụ: Đồ thị K như hình 1.11 bên dưới là đồ thị phẳng, vì ta có thể

vẽ nótrên mặt phẳng sao cho các cạnh của nó không cắt nhau ngoài ở đỉnh

Bậc của đỉnh v trong đồ thị G, ký hiệu deg(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í dụ 1.12 ta có deg(1) =

2, deg(2) = 3, d(3) = 2, deg(4) = 2, deg(5) = 3, deg(6) = 1

Trang 21

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ị

Trong hình 1.12 Δ(G) = 3, δ(G) = 1 [8]

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

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

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

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

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

Bậccủa một đỉnh vlà sốcạnh liên thuộcvớiv(trong đó,khuyênđược tính hai lần) Bậc củavđược ký hiệu làdeg(v)

Trong mộtđồ thị có hướng,bậc trongcủa đỉnhvlà số cung kết thúc tạiv, cònbậc ngoàilà số cung xuất phát từv Bậc trong và bậc ngoài

củavđược ký hiệu làdeg+(v)vàdeg-(v) Do đó,deg(v) = deg+(v) + deg-(v) Đỉnh với deg(v) được gọi là đỉnh cô lập Đỉnh có deg(v) = 1 đượ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ó deg+(v) được gọi là đỉnh phát, đỉnh có deg-(v) là đỉnh thu [5]

Trang 22

Trong đồ thị có hướng G, bậc ngoài deg+(v), số cung xuất phát từ đỉnh v, và bậc trong deg-(v), số cung đi vào đỉnh v Bậc deg+ (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 Δ+(G) và δ+(G); bậc trong cực đại và cực tiểu, Δ-(G)

và δ-(G) Trong ngữ cảnh rõ ràng, có thể bỏ qua chỉ số dưới G [8]

1.1.5 Đường đi, chu trình, tính liên thông của đồ thị

Đường đi có độ dài k từ đỉnh u đến đỉnh v trên đồ thị vô hướng G =

Đỉnh u là đỉnh đầu, đỉnh v là đỉnh cuối của đường đi

Chu trình: là đường đi có đỉnh đầu trùng với đỉnh cuối (u = v)

Đường đi đơn: là đường đi mà không có cạnh nào lặp lại

Chu trình đơn: là chu trình mà không có cạnh nào lặp lại

Thí dụ: Tìm các đường đi, chu trình trong đồ thị vô hướng như hình 1.14

Hình 1.14 Đường đi trên đồ thị

+ a, b, c, d là đường đi đơn độ dài 3 + a, b, f, không là đường đi vì (b,

Trang 23

f) không phải là cạnh của đồ thị

+ Dãy a, b, c, f, e, a là chu trình độ dài 5

+ Đường đi a, b, c, f, e, b, c có độ dài 6 không phải là đường đi đơn vì cạnh (b, c) xuất hiện hai 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ự, chỉ có điều khác biệt duy nhất là ta phải chú ý tới các cung của đồ thị

Đồ thị liên thông: Đồ thị vô hướng G = (V, E) được gọi là liên thông

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ị con liê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 [1] Một đồ thị được coi là hoàn toàn không liên thông nếu không có đường đi giữa hai đỉnh bất kỳ trong đồ thị.Đây chỉ là một cái tên khác để miêu tả một đồ thị rỗng hoặc một tập độc lập.Một đồ thị có hướng

được coi là liên thông mạnh nếu từ mỗi đỉnh đều đến được mọi đỉnh khác.Ngược lại, đồ thị có hướng được coi là liên thông yếu nếu đồ thị vô

hướng nền tảng của nó là đồ thị liên thông [4]

Thí dụ: Kiểm tra tính liên thông của đồ thị hình 1.15

Đồ thị này không liên thông vì có đỉnh g là đỉnh cô lập nên không có đường đi từ đình bất kỳ đến đỉnh g

Hình 1.15 Đồ thị không liên thông

Trang 24

Chu trình sơ cấp: là chu trình không đi qua một đỉnh quá 1 lần (hay đi

Việc chọn cấu trúc dữ liệu nào để biểu diễn đồ thị có tác động rất lớn đến hiệu quả thuật toán.Vì vậy, lựa chọn cấu trúc dữ liệu thích hợp biểu diễn đồ thị sẽ phụ thuộc vào từng bài toán cụ thể

Giả sử G = (V, E) là một đơn đồ thị có số đỉnh (ký hiệu |V|) là n, không mất tính tổng quát có thể coi các đỉnh được đánh số 1, 2, …, n Khi

đó ta có thể biểu diễn đồ thị bằng một ma trận vuông A = [a[i, j]] cấp n, trong đó:

+ a[i, j] = 1 nếu (i, j) ∈ E

+ a[i, j] = 0 nếu (i, j) E

Với ∀i, giá trị của a[i, i] có thể đặt tuỳ theo mục đích, thông thường nên đặt bằng 0

Đối với đa đồ thị thì việc biểu diễn cũng tươngtự trên, chỉ có điều nếu như (i, j) là cạnh thì không phải ta ghi số 1 vào vị trí a[i, j] mà là ghi số cạnh nối giữa đỉnh i và đỉnh j [3]

Hình 1.16 Đồ thị vô hướng không có trọng số G

Trang 25

Bảng 1.1 Biểu diễn ma trận vô hướng không có trọng số bằng ma trận

+ a[i, j] = TRUE nếu (i, j) ∈ E và a[i, j] = FALSE nếu (i, j) E

Ưu điểm của ma trận kề:

+ Đơn giản, trực quan, dễ cài đặt trên máy tính

+ Để kiểm tra xem hai đỉnh (u, v) của đồ thị có kề nhau hay không, ta chỉ việc kiểm tra bằng một phép so sánh: a[u, v] ≠ 0

Trang 26

Nhược điểm của ma trận kề:

+ Bất kể số cạnh của đồ thị là nhiều hay ít, ma trận kề luôn luôn đòi hỏi n2 ô nhớ để lưu các phần tử ma trận, điều đó gây lãng phí bộ nhớ dẫn tới việc không thể biểu diễn được đồ thị với số đỉnh lớn

+ Với một đỉnh u bất kỳ của đồ thị, nhiều khi ta phải xét tất cả các đỉnh v khác kề với nó, hoặc xét tất cả các cạnh liên thuộc với nó Trên ma trận kề việc đó được thực hiện bằng cách xét tất cả các đỉnh v và kiểm tra điều kiện a[u, v] ≠ 0 Như vậy, ngay cả khi đỉnh u là đỉnh cô lập (không kề với đỉnh nào) hoặc đỉnh treo (chỉ kề với 1 đỉnh) ta cũng buộc phải xét tất cả các đỉnh và kiểm tra điều kiện trên dẫn tới lãng phí thời gian

Thí dụ: Tìm ma trận kề của đồ thị có hướng, có trọng số như hình 1.17

Hình 1.17 Đồ thị G có hướng, có trọng số Bảng 1.2 Biểu diễn đồ thị có hướng có trọng số bằng ma trận

Thí dụ: Tìm ma trận kề của đồ thị có trọng số như hình 1.18

Trang 27

Hình 1.18 Đồ thị vô hướng G có trọng số Bảng 1.3 Biểu diễn đồ thị vô hướng có trọng số bằng ma trận

1.2.2 Danh sách cạnh (cung)

Trong trường hợp đồ thị thưa (đồ thị có số cạnh m  6n), người ta

thường biểu diễn đồ thị dưới dạng danh sách cạnh

Trong phép biểu diễn này, chúng ta sẽ lưu trữ danh sách tất cả các cạnh (cung) của đồ thị vô hướng (có hướng).Mỗi cạnh (cung) e (x, y) được tương ứng với hai biến dau[e], cuoi[e]

Như vậy, để lưu trữ đồ thị, ta cần 2m đơn vị bộ nhớ, đây là ưu điểm

của việc lưu trữ bằng danh sách kề

Nhược điểm lớn nhất của phương pháp này là để nhận biết những

cạnh nào kề với cạnh nào chúng ta cần m phép so sánh trong khi duyệt qua tất cả m cạnh (cung) của đồ thị Nếu là đồ thị có trọng số, ta cần thêm m đơn vị bộ nhớ để lưu trữ trọng số của các cạnh [6]

Trang 28

Thí dụ: Biểu diễn đồ thị bằng danh sách cạnh như hình 1.19

Hình 1.19 Đồ thị vô hướng không có trọng số G

Trang 29

Bảng 1.4 Biểu diễn đồ thị không trọng số bằng danh sách cạnh (cung)

Trang 30

1.2.3 Danh sách kề

Trong rất nhiều ứng dụng, cách biểu diễn đồ thị dưới dạng danh sách

kềthường được sử dụng Trong biểu diễn này, với mỗi đỉnh v của đồ thị

chúng ta lưu trữ danh sách các đỉnh kề với nó mà ta ký hiệu là Ke(v), nghĩa

là Ke(v) = { u V: (u, v)E}

Với cách biểu diễn này, mỗi đỉnh i của đồ thị, ta làm tương ứng với

một danh sách tất cả các đỉnh kề với nó và được ký hiệu là List(i)

Để biểu diễn List(i), ta có thể dùng các kiểu dữ liệu kiểu tập hợp,

mảng hoặc danh sách liên kết [6]

Thí dụ: Biểu diễn danh sách kề của đồ thị vô hướng có trọng số và

không có trọng số như hình 1.21

Hình 1.21 Đồ thị vô hướng không có trọng số và có trọng số

Bảng 1.6 Biểu diễn đồ thị bằng danh sách kề

Trang 31

Chương 2 KỸ THUẬT FIND – UNIONTRONG XỬ LÝ ĐỒ THỊ

Trong lý thuyết đồ thị, có nhiều thuật toán được cài đặt để giải quyết các bài toán quan trọng như: Bài toán tìm cây khung; Bài toán xác định chu trình; Bài toán xác định thành phần liên thông…

Chương 2 sẽ trình bày thuật toán FIND – UNION (Tìm – Gộp) để giải quyết các bài toán trên

2.1 Kỹ thuật FIND – UNION

Trong khoa học máy tính, kỹ thuật Find – Union là một thuật toán dùng để quản lý các tập rời nhau

Ta mô phỏng kỹ thuật Find – Union qua bài toán sau:

Cho một đồ thị hữu hạn n đỉnh có mã số từ 1 đến n Biết trước m cạnh (Ai, Bj), i = 1 n, j = 1 n Nối các cặp đỉnh với quy ước đỉnh có mã số lớn hơn sẽ nối (liên thông) với đỉnh có mã số nhỏ hơn, đỉnh có mã số nhỏ hơn gọi là nhóm trưởng Sau m lần nối cạnh hỏi đồ thị có bao nhiêu nhóm (thành phần liên thông) và mã số các đỉnh trong nhóm?

Ý nghĩa: Đồ thị được chia làm 3 thành phần liên thông (nhưng không

liên thông với nhau) Thành phần thứ nhất gồm 3 đỉnh có mã số là 1, 2, 7;

Trang 32

Thành phần thứ 2 gồm 3 đỉnh có mã số là 3, 6, 8; Thành phần thứ 3 gồm 3đỉnh: 4, 5 và 9

Thuật toán

Function: FindUion()

Input: Text file

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

- Dòng thứ i trong số m dòng tiếp theo là hai số nguyên dương

a và b là hai mã số hai đỉnh được nối với nhau

Output: Hiển thị

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

- Tiếp đến là k dòng, mỗi dòng hiển thị danh sách một nhóm [2]

Method:

1 Khởi trị: d[i]:= i; i = 1 n;

2 For each (u, v) in danh sách L do 2.1 x = Find(u); // Tìm phần tử đại diện 2.2 y = Find(v); // Tìm phần tử đại diện 2.3 If (x == y) return 0;

Áp dụng thuật toán để phân tích thí dụ trên

Khi chưa có cạnh thì mỗi đỉnh là một nhóm riêng.Khi nối các cặp đỉnh thì đỉnh j nối với đỉnh j (theo quy ước j > i)

Ta sử dụng mảng nguyên một chiều d[1 n] để quản lí các nhóm Ta gán d[j] = i nếu đỉnh j phải nối vào đỉnh i là đỉnh có mã số nhỏ hơn mình: i

Trang 33

 j nếu i< j Lúc đầu ta khởi trị d[i] = i; i = 1 n: i  i, với ý nghĩa: lúc đầumỗi đỉnh tạo thành một nhóm Mảngd được gọi là mảng tham chiếu

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 tập con

Khởi trị mỗi đỉnh là một nhóm

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

Hình 2.1Khởi trị danh sách d[i]

Mỗi khi xuất hiện đỉnh nối cạnh (i, j) thì ta hiểu là: nhóm có đỉnh i cần hợp (gộp) với nhóm có đỉnh j Đểghép cặp (i, j) ta thực hiện các bước sau đây:

Trang 34

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

Chúng ta 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 đỉnh theo qui định

Trang 37

Để gộp 2 nhóm: nhóm có đỉnh x và nhóm có đỉnh y ta lưu ý hai điểm sau đây:

- Rất có thể 2 đỉnh x và y hiện đã trong cùng một nhóm Trường hợp này ta không phải làm gì.Hàm sẽ cho giá trị 0 Ta thấy x và y cùng nhóm khi và chỉ khi x và y có cùng nhóm trưởng, tức là Find(x)

là nhóm trưởng nên mọi thành viên của nhóm này đều có mã số lớnhơ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ì tahiể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

Trong bài toán tối ưu, kỹ thuật Find – Union càng thể hiện rõ được tầm quan trọng khi thực hiện kiểm tra sự tồn tại chu trình Việc cài đặt thuật toán dễ dàng, khi hàm Union(x, y) = 0 thì cạnh (x, y) tạo thành

Trang 38

chutrình và ngược lại khi Union(x, y) = 1 thì cạnh (x, y) không tạo thành chu trình [2]

Độ 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

2.2 Những bài toán cơ bản trong lý thuyết đồ thị

2.2.1 Thành phần liên thông

Cho đồ thị vô hướng G = (V, E) với n đỉnh V = {1, 2, …, n} và m cạnh (x,y) nối đỉnh x với đỉnh y

- Tínhsố thành phần liên thông

- Liệt kê tập đỉnh trong mỗi thành phần của G

Hướng giải quyết bài toán

Đồ thị vô hướng G được gọi là liên thông nếu từ một đỉnh bất kì i ta

có thể đi theo một số cạnh liền kề nhau của đồ thị để đến một đỉnh j bất kì Dãy các cạnh liền kề từ đỉnh i đến đỉnh j được gọi là một đường từ i đến j Với đồ thị vô hướng, khi có đường từ đỉnh i đến đỉnh j thì ta cũng có đường

từ đỉnh j đến đỉnh i Nếu G không liên thông thì G được chia thành các mảnh liên thông, còn gọi là thành phần liên thông, gồm một số đỉnh và cạnh của G Hãy tưởng tượng mỗi đỉnh của đồ thị như là một hạt cườm, cạnh nối hai đỉnh i và j chính sợi dây nối hai hạt i và j Khi đó, G là liên thông khi và chỉ khi ta cầm một hạt bất kì nhấc lên thì tất cả các hạt đều được nhấc theo Nếu G không liên thông thì mỗi lần nhấc một hạt ta được một mảnh lên thông gồm một số hạt được liên kết với nhau Ta đặt riêng mảnh đó ra, rồi nhấc một hạt bất kì trong số các hạt còn lại ta sẽ được mảnh liên thôngthứhai,…[2]

Nhận xét: G là liên thông khi và chỉ khi số mảnh liên thông của G là 1

Trang 40

Hàm Union(x, y) có giá trị 1 nếu thành phần liên thông chứa đỉnh x được gộp với thành phần liên thông chứa đỉnh y, ngược lại, Union(x, y) có giá trị 0 nếu hai đỉnh x, y hiện đang nằm trên cùng một thành phần liên thông Hàm Union(x, y) cho giá trị ra là giảm số lượng thành phần liên thông của G, sau khi thực hiện hàm Union(x, y) thì x, y sẽ cùng một thành phần liên thông [2]

Cài đặt chương trình

int SoThanhPhanLienThong(){ // Đếm số thành phần liên thông

int i, x, y, k;

ifstream f(inf); // mo input file

f >> n >> m; // doc so dinh n va so canh m

Initd(); // Khoi tri mang tham chieu d

Để liệt kê các thành phần liên thông ta làm như sau:

Duyệt các đỉnh i trong mảng d, nếu i là nhóm trưởng, tức là Find(i) = i thì duyệt tiếp các đỉnh j = i+1 nvà thỏa điều kiện Find(j) = i , tức là j thuộc thành phần liên thông i thì hiển thị đỉnh j

Ngày đăng: 09/12/2016, 01:09

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[1] Lê Minh Hoàng,Giải thuật và lập trình, NXB Đại học Sư phạm Hà Nội, 1999 – 2002 Sách, tạp chí
Tiêu đề: Giải thuật và lập trình
Nhà XB: NXB Đại học Sư phạm Hà Nội
[2] Nguyễn Xuân Huy, Sáng tạo trong thuật toán và lập trình, T1,2,3, NXB Thông Tin và Truyền Thông, 2012 Sách, tạp chí
Tiêu đề: Sáng tạo trong thuật toán và lập trình, T1,2,3
Nhà XB: NXB Thông Tin và Truyền Thông
[3] Rosen, Kenneth H (Phạm Văn Thiều và Phạm Hữu Thịnh dịch, 2003), 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 Sách, tạp chí
Tiêu đề: Toán học rời rạc ứng dụng trong tin học
Nhà XB: NXB khoa học và Kỹ thuật
[4] Nguyễn Thanh Hùng, Nguyễn Đức Nghĩa, Lý thuyết đồ thị, NXB Đại học Quốc gia Thành phố Hồ Chí Minh, 2007 Sách, tạp chí
Tiêu đề: Lý thuyết đồ thị
Nhà XB: NXB Đại học Quốc gia Thành phố Hồ Chí Minh
[6] Nguyễn Đức Nghĩa, Nguyễn Tô Thành, Toán rời rạc, NXB Đại học Quốc gia Hà nội , 2009, tái bản lần 8 Sách, tạp chí
Tiêu đề: Toán rời rạc
Nhà XB: NXB Đại học Quốc gia Hà nội
[7] Sở giao thông Lào Cai (2012), Thống kê thực trạng giao thông, Lào Cai.Tài liệu tiếng nước ngoài Sách, tạp chí
Tiêu đề: Thống kê thực trạng giao thông
Tác giả: Sở giao thông Lào Cai
Năm: 2012
[8] Bondy, J.A.; Murty, U.S.R., Graph Theory, Springer, ISBN 978-1- 84628-969-9, 2008 Sách, tạp chí
Tiêu đề: Graph Theory
[9] Knuth D., the Art of Computer Programming, T1,2,3, Mc, 2011 Sách, tạp chí
Tiêu đề: the Art of Computer Programming

HÌNH ẢNH LIÊN QUAN

1.1.2.1. Đồ thị vô hướng - Khảo sát tính liên thông của đồ thị bằng kỹ thuật find   union và ứng dụng
1.1.2.1. Đồ thị vô hướng (Trang 15)
1.1.2.2. Đồ thị có hướng - Khảo sát tính liên thông của đồ thị bằng kỹ thuật find   union và ứng dụng
1.1.2.2. Đồ thị có hướng (Trang 16)
1.1.3.5. Đồ thị hai phía - Khảo sát tính liên thông của đồ thị bằng kỹ thuật find   union và ứng dụng
1.1.3.5. Đồ thị hai phía (Trang 19)
Đồ thị liên thông: Đồ thị vô hướng G = (V, E) được gọi là liên thông - Khảo sát tính liên thông của đồ thị bằng kỹ thuật find   union và ứng dụng
th ị liên thông: Đồ thị vô hướng G = (V, E) được gọi là liên thông (Trang 23)
Hình 1.16.  Đồ thị vô hướng không có trọng số G - Khảo sát tính liên thông của đồ thị bằng kỹ thuật find   union và ứng dụng
Hình 1.16. Đồ thị vô hướng không có trọng số G (Trang 24)
Hình 1.19 . Đồ thị vô hướng không có trọng số G - Khảo sát tính liên thông của đồ thị bằng kỹ thuật find   union và ứng dụng
Hình 1.19 Đồ thị vô hướng không có trọng số G (Trang 28)
Bảng 1.4. Biểu diễn đồ thị không trọng số bằng danh sách cạnh (cung) - Khảo sát tính liên thông của đồ thị bằng kỹ thuật find   union và ứng dụng
Bảng 1.4. Biểu diễn đồ thị không trọng số bằng danh sách cạnh (cung) (Trang 29)
Hình 2.2. Cập nhật cạnh (1, 2) - Khảo sát tính liên thông của đồ thị bằng kỹ thuật find   union và ứng dụng
Hình 2.2. Cập nhật cạnh (1, 2) (Trang 34)
Hình 2.4. Cập nhật cạnh (2, 7) - Khảo sát tính liên thông của đồ thị bằng kỹ thuật find   union và ứng dụng
Hình 2.4. Cập nhật cạnh (2, 7) (Trang 35)
Hình 2.6. Cập nhật cạnh (5, 9) - Khảo sát tính liên thông của đồ thị bằng kỹ thuật find   union và ứng dụng
Hình 2.6. Cập nhật cạnh (5, 9) (Trang 36)
Bảng 2.2. Đồ thị vô hướng G 9 đỉnh, 6 cạnh - Khảo sát tính liên thông của đồ thị bằng kỹ thuật find   union và ứng dụng
Bảng 2.2. Đồ thị vô hướng G 9 đỉnh, 6 cạnh (Trang 39)
Hình 2.9 Đồ thị liên thông G có cây khung là nét in đậm - Khảo sát tính liên thông của đồ thị bằng kỹ thuật find   union và ứng dụng
Hình 2.9 Đồ thị liên thông G có cây khung là nét in đậm (Trang 43)
Đồ thị G được gọi là cầu hoặc là cạnh trọng yếu nếu xóa cạnh đó đi (giữ lại - Khảo sát tính liên thông của đồ thị bằng kỹ thuật find   union và ứng dụng
th ị G được gọi là cầu hoặc là cạnh trọng yếu nếu xóa cạnh đó đi (giữ lại (Trang 48)
Hình 3.1 Bản đồ huyện Bát Xát  Bảng 3.1. Đặt số hiệu cho huyện Bát Xát và các xã - Khảo sát tính liên thông của đồ thị bằng kỹ thuật find   union và ứng dụng
Hình 3.1 Bản đồ huyện Bát Xát Bảng 3.1. Đặt số hiệu cho huyện Bát Xát và các xã (Trang 63)
Bảng 3.3 Kết quả  chạy chương trình cây khung - Khảo sát tính liên thông của đồ thị bằng kỹ thuật find   union và ứng dụng
Bảng 3.3 Kết quả chạy chương trình cây khung (Trang 67)

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w