Luận văn thạc sĩ: Ứng dụng đồ thị Euler tối ưu hóa bài toán tìm đường đi ngắn nhất

Luận văn thạc sĩ nghiên cứu công nghệ thông tin ứng dụng đồ thị euler tối ưu hóa bài toán tìm đường đi ngắn nhất, đánh giá hiện trạng, phân tích vấn đề, đề xuất biện pháp hoàn

Chuyên ngành

Công Nghệ Thông Tin

Người đăng

Ẩn danh

Thể loại

Luận Văn
79
0
0

Phí lưu trữ

30 Point

Tóm tắt

I. Khám phá luận văn CNTT về đồ thị Euler và bài toán tối ưu

Luận văn thạc sĩ Công nghệ thông tin về ứng dụng đồ thị Euler là một công trình nghiên cứu khoa học CNTT có giá trị thực tiễn cao. Nghiên cứu này tập trung vào việc giải quyết bài toán tìm đường đi ngắn nhất qua tất cả các cạnh của một đồ thị, một vấn đề cốt lõi trong tối ưu hóa logistics và quy hoạch đô thị. Nền tảng của luận văn dựa trên lý thuyết đồ thị, một lĩnh vực toán học được Leonhard Euler khởi xướng từ năm 1736. Lý thuyết này cung cấp công cụ mạnh mẽ để mô hình hóa các mạng lưới phức tạp như giao thông, viễn thông, và chuỗi cung ứng. Trọng tâm của nghiên cứu là khái niệm về chu trình Euler – một đường đi khép kín đi qua mỗi cạnh của đồ thị đúng một lần. Một chu trình như vậy đại diện cho lộ trình tối ưu nhất, tiết kiệm chi phí và thời gian. Tuy nhiên, điều kiện để tồn tại một chu trình Euler (mọi đỉnh phải có bậc chẵn) hiếm khi được thỏa mãn trong thực tế. Luận văn của tác giả Nguyễn Văn Nhân (2015) đã đi sâu vào việc giải quyết vấn đề này bằng cách đề xuất các phương pháp biến đổi đồ thị không-Euler thành đồ thị Euler, từ đó tìm ra lời giải tối ưu. Công trình này không chỉ tổng hợp kiến thức về cấu trúc dữ liệu và giải thuật mà còn cài đặt thử nghiệm, so sánh hiệu quả của các thuật toán, mang lại cái nhìn toàn diện và sâu sắc về một bài toán kinh điển.

1.1. Nền tảng lý thuyết đồ thị trong nghiên cứu khoa học CNTT

Lý thuyết đồ thị là xương sống của nhiều bài toán tối ưu hóa hiện đại. Nó cho phép biểu diễn các đối tượng và mối quan hệ giữa chúng một cách trực quan thông qua các đỉnh (vertices) và cạnh (edges). Trong bối cảnh của luận văn, mỗi giao lộ được xem là một đỉnh và mỗi con đường là một cạnh. Các cấu trúc dữ liệu cơ bản như ma trận kềdanh sách kề được sử dụng để biểu diễn đồ thị trên máy tính, tạo tiền đề cho việc cài đặt các thuật toán phức tạp. Việc hiểu rõ các khái niệm như bậc của đỉnh, tính liên thông, và các dạng đồ thị đặc biệt là yêu cầu cơ bản để tiếp cận bài toán.

1.2. Vai trò của chu trình Euler và đường đi Euler trong tối ưu

Một chu trình Euler tồn tại trong một đồ thị liên thông khi và chỉ khi mọi đỉnh của nó đều có bậc chẵn. Đây là kịch bản lý tưởng cho bài toán quy hoạch tuyến đường, vì nó đảm bảo hành trình đi qua mọi con đường đúng một lần và quay về điểm xuất phát với tổng quãng đường ngắn nhất. Tương tự, một đường đi Euler (không khép kín) tồn tại nếu đồ thị có đúng hai đỉnh bậc lẻ. Các định lý này, đặc biệt là định lý Euler, là chìa khóa để xác định tính tối ưu ban đầu của một mạng lưới. Khi đồ thị không thỏa mãn các điều kiện này, bài toán trở nên phức tạp hơn, đòi hỏi các kỹ thuật biến đổi đồ thị.

