1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Bài tập lớn thuật toán tham lam tô màu Đồ thị

14 11 0
Tài liệu đã được kiểm tra trùng lặp

Đ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

Tiêu đề Bài Tập Lớn Thuật Toán Tham Lam Tô Màu Đồ Thị
Tác giả Nguyễn Trọng Bình, Nguyễn Minh Quân, Dương Văn Dương, Tạ Văn Đăng, Vũ Minh Hiếu
Người hướng dẫn PGS.TS Lê Hải Châu
Trường học Học viện Công nghệ Bưu chính Viễn thông
Chuyên ngành Cấu trúc dữ liệu và giải thuật
Thể loại bài tập lớn
Năm xuất bản 2024
Thành phố Hà Nội
Định dạng
Số trang 14
Dung lượng 0,95 MB

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

Nội dung

Trong bài tiểu luận này, chúng tôi sẽ tập trung vào một trong những phương pháp tiếp cận phổ biến nhất để giải quyết vấn đề tô màu đồ thị, đó là thuật toán tham lam tô màu đồ thị Greedy

Trang 1

BỘ THÔNG TIN VÀ TRUYỀN THÔNG

HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG

KHOA VIỄN THÔNG

- -BÀI TẬP LỚN THUẬT TOÁN THAM LAM TÔ MÀU ĐỒ THỊ

Giảng viên: PGS.TS Lê Hải Châu

Học phần: Cấu trúc dữ liệu và giải thuật

Nhóm: 4

Sinh viên thực hiện: B21DCVT077 Nguyễn Trọng Bình B21DCVT357 Nguyễn Minh Quân

B21DCVT149 Dương Văn Dương B21DCVT105 Tạ Văn Đăng

B21DCVT197 Vũ Minh Hiếu

Hà Nội, 5/2024

Trang 2

Greedy Coloring Mục Lục

MỤC LỤC

MỤC LỤC……… ………2

LỜI NÓI ĐẦU……….… 3

I ĐỘNG LỰC, LÍ DO THỰC HIỆN……….…….……… 4

II LÝ THUYẾT, NGUYÊN LÝ HOẠT ĐỘNG……….……… …….5

2.1 Thuật toán tham lam……….……5

2.1.1 Khái niệm……… 5

2.1.2 Tính chất của thuật toán và áp dụng thuật toán……….….5

2.2 Tô màu đồ thị trong lí thuyết đồ thị……… ….6

2.2.1 Một số khái niệm về tô màu đồ thị……….………6

2.2.2 Ứng dụng tô màu đồ thị……….7

2.3 Áp dụng thuật toán tham lam trong tô màu đồ thị ……… 7

2.3.1 Khái niệm……… 7

2.3.2 Tư tưởng thuật toán ……….……… 7

2.3.3 Nguyên lý hoạt động ……….8

III MÃ GIẢ ……… 8

IV CÀI ĐẶT THUẬT TOÁN, PHÂN TÍCH VÀ ĐÁNH GIÁ………9

4.1 Cài đặt thuật toán ………9

4.2 Phân tích và đánh giá ………12

V TÀI LIỆU THAM KHẢO……….…… 13

Trang 3

Greedy Coloring Lời nói đầu

Lời nói đầu

Trong lĩnh vực lý thuyết đồ thị, việc tô màu đồ thị là một vấn đề quan trọng có ứng dụng rộng rãi trong nhiều lĩnh vực thực tế như lập lịch, tối ưu hóa mạng, và phân tích mạng xã hội Trong bài tiểu luận này, chúng tôi sẽ tập trung vào một trong những

phương pháp tiếp cận phổ biến nhất để giải quyết vấn đề tô màu đồ thị, đó là thuật toán

tham lam tô màu đồ thị ( Greedy coloring)

Thuật toán tham lam là một phương pháp đơn giản và hiệu quả để tô màu đồ thị bằng cách thăm dò từng đỉnh và gán màu cho đỉnh đó sao cho không có hai đỉnh kề nhau có cùng màu Trong phần này, chúng tôi sẽ trình bày cách hoạt động của thuật toán tham lam, bao gồm cách chọn màu cho từng đỉnh và cách áp dụng thuật toán để tô màu cho toàn bộ đồ thị

