Khảo sát tính liên thông của đồ thị bằng Find-Union: Nghiên cứu và ứng dụng

Tìm hiểu về liên thông đồ thị qua thuật toán Find-Union! Khám phá cách thuật toán hoạt động, ứng dụng thực tế & giải quyết bài toán hiệu quả.

Chuyên ngành

Khoa học máy tính

Người đăng

Ẩn danh

Thể loại

Luận văn thạc sĩ

2016

83
1
0

Phí lưu trữ

30 Point

Mục lục chi tiết

LỜI CAM ĐOAN

LỜI CẢM ƠN

MỤC LỤC

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

DANH MỤC CÁC BẢNG

DANH MỤC CÁC HÌNH

1. 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

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

1.2.2. Phạm vi nghiên cứu

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

1.3.1. Về thực nghiệm:

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

2. TỔNG QUAN VỀ LÝ THUYẾT ĐỒ THỊ HỮU HẠN

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

2.1.1. Định nghĩa đồ thị

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

2.1.3. Bậc của đồ thị

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

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

2.2.1. Ma trận kề, ma trận trọng số

2.2.2. Danh sách cạnh (cung)

2.2.3. Danh sách kề

3. KỸ THUẬT FIND – UNION TRONG XỬ LÝ ĐỒ THỊ

3.1. Kỹ thuật FIND – UNION

4. MỘT SỐ ỨNG DỤNG

4.1. Một số ứng dụng

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

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

4.2.2. Phân tích bài toán

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

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

TÀI LIỆU THAM KHẢO

Tóm tắt

I. Tổng Quan về Liên Thông Đồ Thị Khái Niệm Ứng Dụng

Trong khoa học máy tính, liên thông đồ thị đóng vai trò then chốt trong việc mô hình hóa và giải quyết nhiều bài toán thực tế. Đồ thị được định nghĩa là một cấu trúc bao gồm tập các đỉnh (nodes) và tập các cạnh (edges) nối các đỉnh đó. Tính liên thông đồ thị xác định khả năng kết nối giữa các đỉnh trong đồ thị. Một đồ thị được coi là liên thông nếu có đường đi giữa mọi cặp đỉnh. Nếu không, đồ thị sẽ bao gồm nhiều thành phần liên thông riêng biệt. Việc nghiên cứu liên thông đồ thị có ứng dụng rộng rãi, từ mạng truyền thông, tổ chức dữ liệu, đến thiết kế chip máy tính và nhiều lĩnh vực khác. 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. Tương tự, mạng lưới giao thông, các mối quan hệ xã hội, hay cấu trúc phân tử trong hóa học cũng có thể được mô hình hóa bằng đồ thị và phân tích tính liên thông. Việc phát triển các thuật toán hiệu quả để xử lý đồ thị và xác định liên thông là một vấn đề quan trọng trong khoa học máy tính. Luận văn của Trần Bình An (2016) đã 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 tìm hiểu các khái niệm về đồ thị hữu hạn, tính liên thông, và thuật toán Find-Union. Nghiên cứu này góp phần làm sáng tỏ ứng dụng thực tiễn của lý thuyết đồ thị trong nhiều lĩnh vực. Từ việc giải quyết các bài toán định tuyến đến phân tích mạng xã hội, liên thông đồ thị là một công cụ mạnh mẽ để hiểu và giải quyết các vấn đề phức tạp.

1.1. Định Nghĩa Các Loại Đồ Thị Nền Tảng Lý Thuyết

Đồ thị, về bản chất, 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. Các loại đồ thị phổ biến bao gồm đồ thị vô hướng, đồ thị có hướng, đồ thị hỗn hợp, và các dạng đặc biệt như đồ thị đầy đủ, đồ thị vòng, đồ thị bánh xe, đồ thị lập phương, đồ thị hai phía. Mỗi loại đồ thị có những đặc điểm và ứng dụng riêng biệt. Ví dụ, đồ thị đầy đủ 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. Đồ thị hai phía là đồ thị mà 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. Định lý quan trọng liên quan đến đồ thị hai phía là: Đơn đồ thị là đồ thị hai phía khi và chỉ khi nó không chứa chu trình độ dài lẻ.

1.2. Biểu Diễn Đồ Thị Trên Máy Tính Ma Trận Danh Sách