II. Thách thức cốt lõi Bài toán người đưa thư Trung Hoa CPP

Vấn đề chính mà luận văn giải quyết là một biến thể của bài toán người đưa thư Trung Hoa (Chinese Postman Problem - CPP), được Quản Mai Cốc đưa ra vào năm 1962. Bài toán này mô tả tình huống thực tế khi một mạng lưới (như mạng lưới đường phố) không phải là một đồ thị Euler hoàn hảo. Cụ thể, trong thực tế, các giao lộ thường là ngã ba, ngã năm, dẫn đến sự tồn tại của các đỉnh có bậc lẻ. Khi một đồ thị có các đỉnh bậc lẻ, không thể tồn tại một chu trình Euler. Điều này có nghĩa là bất kỳ hành trình nào muốn đi qua tất cả các con đường đều buộc phải đi lại trên một số con đường ít nhất hai lần. Thách thức lớn nhất là xác định những con đường nào cần đi lặp lại sao cho tổng chiều dài của toàn bộ hành trình là ngắn nhất. Đây là một bài toán tối ưu hóa tổ hợp phức tạp. Việc lựa chọn sai các cạnh để lặp lại có thể làm tăng đáng kể chi phí vận hành, tiêu tốn nhiên liệu và thời gian. Luận văn đã phân tích sâu sắc rằng số lượng đỉnh bậc lẻ trong bất kỳ đồ thị nào cũng luôn là một số chẵn. Do đó, mục tiêu là tìm cách "ghép cặp" các đỉnh bậc lẻ này bằng cách thêm các đường đi ngắn nhất giữa chúng, biến chúng thành các đỉnh bậc chẵn một cách hiệu quả nhất.

2.1. Phân tích bài toán Chinese Postman Problem CPP kinh điển

Chinese Postman Problem (CPP) yêu cầu tìm một chu trình có trọng số nhỏ nhất đi qua mọi cạnh của một đồ thị vô hướng có trọng số. Nếu đồ thị là Euler, lời giải chính là tổng trọng số của tất cả các cạnh. Tuy nhiên, khi có các đỉnh bậc lẻ, vấn đề trở thành tìm một bộ ghép cặp hoàn hảo (perfect matching) trên tập các đỉnh bậc lẻ sao cho tổng trọng số của các đường đi ngắn nhất giữa các cặp đỉnh này là nhỏ nhất. Trọng số này chính là chi phí phụ thêm để "Euler hóa" đồ thị. Các thuật toán kinh điển như thuật toán Floyd-Warshall thường được sử dụng ở bước đầu tiên để tính toán khoảng cách ngắn nhất giữa mọi cặp đỉnh bậc lẻ.

2.2. Khó khăn trong việc xử lý đỉnh bậc lẻ của đồ thị vô hướng

Việc xử lý các đỉnh bậc lẻ là trọng tâm của bài toán. Thách thức không chỉ nằm ở việc xác định các đỉnh này mà còn ở việc tìm ra cách ghép cặp tối ưu. Với 2k đỉnh bậc lẻ, số lượng các cách ghép cặp có thể tăng theo cấp số nhân, khiến cho việc tìm kiếm toàn bộ trở nên không khả thi về mặt tính toán. Theo định lý Goodman-Hedetniemi (1973), chi phí tăng thêm chính bằng tổng độ dài của các đường đi ngắn nhất trong bộ ghép cặp tối ưu. Do đó, mấu chốt của bài toán là tìm ra thuật toán hiệu quả để xác định bộ ghép cặp này, giảm thiểu độ phức tạp thuật toán và đưa ra lời giải gần tối ưu hoặc tối ưu tuyệt đối trong thời gian chấp nhận được.

III. Phương pháp giải thuật Tham lam cho bài toán ghép cặp tối ưu

