Bai toan du lich

4,265 views
4,105 views

Published on

Bai toan du lich giai bang quy hoach dong

Published in: Education, Sports
0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
4,265
On SlideShare
0
From Embeds
0
Number of Embeds
46
Actions
Shares
0
Downloads
175
Comments
0
Likes
4
Embeds 0
No embeds

No notes for slide

Bai toan du lich

  1. 1. Bài toán du lịch <ul><li>Một người đi từ thành phố 0 đến thành phố n và có thể đi qua n-1 thành phố khác 1, 2,…n-1 theo lộ trình: </li></ul><ul><li>0  i 1  i 2  …  i k  n </li></ul><ul><li>(0 < i 1 < i 2 < … < i k < n) </li></ul><ul><li>c[i,j]: là giá vé đi từ thành phố i đến j </li></ul><ul><li>Tìm lộ trình từ thành phố 0  n sao cho tổng chi phí (giá vé) đạt cực tiểu. </li></ul>
  2. 2. <ul><li>Ví dụ: Tìm lộ trình đi từ thành phố đến </li></ul>Bài toán du lịch Lộ trình: 0 4 Chi phí: 6 0 1 2 3 4 5 3 4 1 2 8 0 2 3 4 0 1 3 2 4 5 3 4 1 2 8 0 4 8
  3. 3. Bài toán du lịch <ul><li>Phân tích bài toán: </li></ul><ul><li>Gọi p(r,s) là bài toán du lịch, với: </li></ul><ul><li>r  N là thành phố xuất phát </li></ul><ul><li>s  N là thành phố cần đến </li></ul><ul><li>(Bài toán ban đầu là P(0,n) </li></ul><ul><li>Các giá trị cần tìm : </li></ul><ul><li>l[r,s]: chi phí nhỏ nhất để đi từ r  s của bài toán p(r,s) </li></ul><ul><li>u[r,s]: đỉnh kế cuối trên đường đi từ r  s của bài toán p(r,s) </li></ul>
  4. 4. Bài toán du lịch p(r,s) <ul><li>Giải pháp đệ quy: </li></ul><ul><ul><li>+ Khi r = s: </li></ul></ul><ul><ul><ul><li>l[r,s] = 0 </li></ul></ul></ul><ul><ul><ul><li>u[r,s] = -1 (vì không có đỉnh kế cuối) </li></ul></ul></ul><ul><ul><li>+ Khi r < s: </li></ul></ul><ul><ul><ul><li>l[r,s] = min (l[r,k] + c[k,s]) </li></ul></ul></ul><ul><ul><ul><li>(r  k<s) </li></ul></ul></ul><ul><ul><ul><li> = l[r,k’] + c[k’,s] </li></ul></ul></ul><ul><ul><ul><li>u[r,s] = k’ </li></ul></ul></ul>
  5. 5. Lập bảng (Bài toán du lịch) <ul><li>Procedure lapbang; </li></ul><ul><li>Begin </li></ul><ul><li>r:=0; {thành phố xuất phát} </li></ul><ul><ul><li>For s:=0 to n do </li></ul></ul><ul><ul><li> If (r = s) then </li></ul></ul><ul><ul><li>tính l[r,r] và u[r,r] </li></ul></ul><ul><ul><li>Else {r < s} </li></ul></ul><ul><ul><li>tính l[r,s] và u[r,s] </li></ul></ul><ul><li>End; </li></ul><ul><li>* Độ phức tạp tính toán: O(n 2 ) </li></ul>
  6. 6. <ul><li>Procedure lapbang; </li></ul><ul><li>Begin r:=0; {thành phố xuất phát} </li></ul><ul><ul><li>For s:=0 to n do </li></ul></ul><ul><ul><li>If (r = s) then </li></ul></ul><ul><ul><li> begin </li></ul></ul><ul><ul><li>l[r,r] = 0; u[r,r] = -1; </li></ul></ul><ul><ul><li> end </li></ul></ul><ul><ul><li>Else {r < s} </li></ul></ul><ul><li> begin </li></ul><ul><li> dinhke:=0; min:= giatri_max; </li></ul><ul><li> for k:=r to s-1 do </li></ul><ul><li>if (tồn tại cạnh (k,s)) then </li></ul><ul><li> if (l[r,k] + c[k,s]) < min then </li></ul><ul><li> begin </li></ul><ul><li> dinhke:= k; min:= l[r,k] + c[k,s]; </li></ul><ul><li> end; </li></ul><ul><li> l[r,s]:= min; u[r,s]:= dinhke; </li></ul><ul><li> end;End; </li></ul>
  7. 7. Tổng hợp kết quả (Bài toán du lịch) Procedure tonghop; Begin r: = 0; s:= n; x[1]:=s; {lưu duong di} i:=2; while (r <> s) and (l[r,s]< giatri_max) do begin x[i]:= u[r,s]; s:= x[i]; i:= i + 1; end; If (r<>s) then ‘khong co dd’ else inkq(x); End; * Lập bảng : * Đường đi: (  : giatri_max) 0 1 2 3 4 5 3 4 1 2 8  0 4 3 2 1 0 s r 0 -1 0 2 0 3 2 6 3 0 2 3 4 X
  8. 8. Nhóm 5 : 1. Hoàng Chí Dũng 2. Phạm Hồng Ngự 3. Ngô Quỳnh Như 4. Lê Duy Sử

×