Để lưu trữ và xử lý đồ thị trên máy tính, cần có các cấu trúc dữ liệu phù hợp. Các phương pháp biểu diễn đồ thị phổ biến bao gồm ma trận kề, ma trận trọng số, danh sách cạnh (cung), và danh sách kề. Ma trận kề là một ma trận vuông cấp n (n là số đỉnh của đồ thị), trong đó a[i, j] = 1 nếu có cạnh nối đỉnh i và đỉnh j, và a[i, j] = 0 nếu không có. Danh sách cạnh lưu trữ danh sách tất cả các cạnh (cung) của đồ thị. Danh sách kề lưu trữ, với mỗi đỉnh v của đồ thị, danh sách các đỉnh kề với nó. 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ể.

II. Giải Quyết Bài Toán Liên Thông Giới Thiệu Thuật Toán Find Union

Trong lý thuyết đồ thị, thuật toán Find-Union, còn được gọi là Disjoint Set Union (DSU), là một công cụ mạnh mẽ để quản lý các tập rời nhau và giải quyết các bài toán liên quan đến tính liên thông. Thuật toán này cung cấp hai thao tác chính: Find(x), tìm phần tử đại diện của tập chứa phần tử x; và Union(x, y), hợp nhất hai tập chứa phần tử x và y thành một tập duy nhất. Ý tưởng cơ bản của thuật toán Find-Union là sử dụng một cấu trúc cây để biểu diễn mỗi tập hợp. Mỗi nút trong cây đại diện cho một phần tử của tập hợp, và gốc của cây đại diện cho phần tử đại diện của tập hợp. Thao tác Find(x) sẽ tìm gốc của cây chứa x, và thao tác Union(x, y) sẽ nối gốc của cây chứa x vào gốc của cây chứa y. Để cải thiện hiệu suất, hai kỹ thuật thường được sử dụng là Union by RankPath Compression. Union by Rank giữ cho cây tương đối cân bằng bằng cách luôn nối cây có rank (chiều cao) nhỏ hơn vào cây có rank lớn hơn. Path Compression làm phẳng cây bằng cách, trong quá trình tìm kiếm gốc, gán trực tiếp tất cả các nút trên đường đi tìm kiếm vào gốc. Với hai kỹ thuật này, độ phức tạp thời gian của cả hai thao tác FindUnion trở nên rất gần với hằng số.

2.1. Cấu Trúc Dữ Liệu Các Thao Tác Cơ Bản của Find Union

Cấu trúc dữ liệu chính được sử dụng trong thuật toán Find-Union là một mảng (hoặc một cấu trúc tương tự) để lưu trữ thông tin về phần tử đại diện của mỗi tập hợp. Ban đầu, mỗi phần tử được coi là một tập hợp riêng biệt, và phần tử đại diện của mỗi tập hợp là chính phần tử đó. Thao tác Find(x) được thực hiện bằng cách đệ quy tìm phần tử đại diện của tập hợp chứa x, cho đến khi tìm thấy phần tử đại diện là chính nó (tức là, x là phần tử đại diện). Thao tác Union(x, y) được thực hiện bằng cách tìm phần tử đại diện của tập hợp chứa x và phần tử đại diện của tập hợp chứa y, và sau đó hợp nhất hai tập hợp bằng cách gán phần tử đại diện của một tập hợp thành phần tử đại diện của tập hợp kia. Để cải thiện hiệu suất, kỹ thuật Union by Rank có thể được sử dụng. Kỹ thuật này giữ cho cây tương đối cân bằng bằng cách luôn nối cây có rank (chiều cao) nhỏ hơn vào cây có rank lớn hơn.

2.2. Tối Ưu Thuật Toán Union by Rank Path Compression

Union by RankPath Compression là hai kỹ thuật tối ưu quan trọng giúp cải thiện đáng kể hiệu suất của thuật toán Find-Union. Union by Rank giữ cho cây tương đối cân bằng bằng cách luôn nối cây có rank nhỏ hơn vào cây có rank lớn hơn. Rank của một cây là một ước lượng về chiều cao của cây. Khi hai cây có rank khác nhau được hợp nhất, cây có rank nhỏ hơn sẽ được nối vào cây có rank lớn hơn. Khi hai cây có rank bằng nhau được hợp nhất, rank của cây mới sẽ tăng lên một. Path Compression làm phẳng cây bằng cách, trong quá trình tìm kiếm gốc, gán trực tiếp tất cả các nút trên đường đi tìm kiếm vào gốc. Điều này giúp giảm thời gian tìm kiếm trong các lần gọi Find tiếp theo. Khi cả hai kỹ thuật Union by RankPath Compression được sử dụng, độ phức tạp thời gian của cả hai thao tác FindUnion trở nên rất gần với hằng số.