Để giải quyết bài toán ghép cặp các đỉnh bậc lẻ, luận văn đã đề xuất và phân tích hai giải pháp, trong đó giải pháp đầu tiên là sử dụng giải thuật Tham lam (Greedy algorithm). Đây là một phương pháp tiếp cận trực quan và dễ cài đặt, thường được sử dụng trong các bài toán tối ưu hóa. Nguyên tắc của thuật toán Tham lam là ở mỗi bước, nó sẽ đưa ra lựa chọn được cho là tốt nhất tại thời điểm đó mà không cần quan tâm đến các bước tiếp theo. Trong bối cảnh của bài toán này, thuật toán sẽ liên tục tìm cặp đỉnh bậc lẻ chưa được ghép có khoảng cách ngắn nhất và ghép chúng lại với nhau. Quá trình này được lặp đi lặp lại cho đến khi tất cả các đỉnh bậc lẻ đều được ghép cặp. Ưu điểm lớn nhất của phương pháp này là tốc độ. Độ phức tạp thuật toán của nó tương đối thấp, giúp nhanh chóng đưa ra một giải pháp, đặc biệt hữu ích cho các đồ thị có quy mô lớn. Tuy nhiên, bản chất "tham lam" của nó cũng là nhược điểm. Một lựa chọn tối ưu cục bộ ở một bước có thể dẫn đến một giải pháp tổng thể không phải là tối ưu toàn cục. Ví dụ, việc ghép hai đỉnh gần nhau nhất có thể loại bỏ khả năng ghép chúng với các đỉnh khác xa hơn nhưng lại tạo ra một cấu hình tổng thể tốt hơn. Mặc dù vậy, luận văn chỉ ra rằng trong nhiều trường hợp thực tế, kết quả từ giải thuật Tham lam vẫn đủ tốt và chấp nhận được.

3.1. Nguyên tắc hoạt động và cài đặt giải thuật Tham lam

Cài đặt giải thuật Tham lam bắt đầu bằng việc tính toán ma trận chứa đường đi ngắn nhất giữa tất cả các cặp đỉnh bậc lẻ, thường sử dụng thuật toán Floyd-Warshall hoặc chạy thuật toán Dijkstra nhiều lần từ mỗi đỉnh bậc lẻ. Sau đó, thuật toán lặp qua các bước: chọn cạnh (đường đi) có trọng số nhỏ nhất trong ma trận, ghép hai đỉnh tương ứng, và loại bỏ cả hai đỉnh này khỏi danh sách cần xét. Quá trình này tiếp tục cho đến khi không còn đỉnh nào chưa được ghép. Kết quả là một bộ ghép cặp hoàn chỉnh. Mặc dù đơn giản, việc cài đặt cần chú ý đến cấu trúc dữ liệu để quản lý hiệu quả các đỉnh và cạnh.

3.2. Đánh giá ưu và nhược điểm trong tối ưu hóa tổ hợp

Ưu điểm chính của giải thuật Tham lam là sự đơn giản và tốc độ thực thi nhanh. Nó cung cấp một lời giải nhanh chóng cho bài toán tối ưu hóa tổ hợp phức tạp. Tuy nhiên, nhược điểm chí mạng là không đảm bảo tính tối ưu toàn cục. Giải pháp mà nó tìm thấy có thể tốt, nhưng hiếm khi là tốt nhất có thể. Trong các ứng dụng quan trọng như tối ưu hóa logistics, nơi mỗi phần trăm chi phí tiết kiệm được đều có giá trị lớn, sự không tối ưu này có thể là một hạn chế đáng kể. Do đó, giải thuật này phù hợp hơn cho các bài toán yêu cầu tốc độ phản hồi nhanh hoặc khi sự chênh lệch so với lời giải tối ưu là không quá quan trọng.

IV. Bí quyết dùng giải thuật FindMinMatch tìm bộ ghép tối ưu

