Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 32 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
32
Dung lượng
614,5 KB
Nội dung
BÀI TOÁN NGƯỜI DU LỊCH Giáo viên: TS Nguyễn Văn Hiệu Email: nvhieuqt@dut.udn.vn Nội dung • • • • Phát biểu tốn Phân tích Ý tưởng Thuật giải tốn – Thủ tục rút gọn để tính cận – Thủ tục phân nhánh – Thủ tục chọn cận phân nhánh – Thủ tục chọn hai cạnh cuối Bài tốn Có n thành phố ký hiệu: T1, T2,…, Tn Cij chi phí từ thành phố Ti đến Tj Xuất phát từ thành phố qua tất thành phố thành phố lần, quay trở lại thành phố xuất phát • Hãy tìm hành trình (chu trình) với chi phí nhỏ Phân tích • Xét đồ thị có trọng: G = (V, E) Mỗi thành phố đỉnh đồ thị Mỗi đường thành phố cạnh nối đỉnh đồ thị Nhận xét: Đồ thị ứng dụng có hướng vơ hướng; Các cặp đinh khơng có đường gán trọng số ∞, Tạo nên chu trình ( đỉnh xuất phát trùng với đỉnh kết thúc) Phân tích • Xét đồ thị có trọng: G = (V, E) Mỗi thành phố đỉnh đồ thị Mỗi đường thành phố cạnh nối đỉnh đồ thị Đường tìm được: x1, x2, …, xn, x1 với xi đỉnh, (xi, xi+1) cạnh Bài toán người du lịch: f(x1…xn)=c[x1,x2]+…+c[xn, x1] Ý tưởng Thực trình phân nhánh Tập tất hành trình Tính giá trị cận tập Thủ tục tiếp tục Tập hành trình (i,j) Tập hành trình khơng chứa (i,j) lúc nhận hành trình đầy đủ Thuật giải Thủ tục rút gọn để tính cận Thủ tục chọn cạnh phân nhánh Thủ tục phân nhánh Thủ tục chọn hai cạnh cuối Thuật giải Thủ tục rút gọn để tính cận Cơ sở lý luận Hành trình người du lịch chứa phần tử dòng phần tử cột ma trận chi phí Nếu trừ bớt phần tử dịng ma trận chi phí số a , độ dài tất hành trình giảm a Cơ sở lý luận Nếu trừ bớt phần tử cột ma trận chi phí số b, độ dài tất hành trình giảm b Nhận xét Hành trình tối ưu không bị thay đổi Thuật giải Thủ tục rút gọn để tính cận Thủ tục Từ ma trận chi phí tiến hành bớt phần tử dòng cột số: Các phần tử ma trận không âm; Mỗi hàng chứa phần tử 0; Mỗi cột chứa phần tử 0; Khái niệm Thủ tục gọi thủ tục rút gọn; Ma trận thu gọi ma trận rút gọn; Hàng số trừ dòng cột gọi số rút gon; Thuật giải Thủ tục rút gọn để tính cận Nhận xét Ma trận rút gọn: Các phần tử ma trận không âm; Mỗi hàng chứa phần tử 0; Mỗi cột chứa phần tử 0; Thủ tục Input: ma trận chi phí C Output: ma trận rút gọn; tổng số rút gọn Thuật giải Thủ tục chọn cạnh phân nhánh Ý tưởng Chọn cạnh phân nhánh (r,s) cho cận tập phân nhánh không cạnh(r,s) tăng lớn Thủ tục Input: Ma trận rút gọn Output: Cạnh phân nhánh (r,s) Thuật giải Thủ tục chọn cạnh phân nhánh Thủ tục Input: Ma trận rút gọn Output: Cạnh phân nhánh (r,s) Thủ tục Khởi tạo: 𝛼 := −∞ Với cặp i, j với Cij = (i,j =1,…,n) tính Xác định: • minr = {Ci h :h ≠ j} (tính giá trị nhỏ hàng i) • mins = min{Ch j :h ≠ j} (tính giá trị nhỏ cột j) Nếu 𝜶 < minr + mins, • 𝜶 := minr + mins, • r = i, s = j; Thuật giải Thủ tục chọn cạnh phân nhánh Thủ tục Input: Ma trận rút gọn Output: Cạnh phân nhánh (r,s) Thủ tục r = 6, s = 29 32 0 83 21 85 75 58 58 48 10 38 20 43 30 17 49 89 12 12 0 𝛼 = 48 Thuật giải Thủ tục rút gọn để tính cận Thủ tục chọn cạnh phân nhánh Thủ tục phân nhánh Thủ tục chọn hai cạnh cuối Thuật giải Thủ tục phân nhánh Thủ tục Giả sử bước r = 6, s = P chọn cạnh (r,s) để phân (81)P1 (6,3) nhánh đặt: P2 P1 -hành trình qua (r,s) P2 không qua (r,s) Thuật giải Thủ tục phân nhánh a Thủ tục P1 a Thủ tục P1 Cận sum (giá trị từ thủ tục rút gọn) Giảm cấp ma trận: Rút gọn ma trận chi phí Và tính cận dưới: sum += tổng số rút gọn Loại hàng r, Loại cột s Ngăn cấm tạo hành trình con: Cấm (s, r) gán:Csr = ∞ Nếu (r,s) cạnh phân nhánh thứ hai trở phải xét cạnh chọn nối trước sau cạnh (r,s) thành dãy nối tiếp cạnh như: (i,j) …(r,s)…(k,h) cấm (h,j) tức Ch i = ∞ => Tiếp tục thực thủ tục phân nhánh theo nhánh Thuật giải Thủ tục phân nhánh a Thủ tục P1 29 32 0 83 21 85 75 58 58 48 10 38 20 43 30 17 49 89 12 0 Thuật giải Thủ tục phân nhánh Thủ tục Giả sử bước chọn cạnh (r,s) để phân nhánh đặt: P1 hành trình qua (r,s) P2 khơng qua (r,s) b Thủ tục P2 Cận sum (giá trị từ thủ tục rút gọn) Cấm cạnh (r,s) Cr s = ∞ Thực thủ tục rút gọn ma trận chi phí Tính cận dưới: sum += tổng số rút gọn => Tiếp tục thực phân nhánh theo nhánh ... cận – Thủ tục phân nhánh – Thủ tục chọn cận phân nhánh – Thủ tục chọn hai cạnh cuối Bài toán Có n thành phố ký hiệu: T1, T2,…, Tn Cij chi phí từ thành phố Ti đến Tj Xuất phát từ thành phố... thành phố cạnh nối đỉnh đồ thị Đường tìm được: x1, x2, …, xn, x1 với xi đỉnh, (xi, xi+1) cạnh Bài toán người du lịch: f(x1…xn)=c[x1,x2]+…+c[xn, x1] Ý tưởng Thực trình phân nhánh Tập tất hành... Output: ma trận rút gọn; tổng số rút gọn a Rút gọn dòng 29 32 0 83 21 85 90 73 73 63 15 10 38 20 43 30 17 49 89 12 12 0 16 25 Sum = 58 Thuật giải Thủ tục rút gọn để tính cận Thủ