Ngoài ra, chúng tôi sẽ đi sâu vào phân tích độ phức tạp và hiệu suất của thuật toán tham lam tô màu đồ thị, cũng như các ứng dụng và hạn chế của nó trong thực tế Bằng cách nắm vững kiến thức về thuật toán này, chúng ta sẽ hiểu rõ hơn về cách tối ưu hóa việc tô màu cho đồ thị và áp dụng nó vào các vấn đề thực tế

Cuối cùng, chúng tôi hy vọng rằng bài tiểu luận này sẽ cung cấp cho độc giả cái nhìn tổng quan về thuật toán tham lam tô màu đồ thị cũng như khả năng ứng dụng của nó trong nhiều lĩnh vực khác nhau Do kiến thức còn hạn hẹp, trong quá trình thực hiện khó tránh khỏi những sai xót, mong thầy và các bạn độc giả có thể bỏ qua

Trang 4

Greedy Coloring Động lực, lí do thực hiện

I Động lực, lí do thực hiện

Tô màu đồ thị là bài toán quan trọng trong lĩnh vực đồ thị Một số động lực và lí do chính để đi sâu vào nghiên cứu thuật toán kể đến như:

- Hiểu sâu hơn về lí thuyết đồ thị: Khi thực hiện tô màu đồ thị, cần hiểu rõ các khái

niệm cơ bản về đồ thị như đỉnh, cạnh, đồ thị liên thông, đồ thị không định hướng và định hướng, và các loại đồ thị khác Thuật toán tô màu đồ thị sẽ yêu cầu tìm cách gán màu cho mỗi đỉnh sao cho không có hai đỉnh kề nhau nào có cùng màu Điều này đòi hỏi chúng ta phải hiểu cách các đỉnh trong đồ thị tương tác với nhau thông qua các cạnh

- Áp dụng thực tế: Tô màu đồ thị được áp dụng rộng rãi trong thực tế, từ lập lịch công

việc đến tối ưu hóa mạng lưới vận chuyển, hay một số các trò chơi như Sodoku,

Trong lập lịch mỗi công việc có thể được biểu diễn bằng một đỉnh, và các ràng buộc giữa chúng (một công việc phải hoàn thành trước khi công việc khác bắt đầu) được biểu diễn bằng các cạnh Việc tô màu đồ thị sẽ giúp bạn lập lịch công việc một cách hiệu quả Trong mạng lưới vận chuyển, tô màu đồ thị có thể được sử dụng để tối ưu hóa bảng định tuyến Thực hiện tìm các đường dẫn tối ưu sao cho không có hai đường dẫn nào chia sẻ cùng một tài nguyên (ví dụ như băng thông) trong mạng Mỗi màu có thể tương ứng với một tài nguyên và các đường dẫn có thể được gán màu tương ứng với tài nguyên mà chúng sử dụng Bên cạnh việc tối ưu hóa bảng định tuyến, còn áp dụng tô màu đồ thị trong việc tối ưu hóa lưu lượng giao thông trong mạng

- Nền tảng nghiên cứu: Việc nghiên cứu và áp dụng thuật toán tham lam vào bài toán tô

màu đồ thị có thể làm nền tảng cho các nghiên cứu tiếp theo trong lĩnh vực này Có thể tìm hiểu và phát triển thuật toán mới, cải tiến thuật toán hiện có để giải quyết các vấn đề phức tạp hơn, hoặc áp dụng vào các lĩnh vực mới Điều này có thể đóng góp vào sự phát triển của cả lý thuyết và ứng dụng của đồ thị trong khoa học máy tính

- Phát triển kỹ năng lập trình và tư duy thuật toán: Triển khai thuật toán tô màu đồ

thị bằng lập trình sẽ giúp ta cải thiện kỹ năng lập trình của mình Cần phải tối ưu hóa thuật toán để giải quyết vấn đề một cách hiệu quả, điều này yêu cầu chúng ta phải có

tư duy thuật toán và khả năng áp dụng kiến thức lý thuyết vào thực tiễn

Trang 5

Greedy Coloring Thuật toán tham lam

II Lý thuyết, nguyên lý hoạt động

2.1 Thuật toán tham lam

2.1.1 Khái niệm

Thuật toán tham lam, còn được gọi là Greedy Algorithm, là một phương pháp giải

quyết bài toán tối ưu bằng cách lựa chọn các lựa chọn tốt nhất tại mỗi bước để đạt được tối ưu toàn cục

Giải thuật tham lam gồm năm thành phần:

- Một tập hợp các ứng viên, để từ đó tạo ra lời giải

