bài toán người du lịch lý thuyết đồ thị và ứng dụng

30 2K 1
bài toán người du lịch lý thuyết đồ thị và ứng dụng

Đ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

thuyết đồ thị ứng dụng GVHD: PGS.TSKH Trần Quốc Chiến MỤC LỤC MỤC LỤC 1 MỞ ĐẦU 1 MỞ ĐẦU thuyết đồ thị là ngành khoa học phát triển từ lâu đời nhưng lại có nhiều ứng dụng hiện đại. Những ý tưởng cơ bản của nó đã được nhà Toán học Thụy sĩ vĩ đại Leonhard Euler đưa ra từ thế kỷ 18. Ngày nay, thuyết đồ thị đã phát triển thành Toán học có vị trí đăc biệt quan trọng về mặt thuyết cũng như ứng dụng, đặc biệt là ứng dụng vào giải các bài toán tối ưu. Bài toán Người du lịch (Travelling Salesman Problem) là một trong những bài toán kinh điển khó trong tin học. Có rất nhiều cách tiếp cận giải bài toán này ngay từ khi nó mới ra đời, như sử dụng quy hoạch tuyến tính, nhánh cận, nhưng mới chỉ dừng lại ở các bộ dữ liệu nhỏ, không tìm được cách giải tối ưu vẫn đang được tiếp tục nghiên cứu phát triển. Với mong muốn bước đầu nghiên cứu về những bài toán tối ưu cách giải một số bài toán tối ưu cũng như tìm kiếm những phương pháp có thể giải tốt những bài toán tối ưu, nhóm 5 chúng tôi đã chọn: “Bài toán người du lịch” (Traveling salesman problem) cho đề tài nghiên cứu của môn học “Lý thuyết đồ thị ứng dụng”. Đề tài gồm 2 chương xoay quanh nguyên bù trừ. Chương 1 nêu đại cương về cơ sở thuyết của thuyết đồ thị, chương 2 nghiên cứu sâu về bài toán người du lịch . STT Họ tên Công việc (theo mục lục) Chữ ký Nhận xét của giáo viên 1 2 3 4 Trần Thị Ngân ( Nhóm trưởng) Hà Thị Thu Sương Phạm Đức Khanh Nguyễn Tấn Duy Chương 1, chương 2 Chương 1, chương 2 Chương 1 Chương 1 Đề tài: Bài toán người du lịch 1 Nhóm thực hiện: Nhóm 5 thuyết đồ thị ứng dụng GVHD: PGS.TSKH Trần Quốc Chiến CHƯƠNG 1: CƠ SỞ THUYẾT 1.1 CÁC KHÁI NIỆM CƠ BẢN 1.1.1. Đồ thị, đỉnh, cạnh, cung  Định nghĩa 1.1.1. Đồ thị vô hướng G = (V, E) gồm một tập V các đỉnh tập E các cạnh. Mỗi cạnh e ∈ E được liên kết với một cặp đỉnh v, w (không kể thứ tự).  Định nghĩa 1.1.2. Đồ thị có hướng G = (V, E) gồm một tập V các đỉnh tập E các cạnh có hướng gọi là cung. Mỗi cạnh e ∈ E được liên kết với một cặp đỉnh (v, w) có thứ tự. Ghi chú: - Cạnh có hai đỉnh liên kết trùng nhau gọi là khuyên. - Đỉnh không kề với đỉnh khác gọi là đỉnh cô lập.  Định nghĩa 1.1.3. Đồ thị hữu hạn là đồ thị có số cạnh (cung) hữu hạn.  Định nghĩa 1.1.4. Đồ thị đơn là đồ thị không có khuyên không có cạnh song song.  Định nghĩa 1.1.5. Đồ thị vô hướng đủđồ thị mà mọi cặp đỉnh đều kề nhau.  Định nghĩa 1.1.6. Bậc của đỉnh v ∈ V là tổng số cạnh liên thuộc với nó ký hiệu là deg(v). Nếu đỉnh có khuyên thì mỗi khuyên được tính là 2 khi tính bậc, như vậy: deg(v):= Số cạnh + 2*Số khuyên Từ định nghĩa suy ra đỉnh cô lập là đỉnh có bậc bằng 0.  Định nghĩa 1.1.7. Đỉnh treo là đỉnh có bậc bằng 1.  Định nghĩa 1.1.8. Cho G = (V, E) là đồ thị có hướng nửa bậc ra của đỉnh v ∈ V, ký hiệu là deg o (v), là số cung đi ra từ đỉnh v (v là đỉnh đầu) nửa bậc vào của đỉnh v ∈ V, ký hiệu là deg 1 (v), là số cung đi tới đỉnh v (v là đỉnh cuối).  Hệ quả 1.1.9. Cho đồ thị G = (V, E). Khi đó số đỉnh bậc lẻ của đồ thị vô hướng là số chẵn. Đề tài: Bài toán người du lịch 2 Nhóm thực hiện: Nhóm 5 thuyết đồ thị ứng dụng GVHD: PGS.TSKH Trần Quốc Chiến  Định nghĩa 1.1.10. Đồ thị K n là đồ thị đơn, đủ n đỉnh (mỗi cặp đỉnh đều có duy nhất một cạnh liên kết).  Định nghĩa 1.1.11. Đồ thị lưỡng phân G = (V, E) là đồ thị mà tập các đỉnh được phân làm hai tập rời nhau V 1 V 2 sao cho mỗi cạnh của nó liên kết với một đỉnh thuộc V 1 một đỉnh thuộc V 2 , ký hiệu G = ({V 1 ,V 2 },E) Đồ thị K m,n là đồ thị lưỡng phân ({V 1 ,V 2 }, E) với tập V 1 có m đỉnh tập V 2 có n đỉnh mỗi đỉnh của V 1 được nối với mỗi đỉnh của V 2 bằng một cạnh duy nhất. 1.1.2. Đường đi, chu trình, tính liên thông  Định nghĩa 1.1.12. Cho đồ thị G = (V, E) Dây µ từ đỉnh v đến w là tập hợp các đỉnh cạnh nối tiếp nhau bắt đầu từ đỉnh v kết thúc tại đỉnh w. Số cạnh trên dây µ gọi là độ dài của dây µ . Đường đi từ đỉnh v đến đỉnh w độ dài n đựợc biễu diễn như sau µ = (v,e 1 ,v 1 ,e 2 ,v 2 , ,v n-1 ,e n , w) trong đó v i (i = 1, , n-1) là các đỉnh trên đường đi e i (i = 1, , n) là các cạnh trên đường đi liên thuộc đỉnh kề trước sau nó. Đường đi sơ cấp : là đường đi không đi qua một đỉnh quá một lần Vòng là dãy có đỉnh đầu đỉnh cuối trùng nhau. Chu trình là đường đi có đỉnh đầu đỉnh cuối trùng nhau Chu trình sơ cấp : là chu trình không đi qua một đỉnh quá một lần. Dãy có hướng : trong đồ thị có hướng là dãy các đỉnh cung nối tiếp nhau (e 1 ,e 2 ,…,e n ) thỏa mãn đỉnh cuối của cung e i là đỉnh đầu của cung e i+1 , i=1, n-1. Đường đi có hướng trong đồ thị có hướng là dãy có hướng, trong đó các cung không lặp lại. Đường đi có hướng sơ cấp là đường đi có hướng không đi qua một đỉnh quá một lần. Vòng có hướng là dãy có hướng có đỉnh đầu đỉnh cuối trùng nhau. Chu trình có hướng là đường đi có hướng có đỉnh đầu đỉnh cuối trùng nhau. Chu trình có hướng sơ cấp là chu trình có hướng không đi qua một đỉnh quá một lần . Đồ thị có hướng gọi là liên thông, nếu mọi cặp đỉnh của nó đều có đường đi nối chúng với nhau. Đồ thị có hướng gọi là liên thông mạnh, nếu mọi cặp đỉnh của nó đều có đường đi có hướng nối chúng với nhau. Đồ thị có hướng gọi là liên thông yếu, nếu đồ thị lót (vô hướng) của nó liên thông. Đồ thị có hướng gọi là bán liên thông, nếu với mọi cặp đỉnh (u,v) bao giờ cũng tồn tại đường đi có hướng từ u đến v hoặc từ v đến u. Đề tài: Bài toán người du lịch 3 Nhóm thực hiện: Nhóm 5 thuyết đồ thị ứng dụng GVHD: PGS.TSKH Trần Quốc Chiến  Định 1.1.13. • Trong đồ thị vô hướng mỗi dãy từ đỉnh v đến w chứa đường đi sơ cấp từ v đến w • Trong đồ thị có hướng mỗi dãy có hướng từ đỉnh v đến w chứa đường đi có hướng sơ cấp từ v đến w.  Định 1.1.14. Đồ thị G lưỡng phân khi chỉ khi G không chứa chu trình độ dài lẻ.  Định nghĩa 1.1.15. Trọng đồ (có hướng) là đồ thị (có hướng) mà mỗi cạnh (cung) của nó được gán một số. Trọng đồ được biễu diễn bởi G = (V, E, w), trong đó V là tập các đỉnh, E là tập các cạnh (cung) w: E → R là hàm số trên E, w(e) là trọng số của cạnh (cung) e với mọi e ∈ E. Trong trọng đồ độ dài trọng số của đường đi µ là tổng các trọng số trên đường đi đó.  Định nghĩa 1.1.16. Cho đồ thị G = (V, E). Đồ thị G’= (V’, E’) gọi là đồ thị con của G nếu V’ ⊂ V E’ ⊂ E.  Định nghĩa 1.1.17. Thành phần liên thông của đồ thị G là đồ thị con liên thông tối đại của G.  Định 1.1.18. Cho đồ thị đơn G = (V, E) với n đỉnh k thành phần liên thông. Khi đó số cạnh m của đồ thị thỏa bất đẳng thức 2 )1)(( +−− ≤≤− knkn mkn  Hệ quả 1.1.19. Mọi đồ thị đơn n đỉnh với số cạnh lớn hơn 2 )2)(1( −− nn là liên thông.  Định nghĩa 1.1.20. Tập hợp tách cạnh của đồ thị liên thông G là tập hợp các cạnh của nó mà khi loại bỏ chúng thì G trở thành không liên thông.  Định nghĩa 1.1.21. Lát cắt là tập hợp tách cách cực tiểu.  Định nghĩa 1.1.22. Cầu là lát cắt có duy nhất một cạnh. 1.2. BIỂU DIỄN ĐỒ THỊ 1.2.1. Ma trận kề 1.2.1.1. Đồ thị vô hướng  Định nghĩa 1.2.1. Đề tài: Bài toán người du lịch 4 Nhóm thực hiện: Nhóm 5 thuyết đồ thị ứng dụng GVHD: PGS.TSKH Trần Quốc Chiến Cho đồ thị vô hướng G = (V, E) có n đỉnh theo thứ tự v 1 ,v 2 ,v 3 , ,v n . Ma trận kề của đồ thị G là ma trận vuông A= nnij a × )( , trong đó ij a là số cạnh nối i v với j v . Lưu ý rằng mỗi khuyên được tính là hai cạnh. Từ định nghĩa suy ra rằng ma trận kề của đồ thị vô hướng luôn đối xứng qua đường chéo chính.  Định 1.2.2. Cho đồ thị G = (V, E) có n đỉnh V = {v 1, v 2, v 3 , ,v n } ma trận kề của đồ thị G là ma trận nnij aA × = )( . Giả sử A k = nnij c × )( . Khi đó jic ij ≠ , là số các đường đi chiều dài k từ đỉnh V i đến đỉnh j V .  Hệ quả 1.2.3. Cho đồ thị G = (V, E) có n đỉnh, V={v 1 ,v 2 ,v 3 ,…,v n } ma trận kề của đồ thị G là ma trận nnij aA × = )( . Ký hiệu T = A+A 2 +…+A n-1 Khi đó ta có: (i) Đồ thị G liên thông khi chỉ khi các phần tử ngoài đường chéo chính của ma trận T lớn hơn 0. (ii) Đồ thị G có chu trình khi chỉ khi tồn tại phần tử lớn hơn 0 trên đường chéo chính của ma trận T. + Chú ý: Nếu đồ thị có hai thành phần liên thông thì có thể đánh số lại các đỉnh có ma trận kề dạng A 1 0 0 A 2 1.2.1.2. Đồ thị có hướng  Định nghĩa 1.2.4. Cho đồ thị có hướng G = (V, E) có n đỉnh theo thứ tự v 1 ,v 2 ,v 3 , ,v n . Ma trận kề của đồ thị G là ma trận vuông nnij aA × = )( , trong đó ij a là số cung đi từ i v tới j v .  Định 1.2.5. Cho đồ thị có hướng G = (V, E) có n đỉnh,V={v 1 ,v 2 ,v 3 , ,v n } ma trận kề của đồ thị G là ma trận nnij aA × = )( . Giả sử A k = nnij c × )( . Khi đó ij c , ji ≠ , là số các đường đi có hướng chiều dài k từ đỉnh i v đến j v  Hệ quả 1.2.6. Cho đồ thị có hướng G = (V,E) có n đỉnh, V={v 1 ,v 2 ,v 3 ,…,v n } ma trận kề của đồ thị G là ma trận nnij aA × = )( . Ký hiệu T = A+A 2 +…+A n-1 Khi đó (i) Đồ thị G liên thông mạnh khi chỉ khi các phần tử ngoài đường chéo chính của ma trận T đều lớn hơn 0. Đề tài: Bài toán người du lịch 5 Nhóm thực hiện: Nhóm 5 thuyết đồ thị ứng dụng GVHD: PGS.TSKH Trần Quốc Chiến (ii) Đồ thị G có chu trình có hướng khi chỉ khi tồn tại phần tử lớn hơn 0 trên đường chéo chính của ma trận T. 1.2.2. Ma trận liên thuộc 1.2.2.1. Đồ thị vô hướng  Định nghĩa 1.2.7. Cho đồ thị G=(V,E) có n đỉnh,V= {v 1 ,v 2 ,v 3 , ,v n } m cạnh E={e 1 ,e 2 ,e 3 ,…,e m }. Ma trận liên thuộc của đồ thị G là ma trận A= ( nnij a × ) thỏa mãn: 1, nếu đỉnh v i liên thuộc cạnh j e ij a = 0, nếu đỉnh v i không liên thuộc cạnh j e  Mệnh đề 1.2.8. Cho đồ thị đơn G = (V, E) với ma trận liên thuộc )( ij a . Khi đó V)( 1 ∈∀= ∑ = i n j iji vavd . Chú ý: Nếu đồ thị có 2 thành phần liên thông thì ta có thể đánh lại các đỉnh các cạnh kề có ma trận dạng A 1 0 0 A 2 1.2.2.2.Đồ thị có hướng  Định nghĩa 1.2.9. Cho đồ thị có hướng G = (V, E) có n đỉnh.V={v 1 ,v 2 ,v 3 ,…,v n } m cung E={e 1 , e 2 , e 3 ,…, e m }. Ma trận liên thuộc của đồ thị G là ma trận A= ( nnij a × ) thỏa mãn 1, nếu đỉnh v i là đỉnh đầu của cung e i ij a = -1, nếu đỉnh v i là đỉnh cuối của cung e i 0, nếu đỉnh v i không kề cung e i 1.2. ĐƯỜNG ĐI ĐỒ THỊ HAMILTON 1.2.1. Định nghĩa 1.2.9 Cho đồ thị (có hướng) G = (V, E). Chu trình (có hướng) Hamilton là chu trình sơ cấp qua mọi đỉnh của đồ thị. Đường đi (có hướng) Hamilton là đường đi sơ cấp qua mọi đỉnh đồ thị. Như vậy, mọi chu trình Hamilton có độ dài bằng số đỉnh mọi đường đi Hamilton có độ dài bằng số đỉnh trừ 1. Đồ thị chứa chu trình (có hướng) Hamilton gọi là đồ thị Hamilton. 1.2.2. Điều kiện cần Giả sử đồ thị G có chu trình Hamilton C. Khi đó: • Đồ thị G liên thông. • Mọi đỉnh của G có bậc lớn hơn hoặc bằng 2 đúng hai cạnh kề thuộc chu trình C. Đề tài: Bài toán người du lịch 6 Nhóm thực hiện: Nhóm 5 thuyết đồ thị ứng dụng GVHD: PGS.TSKH Trần Quốc Chiến • Nếu xóa đi k đỉnh bất kỳ cùng các cạnh liên thuộc chúng thì đồ thị còn lại sẽ có tối đa k thành phần liên thông. 1.2.3. Điều kiện đủ  Định 1.2.10. Đồ thị K n với n lẻ n ≥ 3 có (n-1)/2 chu trình Hamilton từng đôi một không giao nhau.  Định 1.2.11. (Dirac) Cho G là đồ thị đơn n đỉnh (n )3≥ . Nếu bậc deg(v) 2 n ≥ với mọi đỉnh v của G thì G có chu trình Hamilton.  Định 1.2.13. Cho G là đồ thị đơn n đỉnh (n ≥ 3). Nếu bậc deg(v) 2 1− ≥ n với mọi đỉnh v của G thì G có đường đi Hamilton.  Định 1.2.14. Cho G là đồ thị đơn n đỉnh (n ≥ 3). Giả sử u v là hai đỉnh không kề nhau của G sao cho deg(u)+deg(v) ≥ n . Khi đó G có chu trình Hamilton khi chỉ khi đồ thị G+(u,v) (đồ thị G thêm cạnh (u, v)) có chu trình Hamilton.  Định 1.2.15. Cho G là đồ thị đơn n đỉnh. Giả sử G’ G’’ là hai đồ thị thu được từ G bằng cách quy nạp nối tất cả cặp đỉnh không kề nhau có tổng các bậc ít nhất bằng n. Khi đó ta có G’= G’’.  Định nghĩa bao đóng Bao đóng C(G) của đồ thị G n đỉnh là đồ thị thu được từ G bằng cách, theo quy nạp, nối tất cả các cặp đỉnh không kề nhau mà tổng số bậc ít nhất bằng n cho đến khi không còn cặp đỉnh nào như vậy nữa.  Định 1.2.16. Đồ thị G có chu trình Hamilton khi chỉ khi bao đóng của G có chu trình Hamilton.  Định 1.2.17. Nếu bao đóng C (G) = K n (n 3 ≥ ) thì đồ thị G có chu trình Hamilton.  Định 1.2.18. (Định Ore) Cho G là đơn đồ thị n đỉnh (n ≥ 3). Nếu deg(u)+deg(v) ≥ n với mọi cặp đỉnh không kề nhau thì đồ thị G có chu trình Hamilton.  Định 1.2.1.9. Cho G là đơn đồ thị n đỉnh (n ≥ 3) m cạnh. Nếu m ≥ C(n-1,2)+2 thì đồ thị G có chu trình Hamilton.  Định 1.2.20. Cho đồ thị G là đồ thị lưỡng phân với hai tập đỉnh V 1 V 2 sao cho Đề tài: Bài toán người du lịch 7 Nhóm thực hiện: Nhóm 5 thuyết đồ thị ứng dụng GVHD: PGS.TSKH Trần Quốc Chiến V 1 = V 2 = n ≥ 2 Nếu bậc deg(v) ≥ n/2 với mọi đỉnh v của G thì G có chu trình Hamilton.  Định 1.2.21. Nếu đồ thị G là đồ thị có hướng liên thông mạnh deg 1 (v) ≥ n/2 & deg 0 (v) ≥ n/2 , ∀ v ∈ G thì G có chu trình Hamilton. . 1.2.4. Đồ thị có hướng  Định 1.2.22. (Konig) Mọi đồ thị có hướng đầy đủ đều có đường đi Hamilton. CHƯƠNG 2 : BÀI TOÁN NGƯỜI DU LỊCH 2.1. PHÁT BIỂU BÀI TOÁN Một người du lịch muốn đi tham quan n thành phố 1,2,…,n. Xuất phát từ một thành phố nào đó người du lịch đi qua tất cả các thành phố, mỗi thành phố chỉ qua đúng một lần, rồi quay về thành phố ban đầu. Hỏi nên đi theo trình tự nào để độ dài tổng cộng các đoạn đường đi qua là ngắn nhất (khoảng cách giữa hai thành phố có thể hiểu là cự ly thông thường hoặc thời gian cần đi hoặc chi phí của hành trình xem như cho trước). Trò chơi này được Hamilton nghĩ ra năm 1859. Ông biểu diễn các thành phố các đường đibằng đa diện đều 20 đỉnh Xét đồ thị đủ G = (V, E), với V={1, 2, , n}, có trọng số với trọng số c ij = c(i,j) có thể khác c ji = c(j,i). Như vậy, ta có thể xem G như là một đồ thị có hướng đầy đủ “mạnh” theo nghĩa với mọi i, j=1, 2, , n, i≠j, luôn có (i,j), (j,i)∈E. Bài toán trở thành tìm chu trình Hamilton có độ dài ngắn nhất trong G. 2.2. GIẢI QUYẾT BÀI TOÁN Hiện nay, phương pháp duy nhất được biết đến đảm bảo giải quyết tối ưu TSP trong mọi trường hợp là xét tất cả các hành trình có thể tìm ra hành trình nào có chi phí nhỏ nhất. Mỗi hành trình như thế là một hoán vị của 1, 2, 3, , n với n là số thành phố, do đó số hành trình là n!. Khi n lớn, số hành trình bùng nổ quá lớn ta không thể tìm ra lời giải cho bài toán. Nhiều phương pháp tối ưu khác nhau được dùng để giải quyết TSP ta sẽ tìm hiểu chúng trong các mục sau: 2.2.1. Một số phương pháp giải Xét bài toán người du lịch. Gọi C = {c ij : i,j = 1,2, ,n} là ma trận chi phí. Mỗi hành trình V = v(1)→v(2)→ →v(n-1)→v(n)→v(1) có thể viết dưới dạng v = (v(1),v(2)), (v(2),v(3)), , (v(n-1),v(n)), (v(n),v(1)). Trong đó mỗi thành phần (v(i-1),v(i)) gọi là một cạnh của hành trình. Đối với bài toán người du lịch, nếu áp dụng phương pháp tham ăn thì phương án tìm được là tốt, nhưng trong một số trường hợp chưa hẳn là phương án tối ưu. Đối với phương pháp quy hoạch động thì không hiệu quả do số lượng bài toán con tăng theo hàm mũ. Mặt khác, bài toán người du lịch có không gian các phương án Đề tài: Bài toán người du lịch 8 Nhóm thực hiện: Nhóm 5 thuyết đồ thị ứng dụng GVHD: PGS.TSKH Trần Quốc Chiến quá lớn. Do vậy, khi áp dụng thuật toán vét cạn không đảm bảo về thời gian cũng như kĩ thuật. Khi nghiên cứu đề tài này chúng tôi giới thiệu phương pháp đánh giá nhánh cận. Đây là phương pháp có thể hạn chế số phương án phải duyệt của bài toán. Trong quá trình duyệt ta luôn giữ lại 1 phương án là phương án mẫu, phương án mẫu là phương án có giá nhỏ nhất tại thời điểm đó. Phương pháp đánh giá nhánh cận là phương pháp tính giá của phương án ngay trong quá trình xây dựng các thành phần của phương án, có nghĩa là ta sẽ tính xem việc xây dựng phương án theo hướng đó có thể có thể tốt hơn phương án mẫu hay không. Nếu không tốt hơn ta lựa chọn hướng khác. Bằng cách này ta đã hạn chế được nhiều phương án mà chắc rằng trong đó không chứa phương án tối ưu. Một yêu cầu đặt ra là tính toán đặt nhánh cận như thế nào, để có thể hạn chế tối đa các phương án phải duyệt. 2.2.2.Phương pháp nhánh cận 2.2.2.1.Phương pháp Giả sử trong một tập hữu hạn các phương án của bài toán, ta phải chọn ra một phương án tối ưu theo một tiêu chuẩn nào đó (Thí dụ làm cho hàm mục tiêu đạt giá trị nhỏ nhất). Ta sẽ tìm cách phân chia tập phương án đang xét thành 2 tập con không giao nhau. Một tập chứa cạnh (i,j) tập không chứa cạnh này. Ta gọi việc đó là phân nhánh, mỗi tập con nói trên gọi là nhánh. Việc phân nhánh được minh họa bởi cây tìm kiếm: Với mỗi tập con này, ta sẽ tính cận dưới (chặn dưới đủ tốt) của các giá trị hàm mục tiêu ứng với các phương án trong đó. Mang so sánh hai cận dưới vừa tính được, việc tìm kiếm sẽ tìm trên tập con có cận dưới nhỏ hơn, tiếp tục phân chia tập con đó thành hai tập con khác không giao nhau, lại tính các cận dưới tương ứng Lặp lại quá trình này thì sau một số hữu hạn bước, cuối cùng sẽ được một phương án tốt, nói chung là tối ưu, tức là phương án của bài toán người du lịch. Sau đó ta chỉ cần xét những tập con có cận dưới nhỏ hơn giá trị hàm mục tiêu tìm được. Việc tính cận dưới dựa vào thủ tục rút gọn. 2.2.2.2. Cơ sở luận của phép toán Đề tài: Bài toán người du lịch 9 Nhóm thực hiện: Nhóm 5 Tập tất cả hành trình Các hành trình qua (i,j) Các hành trình không qua (i,j) thuyết đồ thị ứng dụng GVHD: PGS.TSKH Trần Quốc Chiến Nếu không xác định thành phố xuất phát thì có n! hành trình, mỗi hành trình ứng với một hoán vị nào đó của tập {1,2,3, , n}. Còn nếu cho trước thành phố xuất phát thì có tất cả là (n-1)! hành trình. Giả sử v = (v(1),v(2), ,v(n),v(1)) (v là một hoán vị) là một hành trình qua các thành phố v(1),v(2), ,v(n) theo thứ tự đó rồi quay về v(1) thì hàm mục tiêu f(v) = C v(1)v(2) + C v(n-1)v(n) + C v(n)v(1) = ∑ ∈vji ij C ),( sẽ biểu thị tổng độ dài đã đi qua theo hành trình v, trong đó (i,j) ký hiệu một chặng đường của hành trình, tức là hai thành phố kề nhau theo hành trình v. 2.2.2.3. Ma trận rút gọn Rõ ràng tổng chi phí của một hành trình sẽ chứa đúng một phần tử trên mỗi dòng mỗi cột của ma trận chi phí C = (c ij ). Do đó nếu ta trừ bớt mỗi phần tử của một dòng (hay một cột) đi cùng một giá trị thì chi phí của tất cả hành trình sẽ giảm đi một lượng, vì thế hành trình tối ưu sẽ không thay đổi. Vì vậy nếu tiến hành trừ bớt các phần tử của mỗi dòng mỗi cột đi một hằng số sao cho thu được ma trận không âm mỗi cột cũng như mỗi dòng chứa ít nhất một số 0, thì tổng các hằng số trừ đi đó sẽ cho ta cận dưới của mọi hành trình. Thủ tục trừ bớt này gọi là thủ tục rút gọn, các hằng số trừ bớt ở mỗi dòng (cột) gọi là hằng số rút gọn dòng (cột), ma trận thu được gọi là ma trận rút gọn.  Thủ tục rút gọn: Đầu vào: Ma trận chi phí C=(c ij ) Đầu ra: Ma trận rút gọn tổng các hằng số rút gọn Sum. Thuật toán: (i) Khởi tạo: Sum:=0; (ii) Rút gọn dòng: Với mỗi dòng r từ 1 đến n của ma trận C thực hiện: - Tìm phần tử c rj = α nhỏ nhất trên dòng. - Trừ tất cả các phần tử trên dòng đi một lượng α . - Cộng dồn: Sum:=Sum+ α (iii) Rút gọn cột: Với mỗi cột c từ 1 đến n của ma trận C thực hiện: - Tìm phần tử c ie = α nhỏ nhất trên cột. - Trừ tất cả các phần tử trên cột đi một lượng α . - Cộng dồn: Sum:= Sum+ α . Ví dụ: Cho ma trận chi phí của bài toán người du lịch với n = 6 như sau 1 2 3 4 5 6 α 1 3 2 4 3 16 4 7 Đề tài: Bài toán người du lịch 10 Nhóm thực hiện: Nhóm 5 ∞ 3 93 13 33 9 4 ∞ 77 42 21 16 45 17 ∞ 36 16 28 39 90 80 ∞ 56 7 28 46 88 33 ∞ 25 3 88 18 46 92 ∞ [...]... Bài toán người du lịch 28 5 Nhóm thực hiện: Nhóm thuyết đồ thị ứng dụng GVHD: PGS.TSKH Trần Quốc Chiến KẾT LUẬN 1 Qua đề tài này nhóm chúng tôi hiểu một cách tương đối đầy đủ về những kiến thức cơ bản nhất của thuyết đồ thị, đường đi, chu trình Hamilton, tìm hiểu Bài toán người du lịch, đặc biệt là thuật toán nhánh cận để giải quyết bài toán này 2 Đã tìm được hành trình thỏa mãn bài toán người. .. tài: Bài toán người du lịch 19 5 Nhóm thực hiện: Nhóm Lý thuyết đồ thị ứng dụng GVHD: PGS.TSKH Trần Quốc Chiến 2.3.1 Đầu vào Đầu vào là ma trận chi phí kích thước n Ví dụ: Đầu vào là ma trận chi phí với số đỉnh là n = 6 như sau 6 999 3 93 13 33 9 4 999 77 42 21 16 45 17 999 36 16 28 39 90 80 999 56 7 28 46 88 33 999 25 3 88 18 46 92 999 2.3.2 Đầu ra Minh họa bằng đồ họa 1 Hành trình tối ưu cho bài toán. .. tận tụy của Thầy PGS.TSKH.Trần Quốc Chiến, cũng như sự động viên, khích lệ của tập thể lớp để nhóm em hoàn thành tốt đề tài này Đề tài: Bài toán người du lịch 29 5 Nhóm thực hiện: Nhóm Lý thuyết đồ thị ứng dụng GVHD: PGS.TSKH Trần Quốc Chiến Đề tài: Bài toán người du lịch 30 5 Nhóm thực hiện: Nhóm ... Outtextxy(25,K+40,'< Nhan Enter De Thay Duong Di >'); End; {********************************} Procedure Babtsp( N,Inf :Integer; Var C :Arrnn; Var Route :Arrn; Var Mincost:Integer); Var Backptr,Best,Col,Fwdptr,Row:Arrn; Đề tài: Bài toán người du lịch 21 5 Nhóm thực hiện: Nhóm Lý thuyết đồ thị ứng dụng I,Index GVHD: PGS.TSKH Trần Quốc Chiến :Integer; Procedure Explore(Edges,Cost:Integer;Var Row,Col:Arrn);... C[Row[I],Col[J]]:=C[Row[I],Col[J]]-Temp; Sum:=Sum+Temp End; Colred[J]:=Temp Đề tài: Bài toán người du lịch 22 5 Nhóm thực hiện: Nhóm Lý thuyết đồ thị ứng dụng GVHD: PGS.TSKH Trần Quốc Chiến End; { For J } Reduce:=Sum End; { Reduce } {*****************************************************} {Thu Tuc Phan Nhanh} Procedure Bestedge(Var R,S,Most:Integer); Var I,J,K,Mincolelt,Minrowelt,Zeroes:Integer; Begin... 6 1 ∞ 0 2 30 6 2 0 ∞ 30 17 12 ∞ 3 29 1 12 0 ∞ 17 ∞ 4 0 51 ∞ 0 3 21 0 Đề tài: Bài toán người du lịch 14 5 Nhóm thực hiện: Nhóm Lý thuyết đồ thị ứng dụng GVHD: PGS.TSKH Trần Quốc Chiến 5 Với tổng hằng số rút gọn α = 32 cận dưới β = β + α =81+32=113  Nhánh P11: - Loại hàng 4 cột 6 ta sẽ có ma trận chi phí cấp 4 tương ứng: 1 2 4 5 1 ∞ 0 2 30 2 0 ∞ 30 17 3 29 1 12 0 5 3 21 0 ∞ - Cấm tạo chu trình... mãn bài toán người du lịch bằng thuật toán nhánh cận 3 Cài đặt thành công chương trình chạy bằng ngôn ngữ Pascal minh họa đường đi bằng đồ họa 4 Tuy nhiên chương trình cài đặt chỉ ghi ra một hành trình tối ưu, thực tế có thể có nhiều hơn một hành trình tối ưu cho người du lịch 5 Hướng nghiên cứu tiếp theo là sẽ tìm lời giải cho bài toán với số đỉnh lớn hơn để giải bài toán người du lịch Trong đề tài... ma trận trọng số ban đầu cũng là phương án tối ưu của bài toán xét trên ma trận rút gọn Đề tài: Bài toán người du lịch 11 5 Nhóm thực hiện: Nhóm thuyết đồ thị ứng dụng GVHD: PGS.TSKH Trần Quốc Chiến 2.2.2.5 Thủ tục phân nhánh Giả sử ta chọn cạnh phân nhánh (r,s) Như vậy các hành trình sẽ được chia làm hai tập: p1 chứa các hành trình qua (r,s) p2 chứa các hành trình không qua (r,s) + Nhánh tập... là (6,3) (4,6), nên ta không phải cấm các cạnh khác Ta có ma trận chi phí Đề tài: Bài toán người du lịch 15 5 Nhóm thực hiện: Nhóm thuyết đồ thị ứng dụng 2 1 ∞ 4 2 3 1 ∞ GVHD: PGS.TSKH Trần Quốc Chiến 5 30 0 21 0 ∞ α 1 Ma trận chi phí được rút gọn như sau: 2 4 5 ∞ 1 0 28 5 3 0 ∞ 0 20 0 ∞ Cận dưới β = β + α = 81+3 = 84 Tương tự ta tiếp tục thủ tục chọn cạnh phân nhánh, phân nhánh rút gọn... ma trận này ta được ma trận rút gọn 2 5 3 ∞ 0 5 0 ∞ cận dưới β = β + α =84+20=104 2.2.2.7 Chọn 2 cạnh cuối cùng Đề tài: Bài toán người du lịch 16 5 Nhóm thực hiện: Nhóm thuyết đồ thị ứng dụng GVHD: PGS.TSKH Trần Quốc Chiến Mỗi hành trình có n cạnh Sau khi đã chọn n-2 cạnh, ta phải chọn nốt 2 cạnh còn lại Lúc này ma trận rút gọn có bậc 2 là một trong hai dạng sau: (i) (ii) u v u v ∞ p 0 . số lượng bài toán con tăng theo hàm mũ. Mặt khác, bài toán người du lịch có không gian các phương án Đề tài: Bài toán người du lịch 8 Nhóm thực hiện: Nhóm 5 Lý thuyết đồ thị và ứng dụng GVHD:. Lý thuyết đồ thị và ứng dụng . Đề tài gồm 2 chương xoay quanh nguyên lý bù trừ. Chương 1 nêu đại cương về cơ sở lý thuyết của lý thuyết đồ thị, chương 2 nghiên cứu sâu về bài toán người du. có duy nhất một cạnh. 1.2. BIỂU DIỄN ĐỒ THỊ 1.2.1. Ma trận kề 1.2.1.1. Đồ thị vô hướng  Định nghĩa 1.2.1. Đề tài: Bài toán người du lịch 4 Nhóm thực hiện: Nhóm 5 Lý thuyết đồ thị và ứng dụng

Ngày đăng: 12/05/2014, 11:48

Từ khóa liên quan

Mục lục

  • MỤC LỤC

  • MỞ ĐẦU

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

Tài liệu liên quan