Để khắc phục nhược điểm của giải thuật Tham lam, luận văn đã đề xuất một giải pháp thứ hai mạnh mẽ hơn: giải thuật FindMinMatch. Đây là một thuật toán tìm kiếm đệ quy, duyệt qua tất cả các khả năng ghép cặp của các đỉnh bậc lẻ để đảm bảo tìm ra bộ ghép có tổng trọng số nhỏ nhất tuyệt đối. Không giống như cách tiếp cận cục bộ của giải thuật Tham lam, FindMinMatch khám phá toàn bộ không gian lời giải, đảm bảo tính tối ưu toàn cục. Thuật toán hoạt động bằng cách thử ghép một đỉnh bậc lẻ chưa được ghép với tất cả các đỉnh bậc lẻ còn lại. Với mỗi cặp ghép thử, nó lại gọi đệ quy chính nó để giải quyết bài toán con với số đỉnh ít hơn. Quá trình này tiếp tục cho đến khi tất cả các đỉnh đã được ghép, sau đó so sánh tổng trọng số của bộ ghép hiện tại với giá trị tối ưu đã tìm thấy trước đó. Mặc dù đảm bảo tìm ra lời giải chính xác nhất, độ phức tạp thuật toán của FindMinMatch rất cao, tăng theo cấp số nhân với số lượng đỉnh bậc lẻ. Điều này làm cho nó chỉ khả thi với các đồ thị có số lượng đỉnh bậc lẻ nhỏ (thường dưới 20). Luận văn đã thực hiện mô phỏng thuật toán và so sánh trực tiếp hiệu quả giữa hai phương pháp, cung cấp một cơ sở khoa học để lựa chọn giải thuật phù hợp tùy thuộc vào quy mô và yêu cầu cụ thể của bài toán.

4.1. Phân tích sâu về độ phức tạp thuật toán FindMinMatch

Giải thuật FindMinMatch về cơ bản là một thuật toán duyệt toàn bộ (brute-force) có cấu trúc. Độ phức tạp thuật toán của nó là một hàm của số lượng đỉnh bậc lẻ (2k). Số cách để ghép 2k đỉnh thành k cặp là (2k-1)!! = (2k)! / (k! * 2^k). Đây là một con số tăng trưởng rất nhanh. Do đó, thuật toán này không phù hợp cho các bài toán quy hoạch tuyến đường quy mô lớn trong thực tế. Tuy nhiên, nó lại là một công cụ benchmark hoàn hảo để đánh giá chất lượng của các thuật toán heuristic khác như giải thuật Tham lam.

4.2. So sánh hiệu quả trực tiếp với giải thuật Tham lam

Luận văn đã tiến hành so sánh kết quả và thời gian chạy của hai thuật toán trên cùng một bộ dữ liệu. Kết quả cho thấy FindMinMatch luôn tìm ra bộ ghép có tổng trọng số nhỏ hơn hoặc bằng so với giải thuật Tham lam, khẳng định tính tối ưu của nó. Ngược lại, thời gian thực thi của giải thuật Tham lam nhanh hơn nhiều bậc. Sự đánh đổi giữa tính tối ưu và thời gian tính toán là một yếu tố quan trọng trong nghiên cứu khoa học CNTT. Kết luận của luận văn đưa ra khuyến nghị: sử dụng FindMinMatch cho các bài toán có số đỉnh bậc lẻ ít để đạt độ chính xác cao, và sử dụng giải thuật Tham lam cho các bài toán lớn hơn nơi tốc độ là ưu tiên hàng đầu.

V. Case study Tối ưu hóa logistics thu gom rác tại Quận 4

Để chứng minh tính ứng dụng thực tiễn, luận văn đã xây dựng một case study cụ thể: "Bài toán phân công xe đi thu gom rác thải tại Quận 4, TP. HCM". Đây là một ứng dụng điển hình của bài toán người đưa thư Trung Hoa trong lĩnh vực tối ưu hóa logistics. Nhóm nghiên cứu đã tiến hành mô hình hóa bản đồ giao thông của một khu vực trong Quận 4 thành một đồ thị vô hướng có trọng số. Trong mô hình này, các giao lộ là đỉnh, các đoạn đường là cạnh, và chiều dài của đoạn đường là trọng số của cạnh. Dữ liệu thực tế được thu thập để đảm bảo tính chính xác của mô hình. Sau khi xây dựng đồ thị, bước đầu tiên là xác định các đỉnh có bậc lẻ, tương ứng với các giao lộ có số lượng đường đi vào là số lẻ. Tiếp theo, thuật toán Floyd-Warshall được áp dụng để tính ma trận khoảng cách ngắn nhất giữa tất cả các cặp đỉnh bậc lẻ. Cuối cùng, cả hai giải thuật (Tham lam và FindMinMatch) được triển khai để tìm bộ ghép cặp tối ưu, từ đó "Euler hóa" đồ thị. Kết quả mô phỏng thuật toán cho thấy việc áp dụng các phương pháp này giúp tạo ra một lộ trình thu gom rác hiệu quả, giảm thiểu quãng đường phải đi lại, qua đó tiết kiệm chi phí nhiên liệu và thời gian hoạt động.

