MỤC LỤC CHƯƠNG I GIỚI THIỆU BÀI TOÁN 3 1 Tổng quan về đồ thị 3 2 Bài toán tô mầu đồ thị 5 2 1 Bài toán tô mầu cạnh 5 2 2 Bài toán tô mầu đỉnh 6 3 Hướng làm bài 6 CHƯƠNG II GIỚI THIỆU GIẢI THUẬT VÀ PHÂ.
Trang 1MỤC LỤC
CHƯƠNG I GIỚI THIỆU BÀI TOÁN
1 Tổng quan về đồ thị
Đồ thị là gì
Một cách không chính thức, đồ thị là một tập các đối tượng được gọi là các đỉnh (hoặc nút) nối với nhau bởi các cạnh (hoặc cung) Cạnh có thể có hướng hoặc vô hướng Đồ thị thường được vẽ dưới dạng một tập các điểm (các đỉnh nối với nhau bằng các đoạn thẳng (các cạnh)
Đồ thị biểu diễn được rất nhiều cấu trúc, nhiều bài toán thực tế có thể được biểu diễn bằng đồ thị Ví dụ, cấu trúc liên kết của một website có thể được biểu diễn bằng một đồ thị có hướng như sau: các đỉnh là các trang web hiện có tại website, tồn tại một cạnh có
hướng nối từ trang A tới trang B khi và chỉ khi A có chứa 1 liên kết tới B.
Cấu trúc đồ thị có thể được mở rộng bằng cách gán trọng số cho mỗi cạnh Có thể sử dụng đồ thị có trọng số để biểu diễn nhiều khái niệm khác nhau Ví dụ, nếu đồ thị biểu diễn một mạng đường giao thông, các trọng số có thể là độ dài của mỗi con đường Một
Trang 2cách khác để mở rộng đồ thị cơ bản là qui định hướng cho các cạnh của đồ thị (như đối
với các trang web, A liên kết tới B, nhưng B không nhất thiết cũng liên kết tới A) Loại đồ
thị này được gọi là đồ thị có hướng Một đồ thị có hướng với các cạnh có trọng số được gọi là một lưới
Hình 01: Đồ thị vô hướng
Các cách biểu diễn đồ thị
- Ma trận kề (Adjaceny matrix) - một ma trận N × N, trong đó N là số đỉnh của đồ
thị Nếu có một cạnh nào đó nối đỉnh v i với đỉnh v j thì phần tử M i,j bằng 1, nếu không, nó có giá trị 0 Cấu trúc này tạo thuận lợi cho việc tìm các đồ thị con và để đảo các đồ thị
Adjacency matrix
Trang 3- Danh sách kề (Adjacency list) - Mỗi đỉnh của đồ thị có một danh sách các đỉnh kề
nó (nghĩa là có một cạnh nối từ đỉnh này đến mỗi đỉnh đó) Trong đồ thị vô hướng, cấu trúc này có thể gây trùng lặp Chẳng hạn nếu đỉnh 3 nằm trong danh sách của đỉnh 2 thì đỉnh 2 cũng phải có trong danh sách của đỉnh 3 Lập trình viên có thể chọn cách sử dụng phần không gian thừa, hoặc có thể liệt kê các quan hệ kề cạnh chỉ một lần Biểu diễn dữ liệu này thuận lợi cho việc từ một đỉnh duy nhất tìm mọi đỉnh được nối với nó, do các đỉnh này đã được liệt kê tường minh
The graph pictured above has this adjacency list representation:
2 Bài toán tô mầu đồ thị
Tô màu đồ thị và sự tổng quát của nó là công cụ hữu dụng trong việc mô hình hóa rất nhiều bài toán khác nhau trong vấn đề xếp lịch, xây dựng chương trình và vấn đề phân công công việc Bài toán tô màu đồ thị bao gồm nhiều loại: tô màu đỉnh đồ thị (vertex graph coloring) , tô màu cạnh đồ thị (edge graph coloring)
2.1 Bài toán tô mầu cạnh
Bài toán
Cho G=(V,E) là đơn đồ thị vô hướng ( G không là đồ thị khuyên) , hãy tìm cách gán (tô màu) cho mỗi cạnh của đồ thị một màu sao cho hai cạnh có cùng chung 1 đỉnh không bị
tô bởi cùng một màu Một phép gán màu cho các cạnh như vậy gọi là một phép tô màu
Trang 4cạnh đồ thị Nói cách khác, phép tô cạnh đồ thị bởi k màu nói trên có thể được hiểu là một phân hoạch của tập cạnh E của G thành k tập con (tương ứng với k màu) sao cho mỗi tập con ứng với một màu i nhất định Bài toán đặt ra là tìm cách tô màu nào sử dụng số màu ít nhất có thể
Ví dụ
Đồ thị trong hình trên có thể tô bởi 4 màu Đồ thị G gọi là tô được bởi k màu-cạnh nếu G
có một phép tô k màu-cạnh phù hợp.Thông thường hầu hết các đồ thị không là đồ thị khuyên đều tô được.Và nếu G có tính chất như vậy thì G cũng có thể tô bởi l màu với l>k
2.2 Bài toán tô mầu đỉnh
Tô màu (đỉnh) đồ thị là việc thực hiện gán màu cho mỗi đỉnh của đồ thị, sao cho hai đỉnh
kề nhau không cùng một màu, và số màu được sử dụng là ít nhất Số màu ít nhất có thể
sử dụng để tô màu đồ thị được gọi là sắc số của đồ thị đó
Một phép tô mầu sử dụng nhiều nhất k mầu gọi là một phép tô k mầu Số lượng mầu nhỏ nhất cần để tô các đỉnh của đồ thị G gọi là sắc số đỉnh của đồ thị G, sao cho không có hai đỉnh kề nhau nào được tô cùng mầu
Một đồ thị có thể tô được bằng k mầu, trong đó mỗi một tập các đỉnh cùng mầu gọi là một lớp mầu
Một đồ thị có thể được tô bằng k mầu nghĩa là có có k tập độc lập trong đồ thị
Trang 53 Hướng làm bài
Việc tô màu bản đồ, ta phải tô màu các miền sao cho: mỗi miền được tô một màu, hai miền có liền kề (có chung biên giới) không được tô cùng một màu
Ta thiết lập một đồ thị G, có tập các đỉnh là tập tất cả các miền trên bản đồ Hai nước liền
kề nhau
thì có cạnh nối hai đỉnh tương ứng với nhau Ta tiến hành tìm sắc số của đồ thị này
Đây là trường hợp riêng của bài toán tô màu đồ thị Khi đồ thị chỉ là đồ thị phẳng Người
ta đã chứng minh được rằng: chỉ cần nhiều nhất là 4 màu để tô đồ thị này Từ lâu người ta
đã chứng minh bài toán tô màu đồ thị thuộc lớp NP - đầy đủ
CHƯƠNG II GIỚI THIỆU GIẢI THUẬT VÀ PHÂN TÍCH GIẢI THUẬT THEO BÀI TOÁN
1 Phát biểu bài toán
Tô màu (đỉnh) đồ thị là việc thực hiện gán màu cho mỗi đỉnh của đồ thị, sao cho hai đỉnh
kề nhau không cùng một màu, và số màu được sử dụng là ít nhất Số màu ít nhất có thể
sử dụng để tô màu đồ thị được gọi là sắc số của đồ thị đó
Thuật toán tô màu đồ thị được đề cập đến trong các tài liệu về Toán rời rạc hoặc Cấu trúc
dữ liệu & Giải thuật Chúng ta có thể trình bày các bước thuật toán dễ hiểu như sau: Input: đồ thị G = (V, E)
Output: đồ thị G = (V, E) có các đỉnh đã được gán màu
2 Giải thuật (Thuật toán tham lam)
Các bước của thuật toán:
Bước 1: Tính giá trị bậc của các đỉnh trong V Lập danh sách V’:=[v1,v2, ,vn] là
các đỉnh của đồ thị được sắp xếp theo thứ tự bậc giảm dần: d(v1) > d(v2) > > d(vn) Ban đầu tất cả các đỉnh trong V (V’) đều chưa được tô màu
Gán i := 1;
Bước 2: Tô màu i cho đỉnh đầu tiên trong danh sách V’ Duyệt lần lượt các đỉnh
khác trong V’(nếu có) và chỉ tô màu i cho các đỉnh không kề đỉnh đã có màu i
Bước 3: Kiểm tra nếu tất cả các đỉnh trong V đã được tô màu thì thuật toán kết thúc,
đồ thị đã sử dụng i màu để tô Ngược lại, nếu vẫn còn đỉnh chưa được tô thì chuyển sang bước 4
Trang 6Bước 4: Loại khỏi danh sách V’ các đỉnh đã tô màu Sắp xếp lại các đỉnh trong V’
theo thứ tự bậc giảm dần Gán i := i + 1 và quay lại bước 2
3 Phân tích giải thuật và vận dụng
Để dễ hiểu hơn, các bạn xem sự thể hiện các bước của thuật toán trong ví dụ sau: Cho đồ thị như hình vẽ, sử dụng thuật toán tô màu đồ thị ở trên, tô màu cho các đỉnh của đồ thị
Bước 1: Ta có đồ thị có 5 đỉnh được đánh số 1, 2, 3, 4, 5 với các bậc tương ứng với
từng đỉnh theo thứ tự là 3, 1, 2, 1, 3 Do đó V’ ban đầu có thứ tự là [1, 5, 3, 2, 4] Gán i
=1
Bước 2: Tô màu 1 (red) cho đỉnh 1 Lần lượt duyệt các đỉnh còn lại trong V’:
Ta có: Đỉnh 5 kề đỉnh 1 (đỉnh 1 đã tô màu 1 - red) nên chưa tô màu cho đỉnh 5 Tương tự các đỉnh 3, 2 đều kề với đỉnh 1 nên đỉnh 3, 2 cũng chưa được tô màu
Đỉnh 4 không kề với đỉnh 1, do đó thực hiện tô màu 1 cho đỉnh 4 Đỉnh 4 có màu 1 -red
Bước 3: Kiểm tra thấy vẫn còn các đỉnh trong V chưa được tô màu nên chuyển sang
bước 4
Bước 4: Loại bỏ các đỉnh 1, 4 đã được tô màu ra khỏi V’, sắp xếp lại V’ theo thứ tự
bậc giảm dần, ta thu được V’= [5, 3, 2] Ta có i = 2 Thực hiện lặp lại bước 2:
Bước 2(1): Tô màu 2 (blue) cho đỉnh 5 Lần lượt duyệt các đỉnh còn lại trong V’ Ta
có: Đỉnh 3 kề đỉnh 5 (đã tô màu 2 - blue) nên chưa tô màu cho đỉnh 3
Đỉnh 2 không kề với đỉnh 5, do đó thực hiện tô màu 2 cho đỉnh 2 Đỉnh 2 có màu 2 -blue
Bước 3(1): Kiểm tra thấy vẫn còn đỉnh 3 chưa được tô màu nên chuyển sang bước
Trang 7Bước 4(1): Loại bỏ các đỉnh 5, 2 đã được tô màu ra khỏi V’, V’=[3] Ta có i = 3
Thực hiện lặp lại bước 2:
Bước 2(2): Tô màu 3 (Green) cho đỉnh 3.
Bước 3(2): Kiểm tra thấy tất cả các đỉnh trong V đã được tô màu, thuật toán dừng
lại Kết luận: Đỉnh 1 và 4 được tô màu 1-red, đỉnh 5 và đỉnh 2 được tô màu 2-blue, đỉnh 3 được tô màu 3-Green Số màu cần thiết phải sử dụng là i =3 màu
CHƯƠNG III CÀI ĐẶT, DEMO CHƯƠNG TRÌNH
1 Cài đặt
Tạo 1 file dothi.txt, dòng đầu tiên là số đỉnh, các dòng tiếp theo là những đỉnh được nối với nhau
Source code:
Trang 92 Kết quả
Trang 10KẾT LUẬN
Báo cáo này có mục đích tìm hiểu và trình bày các khái niệm cơ bản về đồ thị và các dạng đồ thị thường gặp, về bài toán tô màu trên đỉnh của đồ thị và ứng dụng tô màu bản
đồ Trình bày các kết quả lý thuyết, các định lý về tô màu trên các loại đồ thị khác nhau
và các thuật toán tô màu đỉnh và cạnh, dựa trên các kết quả lý thuyết đã có
Hy vọng nội dung của báo cáo sẽ giúp các thầy, cô giáo cùng với các bạn sinh viên đang giảng dạy và học tập có thêm nguồn tài liệu hữu ích, bổ sung thêm phương pháp để tiếp cận vấn đề, nhằm nâng cao chất lượng bài giảng, giúp các em sinh viên hiểu sâu sắc được vấn đề hướng tới đạt thành tích cao trong các kì thi
Trang 11TÀI LIỆU THAM KHẢO
Website:
[1] Website: https://www.youtube.com/
[2] Website: https://123docz.net/
[3] Website: https://trungtamcntt.vinhuni.edu.vn/
[4] Website: https://www.tailieutuoi.com/