- Một hàm lựa chọn, để theo đó lựa chọ ứng viên tốt nhất để bổ sung và lời giải

- Một hàm khả thi, dùng để quyết định nếu một ứng viên có thể được dùng để xây dựng

lời giải

- Một hàm mục tiêu, ấn định giá trị của lời giải hoặc một lời giải chưa hoàn chỉnh

- Một hàm đánh giá, chỉ ra khi nào ta tìm ra một lời giải hoàn chỉnh.

2.1.2 Tính chất của thuật toán và áp dụng thuật toán

Tính chất: Lựa chọn giải thuật tham lam có thể phụ thuộc vào các lựa chọn trước đó, nhưng nó không thể phụ thuộc vào các lựa chọn trong tương lai hay phụ thuộc vào lời giải của các bài toán con Thuật toán tiến triển theo kiểu thực hiện các lựa chọn theo một vòng lặp, cùng lúc đó thu nhỏ bài toán đã cho về bài toán con nhỏ hơn Đấy là sự khác biệt giữa thuật toán này và giải thuật quy hoạch động Giải thuật quy hoạch động duyệt hết và luôn đảm bảo tìm thấy lời giải Tại mỗi bước của thuật toán, quy hoạch động đưa

ra quyết định dựa trên các quyết định của bước trước, và có thể xét lại đường đi của bước trước hướng tới lời giải Giải thuật tham lam quyết định sớm và thay đổi đường đi thuật toán theo quyết định đó, và không bao giờ xét lại các quyết định cũ Đối với một số bài toán, đây có thể là một thuật toán không chính xác

Áp dụng: Đối với nhiều bài toán giải thuật tham lam đôi khi không cho ra lời giải tối

ưu toàn cục, vì chúng thường không chạy trên tất cả các trường hơp Chúng có thể bám chặt lấy một số lựa chọn nhất định một cách quá sớm, điều này dẫn đến hậu quả là trong giai đoạn sau, các thuật toán này không thể tìm ra các lời giải toàn cục tốt nhất Ví dụ, đối với bài toán tô màu đồ thị và tất cả các bài toán NP-đầy đủ khác, không một thuật

Trang 6

Greedy Coloring Tô màu đồ thị trong lí thuyết đồ thị

toán tham lam đã được biết nào đảm bảo tìm thấy các lời giải tối ưu. Tuy nhiên giải thuật này vẫn hữu ích vì chúng dễ thiết kế và cho ra các ước lượng tốt về lời giải tối ưu Nếu có thể chứng minh rằng một thuật toán tham lam cho ra kết quả tối ưu toàn cục cho một lớp bài toán nào đó, thì thuật toán thường sẽ trở thành phương pháp được chọn lựa, vì nó chạy nhanh hơn các phương pháp tối ưu hóa khác như quy hoạch động

2.2 Tô màu đồ thị trong lí thuyết đồ thị

2.2.1 Một số khái niệm về tô màu đồ thị

Trong lí thuyết đồ thị, tô màu đồ thị (graph coloring) là một trường hợp đặc biệt của

gán nhãn đồ thị, trong đó mỗi đỉnh, cạnh hay miền của đồ thị có thể được gán bởi một màu hay một tập hợp các màu

Có ba loại tô màu đồ thị chính:

- Tô màu đỉnh: Mỗi đỉnh của đồ thị được gán một màu sao cho không có hai đỉnh liền kề

trùng màu

- Tô màu cạnh: Mỗi cạnh của đồ thị được gán một màu sao cho không có hai cạnh liền kề

trùng màu

- Tô màu miền: Mỗi miền của đồ thị phẳng được gán một màu sao cho không có hai miền

có chung đường biên cùng màu

Số màu cạnh của một đồ thị là số màu ít nhất dùng để tô các cạnh

Sắc tố của một đồ thị là số màu ít nhất để tô các đỉnh

Hình 2.1: Đồ thị có sắc tố bằng 3

Định lý: Sắc tố của một đồ thị sẽ không bao giờ vượt quá số đỉnh của nó.

Trang 7

Greedy Coloring Áp dụng thuật toán tham lam trong tô màu đồ thị

2.2.2 Ứng dụng của tô màu đồ thị

Thực hiện tô màu bản đồ:

Trên các bản đồ, các miền khác nhau (miền ở đây được hiểu là các quốc gia trên bản đồ thế giới hay các tỉnh trong một bản đồ hành chính quốc gia) được tô màu sao cho 2 miền