III. Ứng Dụng Find Union Tìm Thành Phần Liên Thông Hiệu Quả

Một trong những ứng dụng quan trọng nhất của thuật toán Find-Union là tìm thành phần liên thông của một đồ thị. Cho một đồ thị vô hướng G = (V, E), một thành phần liên thông là một tập hợp các đỉnh mà giữa hai đỉnh bất kỳ trong tập hợp đó đều có đường đi. Để tìm thành phần liên thông của đồ thị, có thể sử dụng thuật toán Find-Union như sau: Ban đầu, mỗi đỉnh được coi là một thành phần liên thông riêng biệt. Duyệt qua tất cả các cạnh của đồ thị, và với mỗi cạnh (u, v), thực hiện thao tác Union(u, v). Sau khi duyệt xong tất cả các cạnh, mỗi thành phần liên thông sẽ được đại diện bởi một cây trong cấu trúc Find-Union. Để liệt kê các đỉnh trong mỗi thành phần liên thông, duyệt qua tất cả các đỉnh của đồ thị, và với mỗi đỉnh v, tìm phần tử đại diện của tập hợp chứa v bằng thao tác Find(v). Tất cả các đỉnh có cùng phần tử đại diện sẽ thuộc cùng một thành phần liên thông. Thuật toán Find-Union cung cấp một phương pháp hiệu quả để tìm thành phần liên thông của đồ thị, đặc biệt đối với các đồ thị lớn và thưa.

3.1. Xác Định Số Lượng Thành Phần Liên Thông Giải Pháp

Để xác định số lượng thành phần liên thông của đồ thị G = (V, E), thuật toán Find-Union có thể được sử dụng theo các bước sau: Đầu tiên, khởi tạo mỗi đỉnh là một thành phần liên thông riêng biệt. Số lượng thành phần liên thông ban đầu bằng số đỉnh của đồ thị (|V|). Tiếp theo, duyệt qua tất cả các cạnh (u, v) trong tập cạnh E. Với mỗi cạnh, thực hiện thao tác Union(u, v). Thao tác Union sẽ hợp nhất hai thành phần liên thông chứa đỉnh u và đỉnh v nếu chúng thuộc hai thành phần liên thông khác nhau. Mỗi khi hai thành phần liên thông được hợp nhất, số lượng thành phần liên thông giảm đi một. Cuối cùng, sau khi duyệt qua tất cả các cạnh, số lượng thành phần liên thông còn lại sẽ là số lượng thành phần liên thông của đồ thị G.

3.2. Liệt Kê Các Đỉnh Thuộc Mỗi Thành Phần Liên Thông

Sau khi sử dụng thuật toán Find-Union để xác định các thành phần liên thông của đồ thị, cần liệt kê các đỉnh thuộc mỗi thành phần liên thông. Để thực hiện điều này, duyệt qua tất cả các đỉnh của đồ thị. Với mỗi đỉnh v, tìm phần tử đại diện của thành phần liên thông chứa v bằng thao tác Find(v). Tất cả các đỉnh có cùng phần tử đại diện sẽ thuộc cùng một thành phần liên thông. Do đó, có thể tạo một danh sách các đỉnh cho mỗi phần tử đại diện. Khi duyệt qua tất cả các đỉnh, thêm mỗi đỉnh vào danh sách tương ứng với phần tử đại diện của nó. Kết quả là một tập hợp các danh sách, mỗi danh sách chứa tất cả các đỉnh thuộc một thành phần liên thông duy nhất.

3.3. Độ Phức Tạp Thuật Toán Ưu Điểm Khi Áp Dụng Find Union

Thuật toán Find-Union, khi được tối ưu hóa bằng Union by RankPath Compression, có độ phức tạp thời gian rất gần với hằng số cho cả hai thao tác FindUnion. Do đó, độ phức tạp thời gian để tìm thành phần liên thông của một đồ thị với n đỉnh và m cạnh bằng thuật toán Find-Union là O(m * α(n)), trong đó α(n) là hàm Ackermann nghịch đảo, một hàm tăng rất chậm. Trên thực tế, α(n) có thể coi là hằng số đối với hầu hết các giá trị n thực tế. Ưu điểm của việc sử dụng thuật toán Find-Union để tìm thành phần liên thông bao gồm: Độ phức tạp thời gian gần như tuyến tính, dễ cài đặt, và khả năng xử lý đồ thị lớn một cách hiệu quả.

