lOMoARcPSD|17343589 TRƯỜNG ĐẠI HỌC ĐIỆN LỰC KHOA CÔNG NGHỆ THÔNG TIN BÁO CÁO CHUYÊN ĐỀ HỌC PHẦN NHẬP MÔ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 : PHẠM VĂN TUẤN NGUYỄN HOÀNG HIỆU NGUYỄN DỨC THUẬN Giảng viên hướng dẫn : VŨ VĂN ĐỊNH Ngành : CÔNG NGHỆ THÔNG TIN Chuyên ngành : HỆ THỐNG THƯƠNG MẠI ĐIỆN TỬ Lớp : D14HTTMDT1 Khóa : 2019 Hà Nội, tháng 10 năm 2021 Phiếu chấm điểm lOMoARcPSD|17343589 STT Họ tên sinh viên Nội dung thực hiện Điểm Chữ ký 1 Phạm Văn Tuấn Làm báo cáo Làm chương trình 2 Nguyễn Hoàng Hiệu Làm báo cáo Làm chương trình 3 Nguyễn Đức Thuận Làm báo cáo Làm chương trình Họ tên giảng viên Chữ ký Ghi chú lOMoARcPSD|17343589 MỤC LỤC I. GIỚI THIỆU BÀI TOÁN. Tổng quan về heuristic. Heuristic và các cách biểu diễn đồ thị.
Các bài toán điển hình. Bài toán tô mầu đồ thị. Bài toán tô mầu cạnh. Bài toán tô mầu đỉnh.
Các khái niệm liên quan. Bài toán tô mầu đỉnh. Các định nghĩa sử dụng:. Bài toán tô mầu cạnh.
CÀI ĐẶT THUẬT TOÁN. Bài toán tô mầu đỉnh. Bài toán tô mầu cạnh. Đọc dữ liệu từ fle.
Dữ liệu vào từ bàn phím. TÀI LIỆU THAM KHẢO.52 PHỤ LỤC 1: DANH MỤC CÁC HÌNH ẢNH TRONG TÀI LIỆU.53 PHỤ LỤC 2: PHÂN CHIA CÔNG VIỆC. GIỚI THIỆU BÀI TOÁN 1. Thuật giải heuristic 1.khái niệm heuristic Là mở rộng khái niệm thuật toán.
o Thuờng tìm lời giải tốt nhưng không tốt nhất. o Nhanh chóng tìm 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. o Thuờ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 nguời. Các nguyên lý của thuật giải heuristic Vét cạn thông minh Nguyên lý thứ tự Nguyên lý tham lam Hàm heuristic Kyỹ thuật heuristic: Theo Từ điển tiêếng Anh Oxford: “Heuristics là nghệ thuật tm kiêếm chân lý.
Nói riêng, heuristics là đặc trưng của quá trình học nhờ đó các học sinh học được cách tự tm ra cách giải thích các hiện tượng tự nhiên”. Từ “Heuristics” có cùng một gôếc tiêếng Hy Lạp như từ Eureka. Feigenbaum Feldman đã đưa ra định nghĩa : “Heuristics (Các quy tắếc heuristics, các phương pháp heuristics) là các quy tắếc, phương pháp, chiêến lược, mẹo giải hay phương cách nào đó nhắằm làm giảm khôếi lượng tm kiêếm lời giải trong không gian bài tóan cực lớn”. 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). 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 cạ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ụ lOMoARcPSD|17343589 Đồ 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. Bài toán tô mầu đỉnh 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ị 2. Các nguyên lý của thuật giải heuristic 1.Vét cạn thông minh Hạn chêế vùng không gian tm kiêếm và có sự định hướng để nhanh chóng tm đêến mục tiêu.
Tạo miêằn D’ râết nhỏ so với D Vét cạn trên D’ 2.Nguyên lý tham lam (Greedy): 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. a)Thuật giải GTS1: (Greedy-Traveling Saleman) Xây dựng một lịch trình du lịch có chi phí Cost tôếi thiểu cho bài toán trong trường hợp phải qua n thành phôế với ma trận chi phí C và bắết đâằu tại một đỉnh U nào đó. lOMoARcPSD|17343589 Thuật giải: Bước 1: {Khởi đâằu} Đặt Tour := {}; Cost := 0; V := U; {V là đỉnh hiện tại đang làm việc} Bước 2: {Thắm tâết cả các thành phôế} For k := 1 To n Do qua bước 3; Bước 3: {Chọn cung kêế tiêếp} Đặt (V, W) là cung có chi phí nhỏ nhâết tnh từ V đêến các đỉnh W chưa dùng: Tour := Tour + {(V,W)}; Cost := Cost + Cost(V,W); Nhãn W được sử dụng Đặt V := W; {Gán để xét bước kêế tiêếp} Bước 4: {Chuyêến đi hoàn thành} Đặt Tour := Tour + {(V,U)}; Cost := Cost + Cost(V,U); Dừng. U= A Tour = {} Cost = 0 V =A W ∈ {B, C, D, E}{Các đỉnh có thể đêến từ A} → W = B{Vì qua B có giá thành bé nhâết} Tour = {(A, B)} Cost = 1 V=B W ∈ {C, D, E}→ W = EA Tour = {(A, B),(B, E)} Cost = 1 + 3 = 4 V =E W ∈ {C, D} → W = C b.Thuật giải GTS2: Tạo ra lịch trình từ p thành phôế xuâết phát riêng biệt.
Tìm chu trình của người bán hàng qua n thành phôế (1<p<n) và p chu trình được tạo ra và chỉ chu trình tôết nhâết trong p chu trình được giữ lại mà thôi (thuật giải này đòi hỏi phải nhập n, p và C) Thuật giải: Bước 1: {Khởi đâằu} lOMoARcPSD|17343589 k := 0; {Đêếm sôế thành phôế đi qua} Tour = {(A, B), (B, E), (E, C)} 2. Ứng dụng Bước 2: {Bắết đâằu chu trình mới} Chuyển qua bước 3 khi k<p, ngược lại dừng. Bước 3: {Tạo chu trình mới} k := k + 1; Call (GTS1(Vk)) : Trả vêằ một chu trình T(k) ứng với chi phí C(k). Bước 4: {Cập nhật chu trình tôết nhâết} Nêếu C(k)< Cost thì Best := T(k); Cost := C(k); Bước 2: {Bắết đâằu chu trình mới} lOMoARcPSD|17343589 Chuyển qua bước 3 khi k<p, ngược lại dừng.
Bước 3: {Tạo chu trình mới} k := k + 1; Call (GTS1(Vk)) : Trả vêằ một chu trình T(k) ứng với chi phí C(k). Bước 4: {Cập nhật chu trình tôết nhâết} Nêếu C(k)< Cost thì Best := T(k); Cost := C(k); 2.Bài toán dồ thị - Bài toán lập lịch: Ở đây nhóm xin đưa ra một ví dụ cụ thể là bài toán lập lịch thi: hãy lập lịch thi trong một trường đại học sao cho không có sinh viên nào thi hai môn cùng một lúc Giải pháp: Biểu diễn bằng đồ thị với: Mỗi môn học là một đỉnh Nếu hai môn học nào được dự thi bởi cùng 1 sinh viên thì sẽ nối bằng 1 cạnh lOMoARcPSD|17343589 Các lập lịch sẽ tương ứng với bài toán tô mầu của đồ thị này: số các mầu được tô là số các đợt thi, các đỉnh có cùng mầu sẽ thi cùng 1 đợt. Ví dụ: Có 7 môn thi với thông tin như sau: Môn 1: có các sinh viên A, B, C và D thi Môn 2: có các sinh viên A, E, F, G và H thi Môn 3: có các sinh viên B, E, I, J và K thi Môn 4: có các sinh viên B, F, L và M thi Môn 5: có các sinh viên G, L, N và O thi Môn 6: có các sinh viên J, M, N và P thi Môn 7: có các sinh viên D, H, K, O và P thi Hãy xếp lịch thi thành các đợt sao cho các sinh viên đều có thể dự thi tuần tự các môn mình đăng ký Hình 02: Đồ thị G của bài toán lập lịch trên - Bài toán phân phối các thanh ghi chỉ số (register allocation) Trong lập trình các thanh ghi thường được dung để lưu trữ giá trị các biến tạm thời. Bài toán yêu cầu tìm số thanh ghi ít nhất cần sử dụng trong một chương trình Giải pháp: Biểu diễn bằng đồ thị với: Mỗi biến tương ứng là 1 đỉnh Hai đỉnh được nối với nhau nếu hai biến cùng được ghi xuống tại một thời điểm lOMoARcPSD|17343589 Số thanh ghi ít nhất cần sử dụng sẽ là số mầu của đồ thị trên II.
Bài toán tô mầu đỉnh 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ơn x - Một đồ thị đơn giản G với n đỉnh bao gồm một tập các đỉnh V,với | V |= n, và một bộ các cạnh E, sao cho mỗi cạnh là một cặp 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 nhãn các đỉnh của G với 1 số nguyên, 2,. - Nếu các cặp không có thứ tự của 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 .