Nó thể hiện cách giải bài toán với các đặc tính sau: Thường tìm được lời giải tốt nhưng không chắc là lời giải tốt nhất Giải bài toán theo thuật giải Heuristic thường dễ dàng và nhan
Trang 1TRƯỜNG ĐẠI HỌC ĐIỆN LỰC
KHOA CÔNG NGHỆ THÔNG TIN
BÁO CÁO TIỂU LUẬN TRÍ TUỆ NHÂN TẠO
ĐỀ TÀI:
ÁP DỤNG THUẬT GIẢI HEURISTIC CHO BÀI TOÁN TÔ MÀU TỐI ƯU TRÊN ĐỒ THỊ
Sinh viên thực hiện : HỒ KHÁNH LINH
DƯƠNG THỊ THÙY LINH DƯƠNG MINH ANH
Giảng viên hướng dẫn : VŨ VĂN ĐỊNH
Trang 2Hà Nội, tháng năm
PHIẾU CHẤM ĐIỂM
ST
T
Họ và tên sinh
viên
ký
Làm chương trình
Linh
Làm báo cáo Làm chương trình
Làm chương trình
Giảng viên chấm 1:
Giảng viên chấm 2:
Trang 3MỤC LỤC
LỜI NÓI ĐẦU 2
Chương 1 THUẬTGIẢI HEURISTIC 3
1.1 Định nghĩa 3
1.2 Các nguyên lí 3
1.2.1 Vét cạn thông minh 3
1.2.2 Nguyên lí tham lam 3
1.2.3 Nguyên lí thứ tự 3
1.2.4 Hàm Heuristic 3
Chương 2 GIẢI THUẬT 4
2.1 Bài toán tô màu đỉnh 4
2.1.1 Các định nghĩa sử dụng 4
2.1.2 Thuận toán 6
2.2 Bài toán tô màu cạnh 9
2.2.1 Giải thuật 9
CHƯƠNG III ÁP DỤNG THUẬT TOÁN 12
3.1 Bài toán tô màu cạnh 12
3.1.1 Đọc dữ liệu từ file 12
KẾT LUẬN 14
TÀI LIỆU THAM KHẢO 15
Trang 4LỜI NÓI ĐẦU
Ngày nay, cùng với sự phát triển của đất nước, ngành Công nghệ thông tin đã có những bước phát triển mạnh mẽ không ngừng và tin học đã trở thành chiếc chìa khóa dẫn đến thành công cho nhiều cá nhân trong nhiều lĩnh vực, hoạt động Với ứng dụng của mình, ngành Công nghệ thông tin đã góp phần mang lại nhiều lợi ích mà không ai có thể phủ nhận được, đặc biệt là ngành trí tuệ nhân tạo
Trí tuệ nhân tạo có thể xử lí dữ liệu nhanh hơn, khoa học hơn, hệ thống hơn với quy mô rộng hơn so với con người Cách mạng 4.0 sẽ khiến cho rất nhiều nghề nghiệp bị thay thế dù là việc chân tay hay trí óc Tuy vậy không thể phủ nhận lợi ích đem lại của trí tuệ nhân tạo Nhiều tập đoàn công nghệ có kế hoạch phát triển những trí tuệ nhân tạo nhằm giải quyết các vấn đề mà con người hiện tại chưa có phương án giải quyết Phát triển và quản lí các sản phẩm trí tuệ nhân tạo đúng cách chính là cách thúc đẩy nhân loại phát triển, định hình một thế giới mới
Chính vì lợi ích trí tuệ nhân tạo mang lại mà các ứng dụng đã áp dụng nó
để phát triển công việc kinh doanh và giải quyết các bài toán một cách nhanh chóng Qua việc tìm hiểu thực tế, em thấy việc thiết kế một hệ thống trợ lý ảo bằng trí tuệ nhân tạo sẽ góp phần giúp ta hiểu rõ hơn về ngành trí tuệ nhân tạo
Vì vậy em đã chọn đề tài “Áp dụng thuật giải heuristic cho bài toán tô màu tối
ưu trên đồ thị” với mong muốn vận dụng những kiến thức mình đã học xây dựng một hệ thống trợ lý ảo một cách hữu hiệu
Mặc dù đã cố gắng hoàn thiện đề tài với tất cả sự nỗ lực của bản thân, nhưng với vốn kiến thức còn hạn chế, chưa có nhiều kinh nghiệm thực tế nên chắc chắn không thể tránh khỏi những thiếu sót, kính mong quý thầy cô và các bạn tận tình chỉ bảo, góp ý để đề tài được hoàn thiện hơn
Trang 5Chương 1 THUẬT GIẢI HEURISTIC 1.1 Định nghĩa
Thuật giải Heuristic là một sự mở rộng khái niệm thuật toán Nó thể hiện cách giải bài toán với các đặc tính sau:
Thường tìm được lời giải tốt (nhưng không chắc là lời giải tốt nhất)
Giải bài toán theo thuật giải Heuristic thường dễ dàng và nhanh chóng đưa ra kết quả hơn so với giải thuật tối ưu, vì vậy chi phí thấp hơn
Thuật giải Heuristic thường thể hiện khá tự nhiên, gần gũi với cách suy nghĩ và hành động của con người
1.2 Các nguyên lí
1.2.1 Vét cạn thông minh
Trong một bài toán tìm kiếm nào đó, khi không gian tìm kiếm lớn, ta thường tìm cách giới hạn lại không gian tìm kiếm hoặc thực hiện một kiểu dò tìm đặc biệt dựa vào đặc thù của bài toán để nhanh chóng tìm ra mục tiêu
1.2.2 Nguyên lí tham lam
Lấy tiêu chuẩn tối ưu (trên phạm vi toàn cục) của bài toán để làm tiêu chuẩn chọn lựa hành động cho phạm vi cục bộ của từng bước (hay từng giai đoạn) trong quá trình tìm kiếm lời giải
1.2.3 Nguyên lí thứ tự
Thực hiện hành động dựa trên một cấu trúc thứ tự hợp lý của không gian khảo sát nhằm nhanh chóng đạt được một lời giải tốt
1.2.4 Hàm Heuristic
Là các hàm đánh giá thô, giá trị của các hàm phụ thuộc vào trạng thái hiện tại của bài toán tại mỗi bước giải Nhờ giá trị này, ta có thể chọn được cách hành động tương đối hợp lý trong từng bước của thuật giải
Trang 6Chương 2: GIẢI THUẬT 2.1 Bài toán tô màu đỉnh
2.1.1 Các định nghĩa sử dụng
Để mô tả giải thuật nhóm bắt đầu với việc diễn giải các thuật ngữ,định nghĩa mà giải thuật đề cập tới
- ⌊x ⌋: biểu thị các chức năng sàn tức là số nguyên lớn nhất không lớn
hơn x
- ⌈x⌉: biểu thị chức năng trần nghĩa là số nguyên bé nhất là không bé
hơnx
- Một đồ thị đơn giản G với n đỉnh bao gồm các tập đỉnh V, với |V| = n,
và một bộ các cạnh E, sao cho mỗi cặp là một cạnh không có thứ tự của các đỉnh khác nhau Lưu ý rằng định nghĩa của G rõ ràng cấm các vòng lặp (cạnh nối một đỉnh với chính nó) và các cạnh đa (nhiều cạnh tham gia một cặp đỉnh), khi thiết lập E cũng phải được giới hạn Chúng tôi có thể gắn gán nhãn các đỉnh của G với một số nguyên 2,
…,n
- Nếu các cặp không có thứ tự các đỉnh {u,v} là một cạnh trong G,
chúng ta nói u đó là một lân cận của v (hoặc u kề với v) và viết uv ∈
E Lân cận đói xứng rõ ràng là một mối quan hệ: uv ∈ E nếu và chỉ nếu vu ∈ E
- Bậc của một đỉnh v, ký hiệu là d(v), là số lân cận của v Số bậc tối da
của tất cả các đỉnh của G được kí hiệu là Δ
- Các ma trận kề của G là một ma trận n × n với các mục trong hàng u
và cột v bằng 1 nếu uv ∈ E và bằng 0 nếu ngược lại
Cho đồ thị G và H, tích đề các G × H được định nghĩ là các đồ thị mà
tập các đỉnh là V (G) × V(H) với một cạnh đang kết nối đỉnh (u1,v1)
Trang 7với đỉnh (u2,v 2) nếu và chỉ nếu hoặc u 1 = u 2 và {v 1,v 2} là một cạnh trong H hoặc v 1 = v 2 và {u 1,u 2} là một cạnh trong G.
- Tập độc lập S của đồ thị G là một tập các đỉnh như vậy mà không
chứa cặp không có thứ tự của các đỉnh trong S là một cạnh Với một
bộ đọc lập S của G và một đỉnh v bên ngoài S, chúng ta nói v là có thể thê vào nếu đặt S ∪ {v} vân là một tập đọc lập của G Ký hiệu ρ (S) là số đỉnh có thể thêm vào nếu đặt S vẫn là một tập độc lập S của
G Một tập độc lập tối đa không có đỉnh có thể thêm vào Một tập độc lập tối đa là một tập độc lập với số lượng các đỉnh lớn nhất Lưu ý rằng một tập độc lập tối đa luôn luôn là tối đa, nhưng không nhất thiết phải ngược lại
- Cho một tập m màu {1,2,…,m}, một tập màu m – màu của các đỉnh
của đồ thị G là sự phân một màu duy nhất cho mỗi đỉnh của G sao cho không có hai đỉnh kề nhau có cùng màu Số màu χ(G) của đồ thị
G là giá trị nhỏ nhất của m mà tồn tại tương ứng một m – màu của các đỉnh của G
- Thuật toán là một phương pháp giải quyết vẫn đề thích hợp để thực
hiện như một chương trình máy tính Trong khi thiết kế thuật toán chúng ta thường phải đối mặt với một số phương pháp tiếp cận khác nhau
- Thuận toán thời gian – đa thức A có số lượng các bước toán luôn
luôn bị chặn bởi một hàm đa thức của các kích thước của đầu vào
Dó đó, một thuận toán thời gian đa thức là một vẫn đề thực sự hữu ích tring thực tế Các lớp của tất cả các vấn đề như vậy có thuật toán thời gian đa thức được kí hiệu là P Đối với một số vấn đề, không có
Trang 8thuật toán thời gian đa thức được biết đến, nhưng những vấn đề này
có thuận toán thời gian đa thức bất định: hãy thử tất cả các ứng viên cho các giải pháp cùng một lúc và có một ứng viên nhất định, xác định xem đó là một giải pháp chính xác trong thời gian đa thức
2.1.2 Thuận toán
Nhóm bắt đầu với tích đề các cho chép chúng ta chuyển đổi các vẫn đề của việc tìm kiếm một tập m – màu của các đỉnh n của một đồ thị tương
đương như việc tìm kiếm một bộ độc lập kích thước n trong tích đề các G
× K m
- Tích đề các:
Một đơn đồ thị G với n đỉnh là tô được bằng m màu khi và chỉ khi tích
đề các G × K mcó một tập đọc lập kích thước n
Chứng minh:
Giả sử có một tập m – màu của các đỉnh của G Xác định một tập con S
màu thích hợp Vì mỗi đỉnh của G được giao một màu duy nhất, |S| = n
Bây giờ chúng ta sẽ chỉ ra rằng S là một tập độc lập Cho (u 1,v 1) và (u
2,v 2) thuộc S, giả sử có một cạnh {(u 1,v 1),(u 2,v 2)} trong G × K m Do đó, theo định nghĩ của tích đề các, có hai khả năng:
- u 1 = u 2 và {v 1,v 2} là một cạnh trong Km Nhưng u 1 = u 2 với v 1 =
v2,từ mỗi đỉnh trong G được giao một màu duy nhất Nhưng sau đó {v
1,v1} không thể là một cạnh trong trong K m khi K mlà một đơn đồ thị (mâuthuẫn)
- {u1,u 2} là một cạnh trong G, và v 1 = v 2 Nhưng điều này vi phạm các
Trang 9định nghĩa của một tập m màu của G từ đỉnh kề phải được giao các
màu khác nhau (mâuthuẫn)
Vì vậy không thể có một cạnh giữa hai đỉnh trong S và S phải là một tập độc lập Nhược lại, giả sử có một tập độc lập S kích thước n
trong tích đề các G × K m Chúng ta sẽ chỉ ra rằng G có m màu riêng biệt Nếu m lớn hoặc bằng n thì G có thể được m màu một cách tầm thường, do đó giả sử m nhỏ hơn n Sự phân chia các đỉnh của S vào
nhiều nhất là m lớp tương đương C 1, C 2 , , C m , nơi một đỉnh (u,v) trong S thuộc về lớp tương đương C i khi và chỉ khi v = v i Rõ ràng , điều này đưa ra một định nghĩa phân chia tốt của các đỉnh trong S.Bây giờ các đỉnh của G vào nhiều nhất là m lớp tương đương C'1, C' 2, , C'm, nơimột u đỉnh của G thuộc lớp tương đương C'i nếu
và chỉ nếu (u,vi)thuộc về lớp tương đương Ci Để chứng tỏ điều đó ta đưa ra một định nghĩa phân chia tốt của các đỉnh các đỉnh của G tuântheo:
- Cho một đỉnh u của G, nếu u thuộc về cả haiC' i và C' j thì (u ,
v i )thuộcC i và(u , v i) thuộc C j. Khi K m đầy đủ, {v i , v k }là một cạnh
trong K m ,do đó, {(u , v i ), (u , v j )}là mộtcạnh trong tích đề các
G ×K m Điều này mâu thuẫn với thực tế là S là một tập độc lập Vì vậy, các bộ C' 1, C' 2 , , C'mlà cặp phân chia
- Danh sách các phần tử của S sắp xếp nhưsau:
(U 1 1, v 1), (u 1 2, v 1), ., (u 1 i (1), v1)
(U 2 1, v 2), (u 2 2, v 2), ., (u 2 i (2),v 2)
(U m 1, v m), (u m 2, v m), , (um i (m), m v)
Trang 10Nếu một số u i
j= l k u trong danh sách, thì, khi K m đầy đủ,{v i ,v l }là
một cạnh trong K m ,do đó, {(u i
j , v i), (u k
l , v l )}là một cạnh trong tích
đề các G × K m Điều này mâu thuẫn với thực tế S là một tập độc lập Vì vậy, tất cả các u i
j xuất hiện trong danh sách là riêng biệt và
từ | S | = n , có n u i
ji phân biệt mọi đỉnh của G được chứa trong một
số lớp tương đương 'C Dođó,…
Chỉ định màu i đến đỉnh u của G nếu u thuộc về các lớp tương đương C
i ' Điều nầy tạo ra một tập m-màu của các đỉnh của G.
Bây giờ chúng ta định nghĩa hai thủ tục để thực hiện với tập độc lập
trong tích đề các G × K m
- Thủ tục1:
Với một tập độc lập S của tích đề các G × K m nếu S không có đỉnh có
thể thêm, đâu ra S Ngược lại, cho mỗi đỉnh có thể thêm (u, v) của S, tìm số ρ (S∪{(u, v)})của đỉnh có thể thêm của tập độc lập S ∪{(u, v)} Cho (u,v) max biểu thị một đỉnhcó thể thêm sao cho ρ (S ∪{(u, v) max})
là lớn nhất và chứa tập độc lập S ∪{(u, v)max} Lặp lại cho đến khi tập
độc lập không có đỉnh có thể thêmvào
- Thủ tục2:
Cho một tập độc lập tối đa S của tích đề các G × K m, nếu không có
đỉnh (u1,v1) bên ngaoif S sao cho (u1,v1) có đings một lân cận (u2,v2) trong S, đầu ra S Ngược lại, tìm thấy một đỉnh (u1,v1) ngoài S sao cho (u1,v1) có đúng một lân cận (u2,v2) trong S 1 Xác định S(u1,v1),
(u2,v2) bằng cách thêm (u1, v1) vào S và bỏ (u2,v2) từ S Thực hiện thủ
tục 3.1 trên S(u1,v1),(u2,v2) và đầu ra các tập độc lập kết quả.
Giải thuật
Với đầu vào là một đơn đồ thị G với n đỉnh, tìm kiếm một tạo m – màu
của các đỉnh của G Để {u1, u2, ,un } biểu thị các đỉnh của G và để
Trang 11{v1,v2, ,vm } biểu thị các đỉnh của K m Chúng ta tạo các tập độc lập tối
có kích thước n nhỏ nhất, thì đi đến phần III
Về thuận toán giải quyết bài toán tô màu cạnh đồ thị hiện nay trên thế giới có nhiều thuật toán như:
Nếu một tập độc lập S với kích thước n đã được tìm thấy tại bất kì giai đoạn của phần I hoặc phần II, đầu raS như là một tập m – màu của các đỉnh của G theo bộ đề đềcác Ngược lại, kết luận thuật toán không thể tìm thấy bất kỳ tương ứng m – màu của các đỉnh của G
• Phần I: Đối với i=1,2,…,n và j= 1,2,…,n lần lượt
o Khởi tạo tập độc lập S i,j ={(u i, v j)}.
o Thực hiện thủ tục 3.1 trên S i,j.
o Đối với r = 1, 2, , n thực hiện thủ tục 3.2 lặp lại rlần.
o Kết quả là một tập độc lập tối đa S i,j.
• Phần II: Với mỗi cặp tập độc lập tối đa S i,j, S k,ltìm thấy trong phầnI
o Khởi tạo S đặt độc lập i,j,k,l =S i,j ∩S k,l.
o Thực hiện thủ tục3,1trênS i,j,k,l.
o Đối với r = 1, 2, , n thực hiện thủ tục 3,2 lần r lặp đi
lặplại
o Kết quả là một tập độc lập tối đaS i,j,k,l.
• Phần III:Nếu một tập độc lập S với kích thước n đã được tìm thấy tại bất kì giai đoạn của phần I hoặc phần II, đầu ra S như là một tập m – màu của các đỉnh của G theo bộ đề đề các Ngược lại,
Trang 12kết luận thuật toán không thể tìm thấy bất kỳ tương ứng m – màu của các đỉnh của G
2.2 Bài toán tô màu cạnh
2.2.1 Giải thuật
Về thuận toán giải quyết bài toán tô màu cạnh đồ thị hiện nay trên thế giới có nhiều thuật toán như:
Zykov
• Thuật toán tô màu theo dãy (sequentialcoloring)
Trong đó thuận toán tô màu theo dãy lại được ứng dụng nhiều cách khác nhau
Ý tưởng của thuận toán này xoay quanh việc sắp xếp thứ tự các cạnh của đồ thị theo một thứ tự nhất định Đánh trọng số cho các màu được dung để tô Sauđó duyệt các cạnh theo thứ tự nêu trên Trong quá trình duyệt sẽ tô màu cho cạnh bằng màu có trọng số nhỏ nhất mà chưa được sử dụng để tô cho các cạnh kề Đâylà một vận dụng của sử dụng thuật toán tham lam Kết quả của bài toán khác nhaunếu chúng ta chọn được thứ tự của các cạnh khác nhau Do đó các cải tiến haycác thuật toán khác nhau dựa trên thuật toán này hầu hết đều là cải tiến việc lựa chọn thứ tự cho các cạnh ban đầu
Trong chương trình ứng dựng của nhóm, giải thuật đưa ra mức minh họa một cách tô màu cạnh của đồ thị vô hướng Trong đó, việc xếp thứ tự của đỉnhđược đồng nghĩa với thứ tự các đỉnh được sắp xếp của đầu vào Do đó thuật toán được thu gọn như sau:
• Thứ tự các cạnh được sắp xếp trong quá trình nhập dữ liệu về đồ thị Các cạnh được đánh số theo thứ tự E1, E2, ,En
• Tìm bậc lớn nhất của đồ thị (Δ)
Trang 13• Chuẩn bị (Δ+1) màu để tô
• Bước i: Tô màu cạnh Ei bởi màu có chỉ số nhỏ nhất trong số các màuchưa được sử dụng để tô màu cạnh kề của nó Trong đó ở bước
i tùy theocách cài đặt sẽ có những cáchđánh màu khác nhau
Với thuận toán trên chúng ta có thể tìm được 1 cách tô màu cho các cạnh của đồ thị với số màu không quá Δ+1 màu ( vấn đề này sẽ thấy
rõ hơn khi đi sâu vàophần cài dặt) Vậy đó đã là số màu nhỏ nhất hay
chưa Theo định lý Vizing chúng ta phát biểu ở trên, ta có Δ(G)≤ χ′(G) ≤ Δ(G) + 1 Vậy sắc số cạnh chỉ có thể nằm ở 1 trong hai giá trị là Δ(G) và Δ(G) + 1 Với việc chọn số màu lớn nhất có thể tô là Δ(G)+1, thuật toán
đã kẹp được cận trên của sắc số cạnh Với việc lựa chọn màu có chỉ số nhỏ nhất chưa được sử dụng để tô các cạnh kề cho một cạnh, số màu được sử dụng là số màu nhỏ nhất
Trang 14Chương 3 ÁP DỤNG THUẬT TOÁN
Trong phần cài đặt này bài toán tô mầu cạnh có 2 cách nhập dữ liệu (bằng file và nhập từ bàn phím), bài toán tô mầu đỉnh cho phép nhập dữ liệu từ file Menu chương trình hiển thị các lựa chọn nhập dữ liệu:
3.1 Bài toán tô màu cạnh
Trang 153.1.1 Đọc dữ liệu từ file
Hàm có 2 câu lệnh for lồng nhau nên độ phức tạp là O(n2)