IV. Cây Khung Nhỏ Nhất Giải Pháp Tối Ưu với Thuật Toán Kruskal

Bài toán tìm cây khung nhỏ nhất (Minimum Spanning Tree - MST) là một bài toán kinh điển trong lý thuyết đồ thị. Cho một đồ thị liên thông có trọng số G = (V, E), cây khung nhỏ nhất là một cây khung của G có tổng trọng số của các cạnh là nhỏ nhất. Thuật toán Kruskal là một thuật toán tham lam hiệu quả để tìm cây khung nhỏ nhất. Thuật toán này hoạt động bằng cách duyệt qua các cạnh của đồ thị theo thứ tự tăng dần của trọng số, và thêm mỗi cạnh vào cây khung nếu nó không tạo thành chu trình. Để kiểm tra xem một cạnh có tạo thành chu trình hay không, thuật toán Find-Union có thể được sử dụng. Ban đầu, mỗi đỉnh được coi là một tập hợp riêng biệt. Khi một cạnh (u, v) được thêm vào cây khung, hai tập hợp chứa đỉnh u và đỉnh v được hợp nhất bằng thao tác Union(u, v). Nếu hai đỉnh u và v đã thuộc cùng một tập hợp (tức là, Find(u) == Find(v)), thì việc thêm cạnh (u, v) sẽ tạo thành chu trình.

4.1. Thuật Toán Kruskal Chi Tiết Các Bước Thực Hiện

Thuật toán Kruskal được sử dụng để tìm cây khung nhỏ nhất của một đồ thị có trọng số liên thông. Các bước thực hiện thuật toán Kruskal như sau: Bước 1: Sắp xếp tất cả các cạnh của đồ thị theo thứ tự tăng dần của trọng số. Bước 2: Khởi tạo một cây khung rỗng T. Bước 3: Duyệt qua các cạnh đã sắp xếp theo thứ tự. Với mỗi cạnh (u, v), kiểm tra xem việc thêm cạnh này vào cây khung T có tạo thành chu trình hay không. Nếu không tạo thành chu trình, thêm cạnh (u, v) vào cây khung T. Bước 4: Lặp lại bước 3 cho đến khi cây khung T chứa đủ n-1 cạnh (n là số đỉnh của đồ thị). Kết quả là cây khung T là cây khung nhỏ nhất của đồ thị.

4.2. Ứng Dụng Find Union trong Kiểm Tra Chu Trình của Kruskal

Thuật toán Find-Union đóng vai trò quan trọng trong việc kiểm tra chu trình trong thuật toán Kruskal. Trước khi thêm một cạnh (u, v) vào cây khung, cần kiểm tra xem việc thêm cạnh này có tạo thành chu trình hay không. Điều này có thể được thực hiện bằng cách sử dụng thuật toán Find-Union. Ban đầu, mỗi đỉnh được coi là một tập hợp riêng biệt. Khi một cạnh (u, v) được xem xét, thực hiện thao tác Find(u)Find(v) để tìm phần tử đại diện của tập hợp chứa đỉnh u và đỉnh v. Nếu Find(u) khác Find(v), điều đó có nghĩa là đỉnh u và đỉnh v thuộc hai tập hợp khác nhau, và việc thêm cạnh (u, v) sẽ không tạo thành chu trình. Trong trường hợp này, thêm cạnh (u, v) vào cây khung, và thực hiện thao tác Union(u, v) để hợp nhất hai tập hợp chứa đỉnh u và đỉnh v. Nếu Find(u) bằng Find(v), điều đó có nghĩa là đỉnh u và đỉnh v đã thuộc cùng một tập hợp, và việc thêm cạnh (u, v) sẽ tạo thành chu trình. Trong trường hợp này, bỏ qua cạnh (u, v).

V. Ứng Dụng Thực Tế Bài Toán Giao Thông Ứng Phó Thiên Tai