có chung biên giới không trùng màu nhau Đối với bản đồ có nhiều miền, nếu ta dùng một số lượng lớn màu thì sẽ rất khó phân biệt các miền có màu gần giống nhau, vì thế người ta chỉ dùng một số lượng màu nhất định để tô màu bản đồ Một bài toán được đặt

ra là: có thể dùng ít nhất bao nhiêu màu để tô màu một bản đồ sao cho các miền kề nhau không cùng một màu

Bài toán này dẫn đến định lý bốn màu nổi tiếng và định lý năm màu Các dạng bài toán tô màu bản đồ có thể áp dụng Thuật toán tô màu Greedy để tìm ra số màu ít nhất để tô cho các miền trên bản đồ

2.3 Áp dụng thuật toán tham lam trong tô màu đồ thị

2.3.1 Khái niệm

Trong lý thuyết đồ thị, thuật toán tham lam tô màu đồ thị (greedy coloring) là một trong những phương pháp tô màu đồ thị áp dụng giải thuật tham lam Trong tô màu đồ thị, thuật toán này sẽ lựa chọn từng đỉnh một cách tham lam (tức là lựa chọn màu sẽ làm giảm khả năng xung đột màu với các đỉnh kề)

2.3.2 Tư tưởng thuật toán

Xét đồ thị G(V) với tập hợp các đỉnh V = [v1 , v2, v3, …, vn] và tập các đỉnh kề Avj Sử dụng giải thuật tham lam tô màu các đỉnh của đồ thị

Đầu tiên ta xét các đỉnh theo thứ tự và và gán cho mỗi đỉnh một màu riêng theo nguyên tắc: các đỉnh không kề với đỉnh đang xét  (không có cạnh nối trực tiếp) thì được phép tô cùng một màu, cấm tô màu đó cho các đỉnh có cạnh kề với đỉnh đang xét Thuật toán lặp lại cho đến khi tất cả các đỉnh được tô màu

2.3.3 Nguyên lý hoạt động

Thuật toán hoạt động theo nguyên lý cơ bản sau:

Sắp xếp các đỉnh: Bắt đầu bằng cách sắp xếp các đỉnh của đồ thị theo một thứ tự nào đó

Trang 8

Greedy Coloring Mã giả

Duyệt từng đỉnh: Duyệt qua từng đỉnh theo thứ tự đã sắp xếp

Chọn màu thích hợp: Với mỗi đỉnh, chọn màu nhỏ nhất mà không trùng với màu của bất

kỳ đỉnh kề nào đã được tô

Hình 2.2: Tuần tự các bước tô màu các đỉnh của đồ thị

III Mã giả

Ý tưởng chính của thuật toán sẽ được minh họa trong đoạn mã giả dưới đây:

Trang 9

Greedy Coloring Cài đặt thuật toán

IV Cài đặt thuật toán, phân tích và đánh giá

4.1 Cài đặt thuật toán

Các bước cài đặt thuật toán:

Việc đầu tiên mà ta cần làm là xây dựng một lớp Graph đại diện cho một đồ thị vô hướng, có thể được biểu diễn dưới dạng danh sách kề hoặc ma trận kề với thuộc tính V là

số đỉnh trong đồ thị Tiếp theo cần xây dựng một mảng động các danh sách liên kết, mỗi phần tử của mảng là một danh sách liên kết, đại diện cho các đỉnh kề của mỗi đỉnh

Thực hiện tô màu đồ thị bằng giải thuật tham lam:

- Tô màu đỉnh đầu tiên bằng màu đầu tiên.

- Thực hiện theo các đỉnh V – 1 còn lại:

Xem xét đỉnh hiện được chọn và tô màu nó bằng màu được đánh số thấp nhất chưa được sử dụng trên bất kì đỉnh nào đã được tô màu trước đó liền kề với nó Nếu tất cả các màu đã sử dụng trước đó xuất hiện trên các đỉnh liền kề với đỉnh đang xét v thì hãy gán một màu mới cho nó

Sau khi đã thực hiện tô màu cho tất cả các đỉnh thuộc đồ thị, thực hiện in ra kết quả

Khẳng định: Không bao giờ sử dụng nhiều hơn d + 1 màu trong đó d là bậc tối đa của

một đỉnh trong đồ thị

Dưới đây là chương trình cài đặt thuật toán:

Trang 10