5.1. Quy trình mô phỏng thuật toán trên bản đồ giao thông thực tế

Quy trình mô phỏng bao gồm nhiều bước. Đầu tiên là số hóa bản đồ, chuyển đổi các con đường và giao lộ thành một cấu trúc đồ thị mà máy tính có thể xử lý. Trọng số (chiều dài) được gán cho mỗi cạnh. Sau đó, một chương trình máy tính sẽ phân tích đồ thị để tìm các đỉnh bậc lẻ. Ma trận đường đi ngắn nhất giữa các đỉnh này được tính toán. Cuối cùng, các thuật toán ghép cặp được áp dụng để xác định các cạnh cần được nhân đôi (tương ứng với các con đường phải đi lại). Đồ thị mới sau khi được thêm cạnh sẽ trở thành đồ thị Euler, và thuật toán Fleury được sử dụng để tìm ra chu trình Euler cuối cùng, chính là lộ trình tối ưu cần tìm.

5.2. Kết quả và đánh giá hiệu quả thực tiễn trong quy hoạch tuyến đường

Kết quả thực nghiệm đã chứng minh hiệu quả của phương pháp đề xuất. Lộ trình được tạo ra từ đồ thị đã "Euler hóa" ngắn hơn đáng kể so với các lộ trình theo kinh nghiệm hoặc hoạch định thủ công. Luận văn đã trình bày bảng so sánh chi tiết về tổng chiều dài đường đi, thời gian thực thi của thuật toán, và chi phí tiết kiệm được. Nghiên cứu này khẳng định rằng việc áp dụng lý thuyết đồ thị và các thuật toán tối ưu có thể mang lại lợi ích kinh tế to lớn cho các bài toán quy hoạch tuyến đường trong quản lý đô thị, từ thu gom rác, giao hàng, đến tuần tra an ninh.

17/07/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ị, bậc của đồ thị, tính liên thông của đồ thị, đường đi, chu trình của đồ thị. Đồ thị và các khái niệm liên quan [3] 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 ví dụ cụ thể về đồ thị. 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ả: 4 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. Xét đồ thị vô hướng bên dưới: b c d a e Hình 1.

Đồ thị hữu hạn Đồ thị G cho ở hình 1.2 với tập cá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)}. Trong đồ thị ở ví dụ 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ị có hướng Đồ thị vô hướng là đồ thị chỉ chứa các cạnh vô hướng (không phân biệt hướng). Đồ thị có hướng là đồ thị có chứa các cạnh có hướng. 5 Hiển nhiên, mỗi đồ thị vô hướng có thể biểu diễn bằng một đồ thị có hướng bằng cách thay mỗi cạnh vô hướng bằng hai cạnh có hướng tương ứng. Đơn đồ thị: là đồ thị mà mỗi cặp đỉnh được nối với nhau bởi không quá một cạnh (thường gọi tắt là đồ thị).

Đa đồ thị: là đồ thị có những cặp đỉnh được nối với nhau nhiều hơn một cạnh. Một số dạng đồ thị hữu hạn Đơn đồ thị Đa đồ thị Hình 1. Các dạng đồ thị Ta có thể biểu diễn hình học cho đồ thị như sau: Trên mặt phẳng, biểu diễn đỉnh bằng các vòng tròn nhỏ, biểu diễn cạnh vô hướng bằng đoạn thẳng, biểu diễn cạnh có hướng bằng mũi tên nối hai đỉnh của đồ thị. Bậc của đồ thị Bậc của đỉnh v  V là tổng số cạnh liên thuộc với nó và ký hiệu là deg(v).