Lý thuyết đồ thị và thuật toán Find-Union có nhiều ứng dụng thực tế trong các lĩnh vực khác nhau. Một ví dụ điển hình là bài toán "Giao thông trong ứng phó thiên tai". Trong tình huống thiên tai, việc duy trì kết nối giao thông giữa các khu vực là rất quan trọng để cung cấp viện trợ và sơ tán người dân. Có thể sử dụng đồ thị để mô hình hóa mạng lưới giao thông, trong đó các đỉnh đại diện cho các khu vực và các cạnh đại diện cho các tuyến đường. Trọng số của các cạnh có thể biểu thị khoảng cách, thời gian di chuyển, hoặc chi phí vận chuyển. Khi một số tuyến đường bị tắc nghẽn do thiên tai, cần tìm các tuyến đường thay thế để đảm bảo kết nối giữa các khu vực. Thuật toán Find-Union có thể được sử dụng để xác định các thành phần liên thông của mạng lưới giao thông sau khi loại bỏ các tuyến đường bị tắc nghẽn. Các thành phần liên thông này cho biết các khu vực nào vẫn còn kết nối với nhau, và các khu vực nào bị cô lập. Thông tin này có thể được sử dụng để lên kế hoạch cung cấp viện trợ và sơ tán người dân một cách hiệu quả. Luận văn của Trần Bình An (2016) cũng đề cập đến ứng dụng này, minh họa cho thấy tính ứng dụng cao của Find-Union trong giải quyết các vấn đề thực tiễn.

5.1. Mô Hình Hóa Mạng Lưới Giao Thông Bằng Đồ Thị

Mạng lưới giao thông có thể được mô hình hóa một cách hiệu quả bằng đồ thị. Trong mô hình này, các đỉnh đại diện cho các địa điểm quan trọng như thành phố, thị trấn, hoặc trung tâm phân phối. Các cạnh đại diện cho các tuyến đường kết nối các địa điểm này. Trọng số của các cạnh có thể biểu thị các thông tin khác nhau, tùy thuộc vào mục đích của mô hình. Ví dụ, trọng số có thể biểu thị khoảng cách giữa hai địa điểm, thời gian di chuyển, chi phí vận chuyển, hoặc mức độ tắc nghẽn giao thông. Mô hình đồ thị cho phép phân tích và tối ưu hóa mạng lưới giao thông, chẳng hạn như tìm đường đi ngắn nhất giữa hai địa điểm, xác định các điểm nghẽn cổ chai, hoặc lên kế hoạch xây dựng các tuyến đường mới.

5.2. Ứng Dụng Find Union để Xác Định Khu Vực Bị Cô Lập

Trong tình huống thiên tai, nhiều tuyến đường có thể bị tắc nghẽn, gây ra sự gián đoạn trong mạng lưới giao thông. Để ứng phó với tình huống này, cần xác định các khu vực bị cô lập do tắc nghẽn giao thông. Thuật toán Find-Union có thể được sử dụng để xác định các thành phần liên thông của mạng lưới giao thông sau khi loại bỏ các tuyến đường bị tắc nghẽn. Các thành phần liên thông này cho biết các khu vực nào vẫn còn kết nối với nhau, và các khu vực nào bị cô lập. Thông tin này có thể được sử dụng để ưu tiên cung cấp viện trợ và sơ tán người dân khỏi các khu vực bị cô lập.

VI. Kết Luận Hướng Phát Triển Tiềm Năng Thuật Toán Find Union

Thuật toán Find-Union là một công cụ mạnh mẽ và linh hoạt để giải quyết các bài toán liên quan đến liên thông đồ thị và quản lý các tập rời nhau. Với độ phức tạp thời gian gần như tuyến tính, thuật toán này đặc biệt hiệu quả đối với các đồ thị lớn và thưa. Các ứng dụng của thuật toán Find-Union rất đa dạng, từ tìm thành phần liên thôngcây khung nhỏ nhất đến giải quyết các bài toán thực tế trong giao thông, mạng máy tính, và nhiều lĩnh vực khác. Trong tương lai, có thể tiếp tục nghiên cứu và phát triển các biến thể của thuật toán Find-Union để cải thiện hiệu suất và mở rộng phạm vi ứng dụng. Ví dụ, có thể nghiên cứu các thuật toán song song hóa để tận dụng sức mạnh của các hệ thống đa lõi. Đồng thời, việc tích hợp thuật toán Find-Union với các kỹ thuật khác, như học máy và trí tuệ nhân tạo, có thể mở ra những khả năng mới trong việc giải quyết các bài toán phức tạp trong thế giới thực.

6.1. Tổng Kết Ưu Điểm Hạn Chế của Thuật Toán Find Union

Ưu điểm chính của thuật toán Find-Union bao gồm: Hiệu suất cao với độ phức tạp thời gian gần như tuyến tính, dễ cài đặt và sử dụng, và khả năng xử lý đồ thị lớn. Hạn chế của thuật toán Find-Union là nó chỉ áp dụng được cho các bài toán liên quan đến quản lý các tập rời nhau và liên thông đồ thị. Ngoài ra, thuật toán này không thể xử lý các thay đổi động trong đồ thị, chẳng hạn như thêm hoặc xóa đỉnh và cạnh.