Greedy Coloring Cài đặt thuật toán

Input (Đầu vào được cho dưới dạng danh sách kề)

#1: #2:

Trang 11

Greedy Coloring Cài đặt thuật toán

Output (Một số đại diện cho một màu)

#1: #2:

Hình vẽ minh họa:

Trang 12

Greedy Coloring Cài đặt thuật toán

Hình 4.1: Kết quả minh họa

Độ phức tạp về thời gian: Trong trường hợp xấu nhất, O(V ^ 2 + E)

Trong đó: V, E lần lượt là số đỉnh và cạnh của đồ thị

Trang 13

Greedy Coloring Phân tích và đánh giá

4.2 Phân tích và đánh giá

Đây là bài toán NP – Complete vì vậy không có thuật toán nào hiệu quả để tô màu đồ thị với số lượng màu là tối thiểu

- Thuật toán tham lam không đảm bảo sử dụng số lượng màu tối thiểu Ngoài ra, số

lượng màu đã được sử dụng đôi khi phụ thuộc vào thứ tự xử lý các đỉnh Ví dụ, hãy xem xét hai biểu đồ ở trên (Hình 4.1) Lưu ý rằng trong đồ thị bên phải, đỉnh 3 và 4 được hoán đổi cho nhau Nếu xét các đỉnh 0, 1, 2, 3, 4 ở đồ thị bên trái, chúng ta có thể tô màu

đồ thị bằng 3 màu Nhưng nếu xét các đỉnh 0, 1, 2, 3, 4 ở đồ thị bên phải thì chúng ta cần

4 màu Do vậy kết quả của thuật toán tham lam có thể phụ thuộc vào thứ tự các đỉnh được duyệt qua Một thứ tự không tốt có thể dẫn đến kết quả không tối ưu

- Thuật toán tham lam đảm bảo giới hạn trên về số lượng màu Với d là mức độ tối đa

trong biểu đồ đã cho Vì d là bậc lớn nhất nên một đỉnh không thể gắn nhiều hơn d đỉnh Khi chúng ta tô màu một đỉnh, nhiều nhất d màu có thể đã được sử dụng bởi các màu liền kề của nó Để tô màu cho đỉnh này, chúng ta cần chọn màu được đánh số nhỏ nhất

mà các đỉnh liền kề không sử dụng. Nếu các màu được đánh số như 1, 2, … thì giá trị của số nhỏ nhất đó phải nằm trong khoảng từ 1 đến d+1 (lưu ý rằng các số d đã được chọn bởi các đỉnh liền kề)

Tô màu đồ thị bằng giải thuật tham lam cho ra kết quả khá nhanh, thuật toán dễ thiết

kế, có khả năng hoạt động tốt trên các đồ thị lớn mà không gây ra quá nhiều độ trễ, nhưng không phải lúc nào cũng đúng Như đã trình bày trong phần nội dung thứ hai, bản chất thuật toán tham lam đôi khi không cho ra lời giải tối ưu toàn cục, vì chúng thường không chạy trên tất cả các trường hợp.Chúng có thể bám chặt lấy một số lựa chọn nhất định một cách quá sớm, điều này dẫn đến hậu quả là trong giai đoạn sau, các thuật toán này không thể tìm ra các lời giải toàn cục tốt nhất Ngoài ra, thuật toán có thể

sẽ không hiệu quả với một số loại đồ thị như đồ thị có chu trình lớn hoặc đồ thị không liên thông

Trang 14

Greedy Coloring Tài liệu tham khảo

V Tài liệu tham khảo

1 Kučera, Luděk (1991), “The greedy coloring is a bad probabilistic algorithm”, Journal

of Algorithms

2 Irani, Sandy (1994), “Coloring inductive graphs on-line”, Algorithmica.

3 Giải thuật và lập trình, Lê Minh Hoàng, Đại học sư phạm Hà Nội, 2002

4 Wikipedia

5 Geeksforgeeks

Ngày đăng: 19/12/2024, 16:44

HÌNH ẢNH LIÊN QUAN

Hình 2.1: Đồ thị có sắc tố bằng 3 - Bài tập lớn thuật toán tham lam tô màu Đồ thị
Hình 2.1 Đồ thị có sắc tố bằng 3 (Trang 6)
Hình vẽ minh họa: - Bài tập lớn thuật toán tham lam tô màu Đồ thị
Hình v ẽ minh họa: (Trang 11)

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