1. Trang chủ
  2. » Công Nghệ Thông Tin

Cấu trúc dữ liệu - Phần 5 (tt)

19 5 0

Đ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

Nội dung

Tài liệu tham khảo bài giảng môn Cấu trúc dữ liệu - Phần 5 Giải thuật quay lui ( tiếp theo )

Ph ng pháp nhánh c n (brand and bound) GVGD: Tr ng Ph cH i Ph ng pháp nhánh c n  K thu t quay lui t t t c kh n ng theo mơ hình phân c p đ tìm c u hình Ph S    ng pháp nhánh c n d ng quay lui đ tìm c u hình t i u ánh giá t t c c u hình đ tìm c u hình t i d n đ n s bùng n t h p u: u N u vi c ch n thành ph n xi không d n đ n c u hình t i u s gây lãng phí tài ngun đ tìm thành ph n ti p theo xi+1, xi+2, C n t n d ng thông tin bi t đ ch c ch n không th t i u s m lo i b c u hình Ph ng pháp nhánh c n  K thu t nhánh c n (g i t t nhánh c n) m t d ng c i ti n c a k thu t quay lui áp d ng cho toán t i u    ánh giá l i giá tr t i m i l n quay lui u c c b (c n) c a nhánh sau S d ng c n đ lo i b nh ng nhánh d ki m nh m gi m chi phí: t a nhánh th a c a tìm ánh giá c n v n đ khó kh n nh t vi c áp d ng ph ng pháp nhánh c n Ph ng pháp nhánh c n Ýt   ng Kh i t o m t c u hình BEST cho tốn: kh i t o c n Tính chi phí c a c u hình trình xây d ng  N u t t h n BEST: c p nh t c u hình t i  Ng c l i quay lui đ tìm ph ng án khác u ti p t c Ph ng pháp nhánh c n  Mơ hình t ng qt c a k thu t nhánh c n đ ti n t mơ hình đ quy nh sau Try(i) For (j t If (ch Ch If cc i p kh n ng c a X[i]) p nh n j) Then n kh n ng j cho X[i] (X[i] cu i c u hình) Then Else If (v n t t h n BEST) Then Try(i + 1) Cu i If Cu i If Cu i for Cu i Try Ph ng pháp nhánh c n  Khi gi i thu t nhánh c n đ b c sau c th c hi n theo NhanhVaCan() BEST = +; //N u bi t X’ ph ng án t i //BEST = f(X’); Try(0); If (BEST < +) Then Else Cu i If Cu i NhanhVaCan u hi n t i Ph ng pháp nhánh c n  Bài toán ng Problem)     i du l ch (TSP - Travelling Salesman M t b n đ g m N thành ph đ c đánh s t đ n N-1 M t du khách xu t phát t i thành ph mu n tham quan t t c thành ph , m i n i đ n l n r i tr v thành ph xu t phát Bi t r ng gi a thành ph có th l u thông tr c ti p s t n m t chi phí nh t đ nh Yêu c u xác đ nh hành trình du l ch v i chi phí nh nh t Ph T  ng pháp nhánh c n ch c d S d ng m ng chi u g m N dịng, N c t đ phí l i gi a thành ph : ma tr n chi phí    li u C[i][j] = v: cho bi t vi c t thành ph j t n chi phí v thành ph C[i][j] = +: cho bi t khơng có đ thành ph i đ n thành ph j bi u di n chi i đ n tr c ti p ng tr c ti p t S d ng m ng chi u X[0], X[1], …, X[N] đ l u tr m t nghi m toán (th t thành ph th m hành trình) Ph ng pháp nhánh c n  Ví d đ th bi u di n ma tr n chi phí t nh sau ng 0 1 2 4 1 10 ng Ph ng pháp nhánh c n  Nh n xét    x0 = thành ph xu t phát Hành trình c n (x0 = 0, x1, x2, , xN-1, xN = 0) tìm có d ng M t hành trình (x1, x2, , xN-1) m t hoán v c a thành ph {1, 2, …, N-1} 11 Ph ng pháp nhánh c n  Cây tìm ki m TSP theo k thu t quay lui 1 4 3 2 2 2 1 1 0 0 0 11 11 12 Ph ng pháp nhánh c n  Duy t quay lui     Ch n x1 m t TP có th đ n tr c ti p t x0 Ch n x2 m t TP ch a tham quan có th đ n tr c ti p t x3 … Ch n xi m t TP ch a tham quan có th tr c ti p t xi-1 (1 ≤ i ≤ N-1) 13 đ n Ph ng pháp nhánh c n  Nhánh c n  Kh i t o c u hình BEST v i chi phí MAX = +∞  Ki m tra chi phí tính cho t i đ n xi < chi phí c a BEST    N u ch n xi thành ph th m ti p theo  Ng c l i th thành ph khác (c t nhánh) Khi đ n xN, ki m tra n u có đ ng tr c ti p v x1 mà t ng chi phí < chi phí c a BEST c p nh t l i BEST Sau quay lui mà chi phí c a BEST v n MAX tốn khơng có l i gi i, ng c l i BEST hành trình t t nh t 14 Ph ng pháp nhánh c n  Cây tìm ki m TSP theo k thu t nhánh c n 1 4 3 2 2 2 1 1 0 0 0 11 11 15 Ph B ng pháp nhánh c n c 1: kh i t o cho hành trình void Init() { for (int i = 0; i < N; i++) Free[i] = true; X[0] = 0; //xu t phát t i thành ph Free[0] = false; //đã th m thành ph Cost = 0; //chi phí xu t phát Best = +; //kh i t o chi phí t t nh t } 16 Ph B ng pháp nhánh c n c 2: th t c Try tìm thành ph th m ti p theo Try(i) For (thành ph j  {2, , n}) If (ch a tham quan thành ph j) Then Tham quan thành ph j, tính chi phí ánh đ u th m thành ph j If (i = n) Then C p nh t hành trình Else If (chi phí hi n t i < BEST) Then Try(i + 1); Cu i If B đánh đ u th m thành ph Cu i If Cu i For Cu i Try 17 j Ph B ng pháp nhánh c n c 2: tìm đ ng ti p theo cho hành trình void Try(int i) { for (int j = 1; j < N; j++) { if (Free[j]) { X[i] = j; Free[j] = false; Cost = Cost + C[X[i-1]][X[i]]; if (i == N - 1) UpDate(); else if (Cost < Best) Try(X, N, C, i + 1); Cost = Cost - C[X[i-1]][X[i]]; Free[j] = true; } } } 18 Ph ng pháp nhánh c n  C p nh t hành trình t i u void Update() { //n u chi phí tr v < chi phí t i if (Cost + C[X[N-1]][X[0]] < Best) { //c p nh t l i chi phí t i u Best = Cost + C[X[N-1]][X[0]]; Print(X, N); } } 19 u ... X[i] = j; Free[j] = false; Cost = Cost + C[X[i-1]][X[i]]; if (i == N - 1) UpDate(); else if (Cost < Best) Try(X, N, C, i + 1); Cost = Cost - C[X[i-1]][X[i]]; Free[j] = true; } } } 18 Ph ng pháp... thành ph xu t phát Hành trình c n (x0 = 0, x1, x2, , xN-1, xN = 0) tìm có d ng M t hành trình (x1, x2, , xN-1) m t hoán v c a thành ph {1, 2, …, N-1} 11 Ph ng pháp nhánh c n  Cây tìm ki m TSP theo... a tham quan có th đ n tr c ti p t x3 … Ch n xi m t TP ch a tham quan có th tr c ti p t xi-1 (1 ≤ i ≤ N-1) 13 đ n Ph ng pháp nhánh c n  Nhánh c n  Kh i t o c u hình BEST v i chi phí MAX = +∞

Ngày đăng: 09/05/2021, 18:25