6.2. Đề Xuất Các Hướng Nghiên Cứu Ứng Dụng Tiềm Năng Mới

Các hướng nghiên cứu và ứng dụng tiềm năng mới của thuật toán Find-Union bao gồm: Phát triển các thuật toán song song hóa để tận dụng sức mạnh của các hệ thống đa lõi. Tích hợp thuật toán Find-Union với các kỹ thuật khác, như học máy và trí tuệ nhân tạo, để giải quyết các bài toán phức tạp trong thế giới thực. Ứng dụng thuật toán Find-Union trong các lĩnh vực mới, chẳng hạn như phân tích mạng xã hội, tin sinh học, và tài chính.

22/09/2025

Trích đoạn nội dung tài liệu

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ị… Số hóa bởi Trung tâm Học liệu – ĐHTN http://www. Đồ thị và các khái niệm liên quan 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 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.

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. Đồ 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)}.

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www. Trong đồ thị ở hình 1.2 thì hai đỉnh a và c kề với đỉnh b, ba đỉnh a, c 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.

Đồ 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]. Đơn đồ thị vô hướng 8 đỉnh 7 cạnh Số hóa bởi Trung tâm Học liệu – ĐHTN http://www. Đồ 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].

Đơn đồ thị có hướng 8 đỉnh 7 cạnh 1. Đồ 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]. Đồ thị hỗn hợp Số hóa bởi Trung tâm Học liệu – ĐHTN http://www. Một số dạng đồ thị đặc biệt 1.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. Đồ thị đầy đủ Đồ thị đầy đủ Kn có tất cả n*(n - 1)/2 cạnh, nó là đơn đồ thị có nhiều cạnh nhất. Đồ thị vòng Đồ thị vòng Cn, n ≥ 3, gồm n đỉnh v1, v2,.vn và các cạnh (v1, v2), (v2, v3). Thí dụ: Đồ thị vòng C1, C2, C3 như hình 1.7 Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.3 Đồ thị bánh xe Đồ thị bánh xe Wn thu được từ Cn bằng cách bổ sung vào một đỉnh mới nối với tất cả các đỉnh của Cn [4].

Thí dụ: Đồ thị bánh xe W1, W2, W3 như hình 1. Đồ thị bánh xe W1, W2, W3 1.4 Đồ thị lập phương Đồ thị lập phương n đỉnh Qn là đồ 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, Q3 như hình 1.

Đồ thị lập phương Q1, Q2, Q3 Số hóa bởi Trung tâm Học liệu – ĐHTN http://www. Đồ 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 đỉnh trong 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 thúc. - Ngược lại, đặt X=X ∩ T. - Tiếp tục xét như vậy đối với T’ là tập các đỉnh kề của T,. Đồ thị hai phía G=(X ∪ Y, E) với |X|= m, |Y| = n được gọi là đồ thị hai phía đầy đủ và ký hiệu là K2, 3, K3, 3, K3, 4.

Thí dụ: Các đồ thị 2 phía K2, 3, K3, 3, K3, 4 như hình 1. Đồ thị 2 phía K2,3, K3,3, K3,4 Số hóa bởi Trung tâm Học liệu – ĐHTN http://www. Đồ 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 cho cá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 đồ thị 1. Bậc của đồ thị vô hướng Hình 1. Đồ thị vô hướng Hình 1.12 là một đồ thị đơn với tập đỉnh V = {1, 2, 3, 4, 5, 6} và tập 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 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. Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.vn 13 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ậc của đồ thị có hướng Hình 1. Đồ thị có hướng Xét đồ thị cho trong hình 1.

Bậc của một đỉnh v là số cạnh liên thuộc với v (trong đó, khuyên được tính hai lần). Bậc của v được ký hiệu là deg(v). 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ý hiệu là deg+(v) 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. Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.vn 14 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]. Đườ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 = (V, E) là dãy: x0, x1,…, xn-1, xk Trong đó: + k là số nguyên dương, + x0 = u, xk = v, (xi, xi+1)  E, + i = 0, 1, 2,.

Đường đi như trên còn có thể biểu diễn thành dãy các cạnh: (x0, x1), (x1,x2) ,. Đỉ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. Đườ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, Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.vn 15 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ị.

Nội dung được bảo vệ bản quyền — Tải xuống đầy đủ