Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 29 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
29
Dung lượng
1,31 MB
Nội dung
ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN BÀI THU HOẠCH MÔN: THUẬT TOÁN VÀ PHƯƠNG PHÁP GIẢI QUYẾT VẤN ĐỀ ĐỀ TÀI: PHÂN TÍCH, THIẾT KẾ, CẢI TIẾN VÀ MINH HỌA THUẬT TOÁN TÔ MÀU ĐỒ THỊ Ging viên phụ trách: PGS. TS. ĐỖ VĂN NHƠN Học viên thực hiện: LÂM HÀN VŨ Mã học viên: CH1301119 TP. HỒ CHÍ MINH, THÁNG 10/2014 MỤC LỤC Trang 3 LỜI NÓI ĐẦU Để có thể hoàn thành tốt bài báo cáo, trước tiên tôi gởi lời chân thành cảm ơn đến PGS. TS. Đỗ Văn Nhơn đã tận tình giảng dạy và giúp đỡ trong thời gian thực hiện bài tiểu luận. Xin gửi lời cảm ơn đến gia đình, cảm ơn các anh chị, bạn bè, những người luôn sát cánh, động viên tôi trên bước đường học tập cũng như trong cuộc sống. Xin chân thành biết ơn sự tận tình dạy dỗ và sự giúp đỡ của tất cả quý thầy cô tại trường Đại học Công Nghệ Thông Tin, đặc biệt là các thầy cô trong khoa Khoa học Máy tính, cảm ơn các thầy cô thuộc bộ phận quản trị thiết bị đã tạo điều kiện thuận lợi về mặt tinh thần, điều kiện học tập trong quá trình học tập môn học. Tất cả các kiến thức mà nhà trường và quý thầy cô đã truyền đạt là hành trang to lớn để tôi mang theo trên con đường học tập, làm việc và nghiên cứu cũng như trong quá trình hoàn thiện nhân cách của mình. TP. HCM, ngày 10 tháng 10 năm 2014 Học viên Lâm Hàn Vũ GVHD: PGS. TS. Đỗ Văn Nhơn Học viên: Lâm Hàn Vũ Trang 4 I. GIỚI THIỆU BÀI TOÁN 1. TỔNG QUAN VỀ ĐỒ THỊ 1.1. Khái niệm 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 cách khác để mở rộng đồ thị cơ bn 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. Đồ thị vô hướng GVHD: PGS. TS. Đỗ Văn Nhơn Học viên: Lâm Hàn Vũ Trang 5 1.2. 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 Biểu diễn đồ thị bằng ma trận kề - 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 phi 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. GVHD: PGS. TS. Đỗ Văn Nhơn Học viên: Lâm Hàn Vũ Trang 6 Biểu diễn đồ thị trên sử dụng danh sách kề a adjacent to b,c b adjacent to a,c c adjacent to a,b Biểu diễn đồ thị bằng dăn sách kề 2. BÀI TOÁN TÔ MÀU ĐỒ THỊ Tô màu đồ thị bắt nguồn từ bài toán tô màu các quốc gia trên một bản đồ sao cho không có hai quốc gia nào chung đường biên giới được tô cùng màu. Nếu chúng ta xem các quốc gia như các điểm trên mặt phẳng, và vẽ một cạnh kết nối giữa hai cặp đỉnh tương ứng của hai quốc gia nào có chung đường biên giới, thì ta thu được một đồ thị phẳng. Năm 1852, giả thuyết 4 màu được đề cập lần đầu tiên bởi một người Anh Francis Guthrie. Trong khi tô màu bản đồ cho các vùng của nước Anh, ông nhận thấy chỉ cần 4 màu là đủ để tô cho các tỉnh sao cho không có hai tỉnh nào chung biên giới mà lại cùng màu. Từ đây, bài toán 4 màu ra đời và trở thành một trong những bài toán khó giải nhất trong lý thuyết đồ thị lúc đó. Bài toán đã trải qua hơn một thế kỷ và tiêu tốn khá nhiều công sức nghiên cứu của các nhà khoa học để giải quyết. Mãi đến năm 1976, định lý 4 màu được chứng minh bởi Kenneth Appel và Wolfgang Haken tại trường Đại học Illinois với sự trợ giúp của máy tính. Định lý bốn màu (hay GVHD: PGS. TS. Đỗ Văn Nhơn Học viên: Lâm Hàn Vũ Trang 7 định lý bản đồ 4 màu) nghĩ rằng đối với bất kỳ mặt phẳng nào được chia thành các vùng phân biệt, chẳng hạn như bản đồ hành chính của một quốc gia, chỉ cần dùng tối đa bốn màu để phân biệt các vùng lân cận với nhau. Hai vùng được coi là lân cận nếu như chúng có chung nhau một đoạn đường biên, không tính chung nhau một điểm. Nhận thấy được những ứng dụng rộng rãi và mạnh mẽ của nó, từ đầu nhưng năm 70 của thế kỷ XX, tô màu đồ thị đã được chú trọng nghiên cứu như một vấn đề thuật toán và thu được những thành công đáng kể. 3. Một số ứng dụng của bài toán tô màu đồ thị Đồ thị và bài toán tô màu đô thị cung cấp nhiều giải pháp và ứng dụng để giải quyết nhiều bài toán thực tế trong khoa học – kĩ thuật. Ở đây, tôi xin nêu ra một vài ứng dụng tiêu biểu của tô màu đồ thị như sau : 3.1. Bài toán lập lịch Tô màu đồ thị và tính tổng quát của nó là một công cụ hữu hiệu trong việc mô hình nhiều dạng bài toán về lập lịch và phân công. Bài toán lập lịch ở đây có thể được phát biểu như sau : Giả sử chúng ta có một tập các công việc T cần gán vào những slot thời gian, mỗi công việc chỉ cần 1 slot thời gian, và mỗi slot thời gian có thể chấp nhận vô số công việc. Các công việc có thể được lập lịch theo bất kì thứ tự nào, nhưng những cặp công việc đụng độ nhau cần phải được sắp vào những slot thời gian khác nhau. Sự đụng độ ở đây có thể do cả hai cùng phải sử dụng một tài nguyên không thể chia sẽ nào đó. Việc lập lịch cần đảm bảo thời gian để hoàn thành tất cả các công việc ngắn nhất (dùng ít slot thời gian nhất). Đồ thị tương ứng để giải quyết bài toán lập lịch được phát biểu như trên là đồ thị gồm tập các đỉnh là các công việc cần lập lịch. Hai GVHD: PGS. TS. Đỗ Văn Nhơn Học viên: Lâm Hàn Vũ Trang 8 đỉnh tương ứng với hai công việc có đụng độ với nhau thì được nối với nhau bằng 1 cạnh. Sắc số của đồ thị (sẽ được trình bày ở phần II) cũng tương ứng chính là thời gian tối ưu (số slot thời gian nhỏ nhất) để giải quyết toàn bộ công việc mà không xảy ra bất kì sự đụng độ nào. 3.2. Register Allocation Việc đưa các biến số thường dùng vào thanh ghi, một bộ nhớ dung lượng nhỏ và rất nhanh được sử dụng để tăng tốc độ xử lí của các chương trình máy tính bằng cách cung cấp các truy cập trực tiếp đến các giá trị cần dùng, là một trong những hoạt động then chốt làm tăng tốc độ của chương trình. Việc này có tên là Register Allocation và thường được thực hiện bởi một trình biên dịch trong giai đoạn phát sinh mã hóa. Yêu cầu đặt ra là số lượng các biến cần dùng đến, cần được lưu vào thanh ghi có thể rất lớn và số lượng thanh ghi trong máy tính thì hạn chế, ta cần tiết kiệm số thanh ghi tới mức tối đa có thể. Vấn đề Register Allocation được giải quyết như sau : trình biên dịch xây dựng một đồ thị mà ở đó, các đỉnh của đồ thị là kí hiệu của các than ghi và cạnh nối giữa 2 nodes nếu chúng cùng lúc cần dùng đến. Nếu đồ thị có thể được tô chỉ với k màu thì các biến có thể chỉ cần lưu trữ trong k thanh ghi. 3.3. Sắp lịch thi, sắp thời khóa biểu Sắp lịch thi ( hay những biến thể của nó là sắp thời khóa biểu, sắp lịch công tác,…) là một trong những ứng dụng rất khó và mất nhiều thời gian, công sức để giải quyết nếu không áp dụng kết quả của bài toán tô màu đồ thị. Ở các trường đại học, cao đẳng, vào cuối mỗi học kì, cần tổ chức thi các môn học đượ c tổ chức trong học kì đó. Yêu cầu đặt ra là cần phải đưa ra một lịch thi mà ở đó không có một học sinh nào phải thi 2 môn được tổ chức thi cùng lúc, và thời gian thi phải ngắn nhất có thể. GVHD: PGS. TS. Đỗ Văn Nhơn Học viên: Lâm Hàn Vũ Trang 9 II. MÔ HÌNH VẤN ĐỀ 1. Phát biểu bài toán Bài toán tô màu đồ thị tổng quát có thể được phát biểu như sau : Cho một đồ thị G = (V,E) vô hướng N đỉnh, mỗi đỉnh được nối với một số đỉnh khác bằng một cung nối trực tiếp duy nhất (không có 2 đỉnh nào có nhiều hơn 1 đường nối trực tiếp). Bài toán đặt ra: sử dụng số màu ít nhất, hãy tô màu cho các đỉnh sao cho không có 2 đỉnh nào có 2 màu giống nhau mà lại được nối trực tiếp với nhau. 2. Một số định nghĩa, tính chất, thuật ngữ 2.1. Tô màu đỉnh (Vertex Coloring) Tô màu đỉnh đồ thị được nghiên cứu và áp dụng phổ biến nhất trong bài toán tô màu đồ thị. Bài toán được phát biểu như sau: o Cho đồ thị G(V,E) với V là tập hợp các đỉnh của đồ thị, E là tập hợp các cạnh nối các đỉnh có liên quan của đồ thị. o Việc tô màu đồ được thực hiện bằng cách: tô màu tất cả các đỉnh trong V sao cho bất kì 2 đỉnh trong G được nối bởi 1 cạnh đều phải thỏa điều kiện không cùng màu với nhau. o Bài toán tô màu đỉnh trở nên tối ưu khi số màu được sử dụng để tô các đỉnh trong V của đồ thị G là ít nhất. o Số màu ít nhất có thể tô hoàn chỉnh đồ thị G được gọi là chromatic number - sắc số , kí hiệu: X(G) GVHD: PGS. TS. Đỗ Văn Nhơn Học viên: Lâm Hàn Vũ Trang 10 o Bài toán tô k màu lên 1 đồ thị được gọi là bài toán k- coloring. Bài toán được gọi là k-chromatic nếu k = X(G). Ví dụ: Cho đồ thị G(V,G) như sau: Với k = 3. Bài toán k-coloring được thực hiện cho kết quả: Tuy nhiên, sắc số của đồ thị G là X(G) = 2 nếu như ta tô màu như sau: GVHD: PGS. TS. Đỗ Văn Nhơn Học viên: Lâm Hàn Vũ [...]... cách tô màu cho đồ thị G nếu có k màu nhất định Sắc số có thể định nghĩa theo đa thức màu như sau: sắc số của đồ thị G là giá trị nguyên dương nhỏ nhất k mà đa thức màu của G tại k nhận giá trị dương: χ Đa thức màu của 1 số đồ thị: Đồ thị tam giác K3 Đồ thị đường đi Pn Đồ thị đầy đủ Kn Cây với n đỉnh Đồ thị chu trình Cn Đồ thị Perdesen 2.3 − Tô màu cạnh Bài toán tô màu cạnh của 1 đồ thị là phương pháp. .. Vũ Trang 14 Đồ thị k5- đồ thị đầy đủ Đồ thị K3,3 - Đồ thị 2 phía đầy đủ Định lý Kuratowski: Đồ thị G là đồ thị phẳng nếu và chỉ nếu G không chứa đồ thị con đẳng cấu với K5 hoặc K3,3 Ví dụ: Các đồ thị con sau không phải là đồ thị phẳng: Định lý 4 màu: Số màu của một đồ thị phẳng là không lớn hơn 4 Bài toán được đưa ra năm 1850 Có rất nhiều chứng minh sai về bài toán này Chứng minh sai nổi tiếng là của... các đồ thị phức tạp thì sẽ tiêu tốn rất nhiều thời gian thực hiện cũng như tài nguyên hệ thống Do đó, để giải quyết các bài toán đồ thị phức tạp, ta có thể tiếp cận vấn đề theo hướng cố gắng tìm ra một giải pháp tốt, không nhất thiết là giải pháp tối ưu 2 Phương pháp tham lam Có rất nhiều giải pháp được đưa ra nhằm giải quyết bài toán tô màu đồ thị với số đỉnh lớn và có độ phức tạp hợp lý hơn so với phương. .. của đồ thị G là số đỉnh của clique lớn nhất trong G Chỉ số clique của đồ thị G được ký hiệu là ω(G) 3 đỉnh AA,BB,CC tạo thành 1 clique Đồ thị trên có nhiều clique lớn nhất với chỉ số là 3 III THIẾT KẾ THUẬT TOÁN 1 Phương pháp vét cạn Phương pháp vét cạn thường được sử dụng trong tô màu đồ thị để thử tất cả các khả năng có thể, nghĩa là đầu tiên thử tiến hành tô màu đồ thị bằng 1 màu, 2 màu, 3 màu, ... màu đồ thị chỉ phù hợp cho những đồ thị đơn giải với kích thước nhỏ Một phương pháp khá quen thuộc và hiệu quả là phương pháp tham lam Chúng tôi sử dụng phương pháp tham lam cùng một số heuristic để giải quyết bài toán Giải thuật tha lam cho bài toán tô màu đô thị xem xét các đỉnh theo một thứ tự cụ thể và tô cho một màu x trong tập những màu sẵn có sao cho x chưa được tô cho bất cứ đỉnh kề nào của ;... NÂNG CAO THUẬT TOÁN Với những phân tích và nhận định ở phần (III), ta tiến hành cải thiện nâng cao thuật toán tô màu đồ thị sử dụng chiến lược sắp xếp động Thuật toán tô màu đồ thị khi đó được trình bày như sau: Input : Đồ thị G = (V,E) Output : Đồ thị G = (V,E) có các đỉnh đã được gán màu Bước 0 : i := 0; k:=1 GVHD: PGS TS Đỗ Văn Nhơn Học viên: Lâm Hàn Vũ Trang 23 Lập danh sách các đỉnh của đồ thị E’... của giải thuật trong trường hợp tồi tệ nhất là − Tính dừng : Giải thuật tô màu đồ thị dừng khi tất cả các đỉnh trong đồ thị được tô màu hoặc đồ thị không có đỉnh nào − Tính đúng : Trong một số ít các trường hợp, giải thuật tô màu đồ thị nêu trên không cho được lời giải tối ưu Tuy nhiên, lời giải của nó thường rất tốt và chấp nhận được Tốc độ thực hiện nhanh chóng là một ưu thế lớn của giải thuật − Đánh... chương trình gồm: • Biểu diễn đồ thị vô hướng đọc từ file input.txt Đồ thị gồm các node và cạnh nối giữa chúng Mỗi node có thông tin: tên node và bậc của node Mặt định, tất cả các node trong đồ thị được tô chung một màu GVHD: PGS TS Đỗ Văn Nhơn Học viên: Lâm Hàn Vũ Trang 26 • Menu: chứa các chức năng điều khiển việc minh họa thuật toán to màu đồ thị Thuật toán tô màu cho đồ thị đang biểu diễn sẽ được... phương pháp tô màu cho riêng từng cạnh của đồ thị, sao cho ở bất kì đỉnh nào GVHD: PGS TS Đỗ Văn Nhơn Học viên: Lâm Hàn Vũ Trang 13 trên đồ thị, các cạnh nối đến đỉnh đó phải có màu khác − nhau Bài toán tô màu cạnh với k màu được gọi là bài toán k- − edge-coloring Đồ thị được tô hoàn chỉnh sử dụng ít màu nhất được gọi là chromatic index, hay edge chromatic number 2.4 Tô màu toàn bộ Phương pháp tô màu toàn... bài toán được gọi là k-chromatic 2.2 Đa thức màu (Chromatic Polynomial) Trong lý thuyết đồ thị, Đa thức màu (tiếng Anh: Chromatic polynomial) của một đồ thị biểu diễn số cách tô màu các đỉnh của đồ thị đó theo số màu Đa thức màu là đối tượng nghiên cứu của lý thuyết đại số đồ thị, một nhánh của toán học Đa thức màu được đề xuất bởi Geogre David Birkhoff trong một nỗ lực của ông nhằm giải quyết bài toán . HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN BÀI THU HOẠCH MÔN: THUẬT TOÁN VÀ PHƯƠNG PHÁP GIẢI QUYẾT VẤN ĐỀ ĐỀ TÀI: PHÂN TÍCH, THIẾT KẾ, CẢI TIẾN VÀ MINH HỌA THUẬT TOÁN TÔ MÀU ĐỒ THỊ Ging. của bài toán tô màu đồ thị Đồ thị và bài toán tô màu đô thị cung cấp nhiều giải pháp và ứng dụng để giải quyết nhiều bài toán thực tế trong khoa học – kĩ thuật. Ở đây, tôi xin nêu ra một vài ứng. thức màu của 1 số đồ thị: Đồ thị tam giác K 3 Đồ thị đường đi P n Đồ thị đầy đủ K n Cây với n đỉnh Đồ thị chu trình C n Đồ thị Perdesen 2.3. Tô màu cạnh − Bài toán tô màu cạnh của 1 đồ thị