Nếu đỉnh có khuyên thì mỗi khuyên được tính là 2 khi tính bậc, như vậy: deg(v) = (số cạnh liên thuộc) + (2  Số khuyên) Đỉnh cô lập: trong đồ thị đơn, đỉnh cô lập là đỉnh có bậc bằng 0. Đỉnh treo: là đỉnh có bậc bằng 1. Bậc của đồ thị vô hướng G. Xét đồ thị trong hình 1.4 trên, ta có: - deg(a) = deg(f) = 2, deg(b) = 3, deg(c) = deg(e) = 4, deg(d) = 1, deg(g) = 0.

- Đỉnh g là đỉnh cô lập, đỉnh d là đỉnh treo. Một số dạng đồ thị đặc biệt 1. Đồ thị đầy đủ Đồ thị đầy đủ k đỉnh, ký hiệu bởi Kk, là đơn đồ thị vô hướng mà giữa hai đỉnh bất kỳ của nó luôn có cạnh nối. Các đồ thị đầy đủ K1, K2, K3 cho trong hình 1.

Đồ thị đầy đủ Đồ thị đầy đủ Kk có tất cả k(k-1)/2 cạnh, nó là đơn đồ thị có nhiều cạnh nhất. Đồ thị vòng Đồ thị vòng Ck, k ≥ 3, gồm k đỉnh v1, v2,.vk và các cạnh (v1, v2), (v2, v3). Đồ thị vòng C1, C2, C3 như hình 1. Đồ thị bánh xe Đồ thị bánh xe Wk thu được từ Ck 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 Ck Ví dụ 1.

Đồ thị bánh xe W1, W2, W3 như hình 1. Đồ thị bánh xe W1, W2, W3 1. Đồ thị lập phương Đồ thị lập phương k đỉnh Qk là đồ thị với các đỉnh biểu diễn 2k xâu nhị phân độ dài k. 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.

Đồ thị vòng Q1, Q2, Q3 như hình 1. Đồ thị lập phương Q1, Q2, Q3 1. Đồ 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.

Đị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. Các đồ thị 2 phía K2,3, K3,3, K3,4 như hình 1. Đồ thị hai phía K23, K33, K34 1. Đồ 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ị. Đồ thị K như hình 1.10 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. Đồ thị phẳng K Một điều đáng lưu ý: Nếu đồ thị là phẳng thì ta luôn có thể vẽ nó trên mặt phẳng với các cạnh nối là các đoạn thẳng không cắt nhau ngoài ở đỉnh (ví dụ xem cách vẽ K trong hình 1. 10 Biểu diễn đồ thị trên máy tính [3] 1.

Ma trận kề, ma trận trọng số Để lưu trữ đồ thị và thực hiện các thuật toán khác nhau, ta cần phải biểu diễn đồ thị trên máy tính, đồng thời sử dụng những cấu trúc dữ liệu thích hợp để mô tả đồ thị. 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ương tự 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. Biểu diễn đồ thị trong hình 1.11 dưới đây bằng ma trận kề. Đồ thị vô hướng không trọng số G Bảng 1.

Biểu diễn đồ thị vô hướng không trọng số bằng ma trận 1 2 3 4 5 6 1 0 1 1 0 0 0 2 1 0 1 1 0 0 3 1 1 0 0 1 0 4 0 1 0 0 1 1 5 0 0 1 1 0 1 6 0 0 0 1 1 0 Các tính chất của ma trận kề - Đối với đồ thị vô hướng G, thì ma trận kề tương ứng là ma trận đối xứng (a[i, j] = a[j, i]), điều này không đúng với đồ thị có hướng. - Nếu G là đồ thị vô hướng và A là ma trận kề tương ứng thì trên ma trận A: + Tổng các số trên hàng i = Tổng các số trên cột i = Bậc của đỉnh i = deg(i) - Nếu G là đồ thị có hướng và A là ma trận kề tương ứng thì trên ma trận A: + Tổng các số trên hàng i = Bán bậc ra của đỉnh i = deg+(i) + Tổng các số trên cột i = Bán bậc vào của đỉnh i = deg-(i) - Trong trường hợp G là đơn đồ thị, ta có thể biểu diễn ma trận kề A tương ứng là các phần tử logic: + 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. Nhược điểm của ma trận kề: 12 + 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. Tìm ma trận kề của đồ thị có hướng, c1o trọng số như hình 1.

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