Bài toán tìm bộ ghép cực đại trên đồ thị, ứng dụng giải một số bài toán trong thực tế

80 565 1
Bài toán tìm bộ ghép cực đại trên đồ thị, ứng dụng giải một số bài toán trong thực tế

Đ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

i ĐẠI HỌC THÁI NGUYÊN TRƢỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN & TRUYỀN THÔNG VŨ MINH TIỆP BÀI TOÁN TÌM BỘ GHÉP CỰC ĐẠI TRÊN ĐỒ THỊ, ỨNG DỤNG GIẢI MỘT SỐ BÀI TOÁN TRONG THỰC TẾ LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH Thái Nguyên - 2015 ii ĐẠI HỌC THÁI NGUYÊN TRƢỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN & TRUYỀN THÔNG VŨ MINH TIỆP BÀI TOÁN TÌM BỘ GHÉP CỰC ĐẠI TRÊN ĐỒ THỊ, ỨNG DỤNG GIẢI MỘT SỐ BÀI TOÁN TRONG THỰC TẾ Chuyên ngành: Khoa học máy tính Mã số: 60 48 01 LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH NGƢỜI HƢỚNG DẪN KHOA HỌC: TS Trƣơng Hà Hải Thái Nguyên - 2015 iii LỜI CAM ĐOAN Em xin cam đoan: Luận v n th c s Khoa học máy tính “ Bài toán tìm ghép cực đại đồ thị, ứng dụng giải số toán thực tế” công trình nghiên cứu thực cá nhân em, đƣợc thực sở nghiên cứu lý thuyết dƣới hƣớng dẫn khoa học Tiến s Trƣơng Hà Hải, Trƣờng Đ i học Công nghệ Thông tin Truyền thông Em xin chịu trách nhiệm lời cam đoan Thái Nguyên, ngày tháng Tác giả Vũ Minh Tiệp n m 2015 iv LỜI CẢM ƠN Để hoàn thành luận v n, em xin chân thành cảm ơn Trƣờng Đ i học Công nghệ Thông tin Truyền thông, Phòng Đào t o, thầy, cô giáo giảng d y lớp cao học Khoa học máy tính K12E quan tâm, t o điều kiện thuận lợi, tận tình giảng d y giúp đỡ em thời gian theo học t i trƣờng Đặc biệt, em xin bày tỏ lòng biết ơn sâu sắc đến TS Trƣơng Hà Hải, ngƣời dành nhiều thời gian, tâm huyết hƣớng dẫn em suốt trình nghiên cứu hoàn thành luận v n Em xin cảm ơn cán bộ, giảng viên đồng nghiệp Trƣờng Trung Cấp Kỹ Thuật V nh Phúc t o điều kiện thời gian để em học tập hoàn thành luận v n Mặc d cố gắng hoàn thiện luận v n, nhiên chắn nhiều thiếu s t, mong g p qu báu quý thầy cô b n Xin trân trọng cảm ơn u n n t n n m Tác giả Vũ Minh Tiệp v MỤC LỤC Đặt vấn đề CHƢƠNG CƠ SỞ LÝ THUYẾT VỀ ĐỒ THỊ VÀ ĐỘ PHỨC TẠP THUẬT TOÁN 1.1 CÁC KHÁI NIỆM CƠ BẢN 1.1.1 Khái niệm đồ thị 1.1.2 Các lo i đồ thị 1.1.3 Biểu diễn đồ thị 11 1.2 ĐỘ PHỨC TẠP TÍNH TOÁN VÀ TÍNH HIỆU QUẢ CỦA THUẬT TOÁN 16 1.2.1 Định ngh a thuật toán 16 1.2.2 Phân tích độ phức t p thuật toán 17 1.2.3 Tối ƣu thuật toán 18 1.3 MỘT SỐ THUẬT TOÁN TÌM KIẾM TRÊN ĐỒ THỊ .19 1.3.1 Thuật toán tìm kiếm theo chiều sâu (DEPTH FIRST SEARCH) 19 1.3.2 Thuật toán tìm kiếm theo chiều rộng (BREADTH FIRST SEARCH) 21 CHƢƠNG BÀI TOÁN TÌM BỘ GHÉP CỰC ĐẠI TRÊN ĐỒ THỊ VÀ CÁC THUẬT TOÁN 24 2.1 ĐỒ THỊ HAI PHÍA .24 2.1.1 Định ngh a 24 2.1.2 Các toán đồ thị hai phía 26 2.2 BÀI TOÁN TÌM BỘ GHÉP CỰC ĐẠI TRÊN ĐỒ THỊ HAI PHÍA 26 2.2.1 Bài toán ghép đôi không trọng khái niệm .26 2.2.2 Thuật toán đƣờng mở 28 2.2.3 Độ phức t p thuật toán .29 2.3 BÀI TOÁN TÌM BỘ GHÉP CỰC ĐẠI VỚI TỔNG TRỌNG SỐ CỰC ĐẠI HOẶC CỰC TIỂU TRÊN ĐỒ THỊ HAI PHÍA .29 2.3.1 Bài toán phân công 29 2.3.2 Thuật toán tìm cặp ghép với tổng trọng số c nh lớn nhỏ 30 2.3.3 Thuật toán Hung-ga-ri 33 vi 2.3.4 Phƣơng pháp đối ngẫu Kuhn-Munkres 37 2.3.5 Đánh giá độ phức t p cải tiến thuật toán .39 2.4 BÀI TOÁN TÌM BỘ GHÉP CỰC ĐẠI TRÊN ĐỒ THỊ TỔNG QUÁT 42 2.4.1 Các khái niệm 42 2.4.2 Thuật toán Edmonds (1965) .44 2.4.3 Thuật toán Lawler (1973) .46 CHƢƠNG MỘT SỐ BÀI TOÁN ỨNG DỤNG TRONG THỰC TẾ 50 3.1 BÀI TOÁN ĐIỀU HÀNH TAXI 50 3.1.1 Phát biểu toán .50 3.1.2 Phân tích toán xây dựng thuật toán .50 3.2 BÀI TOÁN XẾP LỚP HỌC THEO TÍN CHỈ 60 3.2.1 Mô hình đào t o theo học chế tín .60 3.2.2 Phát biểu toán .61 3.2.3 Phân tích toán xây dựng thuật toán .62 TÀI LIỆU THAM KHẢO 73 vii DANH MỤC C C H NH V Hình 1: Ví dụ mô hình đồ thị Hình 2: Đơn đồ thị vô hƣớng đơn đồ thị vô hƣớng Hình 3: Đa đồ thị vô hƣớng Hình 4: Đơn đồ thị c hƣớng đơn đồ thị c hƣớng Hình 5: Đa đồ thị c hƣớng Hình 6: Đơn đồ thị vô hƣớng Hình 7: Đồ thị c hƣớng 10 Hình 8: Ví dụ biểu diễn đồ thị danh sách c nh 12 Hình 9: Ví dụ biểu diễn đồ thị danh sách liền kề 13 Hình 10: Ví dụ biểu diễn đồ thị ma trận kề 14 Hình 11: Ví dụ biểu diễn đồ thị ma trận liên thuộc 16 Hình 12: Quá trình tìm kiếm theo chiều sâu 20 Hình 13: Cây BFS 21 Hình 14: Quá trình tìm kiếm theo chiều rộng 23 Hình 15: Ví dụ đồ thị hai phía đồ thị hai phía 24 Hình 16: Đồ thị hai phía 28 Hình 17: Ví dụ toán tìm ghép cực đ i đồ thị 43 Hình 18: Phép chập Blossom 45 Hình 19: Nở Blossom để dò đƣờng xuyên qua Blossom 46 Đặt vấn đề Ngày việc giải toán lớn cho hệ thống đòi hỏi hợp tác chặt chẽ chuyên gia l nh vực chuyên môn, nhƣ chuyên gia Toán, Toán ứng dụng chuyên gia Tin học, kỹ sƣ lập trình Việc thiết lập đƣợc mô hình hợp lý, phản ánh đƣợc chất toán thực tế đồng thời khả thi phƣơng diện tính toán điều đáng đƣợc quan tâm Đặc biệt chuyên ngành liên quan toán học chuyên ngành đƣợc quan tâm, số đ L thuyết đồ thị Đồ thị biểu diễn đƣợc nhiều cấu trúc, nhiều toán thực tế đƣợc biểu diễn đồ thị Ví dụ, cấu trúc liên kết website đƣợc biểu diễn đồ thị c hƣớng nhƣ sau: đỉnh trang web có t i website, tồn t i c nh c hƣớng nối từ trang A tới trang B A có chứa liên kết tới B Do vậy, phát triển thuật toán xử l đồ thị mối quan tâm khoa học máy tính Mặc dù Lý thuyết đồ thị đƣợc khoa học phát triển từ lâu nhƣng l i có nhiều ứng dụng đ i, đặc biệt thuật toán đồ thị có nhiều ứng dụng nhiều l nh vực khác nhƣ: M ng máy tính, Lý thuyết mã, Tối ƣu hoá, Kinh tế học Những tƣởng lý thuyết đồ thị đƣợc nhà toán học Thụy s Leonhard Euler đƣa từ kỷ 18 Ông d ng l thuyết đồ thị để giải toán cầu Konigsberg tiếng Đồ thị đƣợc d ng để giải nhiều toán thuộc l nh vực khác nhƣ: ngƣời ta dùng đồ thị để biểu diễn c nh tranh loài môi trƣờng sinh thái, dùng đồ thị biểu diễn có ảnh hƣởng đến tổ chức đ c thể dùng đồ thị để giải toán nhƣ toán tính số tổ hợp khác chuyến xe hai thành phố m ng giao thông, toán tham quan tất phố thành phố cho phố qua lần, hay toán tìm số màu cần thiết để tô vùng khác đồ, Đồ thị với trọng số đƣợc gán cho c nh d ng để giải toán nhƣ toán tìm đƣờng ngắn hai thành phố m ng giao thông, toán phân công lao động cho tổng lợi nhuận thu đƣợc lớn Đặc biệt, nhiều toán thực tế sử dụng mô hình đồ thị thuật toán đồ thị đƣợc giải hiệu nhƣ: toán điều hành taxi, toán xếp lớp học theo tín đƣa mô hình toán tìm ghép cực đ i đồ thị sử dụng thuật toán tƣơng ứng Chính đồ thị đƣợc sử dụng để giải nhiều toán thuộc nhiều l nh vực khác cách dễ dàng phổ biến nhƣ nên đồ thị giữ vai trò quan trọng sống, đặc biệt l nh vực công nghệ thông tin, dựa vào đồ thị thuật toán đồ thị ngƣời ta xây dựng nên phần mềm hữu ích giải toán thực tế cách nhanh chóng tối ƣu Nhận thấy tính thiết thực vấn đề đƣợc gợi ý giảng viên hƣớng dẫn, chọn nội dung nghiên cứu ―Bài toán tìm ghép cực đại đồ thị, ứng dụng giải số toán thực tế.” làm đề tài cho luận v n tốt nghiệp Luận v n đƣợc bố cục thành chƣơng: Chƣơng Cơ sở lý thuyết đồ thị độ phức tạp thuật toán: C ươn trình bày khái niệm Lý thuyết đồ thị v độ phức tạp thuật toán Chƣơng Bài toán tìm ghép cực đại đồ thị thuật toán: C ươn n p t b ểu dạng toán tìm ghép cực đạ tr n đồ thị, trình bày thuật toán v đ n độ phức tạp thuật toán Chƣơng Một số toán ứng dụng thực tế: Tìm hiểu số toán ứng dụng thực tế: B to n đ ều hành taxi, toán xếp lớp học theo tín … xâ dựn c ươn trìn t nghiệm giải toán ứng dụng toán xếp lớp học theo tín tạ trường Trung cấp Kỹ thuật Vĩn P úc 59 int dem = 0; public void Tim(int tt, int x, int y) { int tg = this.T[x][y]; if (tg == -1) { if (dem == || (dem > && x != this.Ng[tt][dem 1])) { dem++; this.Ng[tt][dem - 1] = x; } dem++; this.Ng[tt][dem - 1] = y; } else { Tim(tt, x, tg); Tim(tt, tg, y); } } public void KetQua() { string text = string.Empty; DateTime TDateTime = DateTime.Now; int j, z, tt, tong; this.Ng = new int[this.k][]; for(int i=0; iN đủ số lƣợng sinh viên i muốn học tức P[i] Bƣớc 2: Repeat Tao_day_voi; // t o cột đầy, cột vơi Gán_số; Nếu tìm đƣợc dãy vơi sửa; Until không tìm đƣợc dãy vơi Trong đ : Tao_day_voi: Tìm mảng a tổng t cột c tổng số số Duyệt từ cột đến cột N, cột c tổng số = t cột đ đƣợc gọi cột đầy, cột c tổng số < t - đ đƣợc gọi cột vơi Gán số: Xét cột: Nếu cột j cột đầy thì: { Gán số cho cột j; Xét tất hàng i, gán số j cho hàng i chƣa đƣợc gán sô; } Xét hàng: Nếu hàng i đƣợc gán số Nếu sinh viên i c thể theo học đƣợc học phần j (coi ô [i, j] ô trắng ) 64 Gán số i cho cột j chƣa đƣợc gán số Tìm vơi: Tìm xem hàng tồn t i cột vơi hay không Nếu tìm đƣợc cột vơ sửa l i dây chuyền xen kẽ ô xanh ô trắng, với ô xanh ô a[i,j] đƣợc gán giá trị Ví dụ: C sinh viên đ ng k học, sinh viên đƣợc đánh số từ đến 8, nhà trƣờng dự kiến mở lớp d y học phần kí hiệu từ đến Thông tin phiếu đ ng k sinh viên đƣợc biểu diễn bảng sau: 0 2 2 0 0 2 2 2 0 0 0 2 2 0 2 0 2 2 0 2 0 0 Số lƣợng học phần sinh viên muốn theo học cho bảng sau: 4 3 Thực ví dụ theo thuật toán ta c kết nhƣ sau: Sinh viên 1: Học học phần: 1, 6, Sinh viên 2: Học học phần: 2, 3, 4, 65 Sinh viên 3: Học học phần: 1, Sinh viên 4: Học học phần: 1, 2, 3, Sinh viên 5: Học học phần: 2, 4, 5, Sinh viên 6: Học học phần: 2, 3, Sinh viên 7: Học học phần: 1, 6, Sinh viên 8: Học học phần: 3, 4, 5, Một số giao diện chƣơng trình Giao diện 66 Chức n ng thêm học phần cho học kỳ 67 Chức n ng đ ng k học phần Chức n ng xem kết 68 Các hàm thủ tục chƣơng trình: using using using using using System; System.Collections.Generic; System.Linq; System.Text; System.Threading.Tasks; namespace DangKyTinChi.Common { public class Hungari { public int[] P = null/*So Hoc Phaan sv muon hoc*/, Day = null/*Day day hay voi*/ , Gc = null/*Gan cot*/, Gh = null/*Gan hang*/; public int[][] A = null; public int M = 0/*So SV*/, N = 0/*So Hoc Phan*/, J0 = 0; public void Prepare() { this.P = new int[this.M]; this.Gc = new int[this.N]; this.Gh = new int[this.M]; this.Day = new int[this.N]; this.A = new int[M][]; for (int i = 0; i < this.M; i++) this.A[i] = new int[this.N]; for (int i = 0; i < this.M; i++) for (int j = 0; j < this.N; j++) this.A[i][j] = 2; } private void Hang(int i) { int dem = 0; for (int j = 0; j < this.N; j++) { if (this.A[i][j] == && dem < this.P[i]) { this.A[i][j] = 1; dem++; } } } /// 69 /// Tao Phuong An Ban Dau /// public void Pal() { for (int i = 0; i < this.M; i++) { this.Hang(i); } } private int TongCot(int j) { int p = 0; for (int i = 0; i < this.M; i++) { if (this.A[i][j] == 1) p++; } return p; } private void TaoDayVoi() { for (int j = 0; j < this.N; j++) this.Day[j] = 0; int t = this.TongCot(0); for (int j = 1; j < this.N; j++) { int tongCotJ = this.TongCot(j); if (t < tongCotJ) t = tongCotJ; } for (int j = 0; j < this.N; j++) { int tongCotJ = this.TongCot(j); if (t == tongCotJ) this.Day[j] = 1; //Cot Day //if (t >= tongCotJ + 2) this.Day[j] = -1; //Cot Voi 1< t -2 if (tongCotJ < t - 2) this.Day[j] = -1; } } private void Gan1() { for (int j = 0; j < this.N; j++) 70 { if (this.Day[j] == 1) { this.Gc[j] = 0; for (int i = 0; i < this.M; i++) { if (this.A[i][j] == 1) if (this.Gh[i] == -1) this.Gh[i] = j; } } } } private void Gan2() { for (int i = 0; i < this.M; i++) { if (this.Gh[i] > 0) { for (int j = 0; j < this.N; j++) { if (this.A[i][j] == 0) if (this.Gc[j] == -1) this.Gc[j] = i; } } } } private void GanSo() { int dem = 0; for (int i = 0; i < this.M; i++) { this.Gh[i] = -1; for (int j = 0; j < this.N; j++) { this.Gc[j] = -1; dem = 0; { Gan1(); Gan2(); dem++; } while (dem == (this.N + this.M)); } } 71 } private bool TimVoi() { for (int j = 0; j < this.N; j++) { if (this.Day[j] == -1 && this.Gc[j] > 0) { // j 0:=j; this.J0 = j; return true; break; } } return false; } private void Sua(int i, int j) { while (i > && j > 0) { i = this.Gc[j]; this.A[i][j] = - this.A[i][j]; j = this.Gh[i]; if (j > 0) this.A[i][j] = - this.A[i][j]; } } public void ThucHien() { { TaoDayVoi(); GanSo(); if (TimVoi()) Sua(this.Gc[this.J0], this.J0); } while (TimVoi()); } } } 72 KẾT LUẬN Kết luận Sau thời gian nghiên cứu L thuyết đồ thị, tìm hiểu ứng dụng tính thiết thực l nh vực này, luận v n đ t đƣợc kết nhƣ sau: Phần l thuyết: -Tìm hiểu khái niệm đồ thị, đồ thị hai phía -Tìm hiểu thuật toán giải toán ghép cực đ i đồ thị hai phía đồ thị tổng quát Phần thực nghiệm: - Tìm hiểu đƣợc số ứng dụng L thuyết đồ thị bƣớc đầu biết cách ứng dụng l thuyết để triển khai áp dụng giải hai toán thực tế: Bài toán xếp lớp học theo tín toán điều hành taxi -Cài đặt thử nghiệm chƣơng trình mô thuật toán Hungari giải toán xếp lớp học theo học chế tín Đây toán c tính thực tế cao -Các thuật toán sử dụng tìm ghép cực đ i với trọng số cực tiểu đồ thị hai phía thuật toán theo thuật toán Hung-ga-ri -Thời gian ch y toán nhanh -Giao diện thân thiện c thể nâng cấp để áp dụng vào công việc đào t o Trƣờng TCKT V nh Phúc Bên c nh đ , luận v n số nhƣợc điểm nhƣ: Chƣơng trình mô đƣợc thuật toán, chƣa mô tả giải đƣợc hết yêu cầu phát sinh thực tế Hƣớng phát triển đề tài: Tiếp tục tìm hiểu mô hình đào t o theo học chế tín để xây dựng phần mềm hoàn chỉnh, với đầy đủ chức n ng phục vụ cho công việc đào t o theo học chế tín - mô hình đào t o nhiều kh kh n Tìm hiểu thêm ứng dụng L thuyết đồ thị để giải toán thực tế 73 TÀI LIỆU THAM KHẢO Tiếng Việt [1] Lê Minh Hoàng, Giải thuật lập trình, Đ i học sƣ ph m Hà Nội 1999-2002 [2] Nguyễn Cam, Chu Đức Khánh, Lý t u ết đồ t ị, NXB Thành phố Hồ Chí Minh, 1999 [3] Đinh M nh Tƣờng, Cấu trúc liệu thuật toán, NXB KH&KT, 2001 [4] Nguyễn Đức Ngh a – Nguyễn Tô Thành, Toán rời rạc, NXB Đ i học Quốc Gia Hà Nội, 2003 [5] Kenneth H.Rosen – Toán rời rạc ứng dụng Tin học (Bản dịch), NXB Khoa học Kỹ thuật, 2003 Tiếng Anh [6] S Dasgupta, C H Papadimitriou, and U V Vazirani, Algorithms, 2006 [7] Edmonds, Jack (1965) "Paths, trees, and flowers" Canad J Math 17: 449– 467 doi:10.4153/CJM-1965-045-4 [8] Hopcroft,JohnE.;RajeevMotwani,JeffreyD.Ullman, Introduction to Automata Theory, Languages and Computation,1stedition,Addison-Wesley, 1979 [9] Narsingh Deo "Graph Theory with Applications to Engineering and Computer Science", New Delhi-110001, 2006 [10] Aho A., The design and analysis of computer algorithms Addison Wesley Pub Comp, London 1976 [...]... phía đã đƣợc phát biểu Một số các bài toán đ là : - Bài toán ghép đôi không trọng - Bài toán phân công - Bài toán tìm bộ ghép cực đ i với tổng trọng số cực đ i hoặc cực tiểu trên đồ thị hai phía - … 2.2 BÀI TO N T M BỘ GHÉP CỰC ĐẠI TRÊN ĐỒ THỊ HAI PHÍA Phần này đƣợc tham khảo trong các tài liệu [6], [7] 2.2.1 Bài toán ghép đôi không trọng và các khái niệm Cho một đồ thị hai phía G = ( X Y, E) ở đây... cặp ghép Ngƣời ta đã chứng minh đƣợc chi phí thời gian thực hiện giải thuật này trong trƣờng hợp xấu nhất sẽ là 0(n3) đối với đồ thị dày và 0(n(n+m)logn) đối với đồ thị thƣa (trong đ n là số đỉnh và m là số c nh của đồ thị) 2.3 BÀI TO N T M BỘ GHÉP CỰC ĐẠI VỚI TỔNG TRỌNG SỐ CỰC ĐẠI HOẶC CỰC TIỂU TRÊN ĐỒ THỊ HAI PHÍA 2.3.1 Bài toán phân công Đây là một d ng bài toán phát biểu nhƣ sau: C m ngƣời (đánh số. .. 6: Đồ t ị a p ía 2.2.2 Thuật toán đƣờng mở Thuật toán đƣờng mở để tìm một bộ ghép lớn nhất: Bước : Bắt đầu từ một bộ ghép bất kỳ M (thông thƣờng bộ ghép đƣợc khỏi gán bằng bộ ghép rỗng hay đƣợc tìm bằng thuật toán tham lam) Bước : Tìm một đƣờng mở Bước 3:  Nếu bƣớc 2 tìm đƣợc đƣờng mở thì mở rộng bộ ghép M: Trên đƣờng mở, lo i bỏ những c nh đã ghép (c nh đậm) khỏi M và thêm vào M những c nh chƣa ghép. .. cấp một đặc điểm của đồ thị hai phía: tồn t i cặp ghép hoàn hảo (perfect matching) Đồ thị hai phía đƣợc sử dụng trong l thuyết mã h a (coding theory) hiện đ i, đặc biệt khi giải mã các codeword nhận đƣợc từ kênh Đồ thị nhân tử (factor graph) và đồ thị Tanner là các ví dụ Đồ thị hai phía đƣợc ứng dụng rất nhiều trong thực tế Chính vì vậy c rất nhiều bài toán trên đồ thị hai phía đã đƣợc phát biểu Một số. .. diễn đồ thị trên máy tính Sau đây chúng ta sẽ lần lƣợt tìm hiểu một số phƣơng pháp thông dụng a Danh sách cạnh Trong trƣờng hợp đồ thị c n đỉnh, m c nh, ta c thể biểu diễn đồ thị dƣới d ng danh sách c nh, trong cách biểu diễn này, ngƣời ta liệt kê tất cả các c nh của đồ thị trong một danh sách, mỗi phần tử của danh sách là một cặp 12 (u, v) tƣơng ứng với một c nh của đồ thị (Trong trƣờng hợp đồ thị... màu 26 2.1.2 Các bài toán trên đồ thị hai phía Đồ thị hai phía thƣờng đƣợc d ng để mô hình các bài toán ghép cặp (matching problem) Ví dụ nhƣ bài toán phân công công việc, giả sử ta c một nh m ngƣời P và một tập công việc J, trong đ không phải ai cũng hợp với mọi công việc Ta c thể mô hình bài toán bằng một đồ thị với tập đỉnh là P + J Nếu ngƣời pi c thể làm công việc ji, đồ thị sẽ c một c nh nối giữa... { y[l], y[ 2 ] , y[ n ] } Một bộ ghép của G là tập hợp các c nh của G đôi một không c đỉnh chung 27 Bài toán ghép đôi là tìm một bộ ghép lớn nhất (ngh a là c số c nh lớn nhất) của G Xét một bộ ghép M của G • Các đỉnh trong M gọi là các đỉnh đậm, các đỉnh khác là đỉnh nh t • Các c nh trong M gọi là các c nh đậm, các c nh khác là c nh nh t • Nếu định hƣớng l i các c nh của đồ thị thành cung, những c... kề: 1 Đối với đồ thị vô hƣớng G, thì ma trận liền kề tƣơng ứng là ma trận đối xứng (aij = aji), điều này không đúng với đồ thị c hƣớng 2 Nếu G là đồ thị vô hƣớng và A là ma trận liền kề tƣơng ứng thì trên ma trận A:Tổng các số trên hàng i = Tổng các số trên cột i = Bậc của đỉnh i = deg(i) 3 Nếu G là đồ thị c hƣớng và A là ma trận liền kề tƣơng ứng thì trên ma trận A: 15 • Tổng các số trên hàng i =... toán Vì đƣờng mở bắt đầu từ một đỉnh chƣa ghép thuộc tập X, đi theo một c nh chƣa ghép sang tập Y, rồi theo một c nh đã ghép về tập X,…cuối c ng là c nh chƣa ghép tới một đỉnh thuộc tập Y chƣa ghép Nên ta thấy độ dài đƣờng mở là lẻ và trên đƣờng mở số c nh thuộc M ít hơn số c nh không thuộc M là 1 c nh Ta c thể sử dụng thuật toán tìm kiếm theo chiều rộng (BFS) để đƣờng mở tìm đƣợc là đƣờng đi ngắn nhất,... t ng độ phức t p của thuật toán Việc cải tiến tập trung vào : - Cố gắng giảm các vòng lặp lồng nhau 19 - T ng số lệnh thực hiện trong một bƣớc lặp để giảm số lƣợng các bƣớc lặp - Tách các lệnh không phụ thuộc vào chỉ số lặp ra khỏi vòng lặp 1.3 MỘT SỐ THUẬT TOÁN TÌM KIẾM TRÊN ĐỒ THỊ 1.3.1 Thuật toán tìm kiếm theo chiều sâu (DEPTH FIRST SEARCH) a Ý tƣởng Tƣ tƣởng của thuật toán có thể trình bày nhƣ ...ii ĐẠI HỌC THÁI NGUYÊN TRƢỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN & TRUYỀN THÔNG VŨ MINH TIỆP BÀI TOÁN TÌM BỘ GHÉP CỰC ĐẠI TRÊN ĐỒ THỊ, ỨNG DỤNG GIẢI MỘT SỐ BÀI TOÁN TRONG THỰC TẾ Chuyên ngành:... thuật toán Chƣơng Một số toán ứng dụng thực tế: Tìm hiểu số toán ứng dụng thực tế: B to n đ ều hành taxi, toán xếp lớp học theo tín … xâ dựn c ươn trìn t nghiệm giải toán ứng dụng toán xếp lớp học... thuyết đồ thị v độ phức tạp thuật toán Chƣơng Bài toán tìm ghép cực đại đồ thị thuật toán: C ươn n p t b ểu dạng toán tìm ghép cực đạ tr n đồ thị, trình bày thuật toán v đ n độ phức tạp thuật toán

Ngày đăng: 13/12/2016, 09:52

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan