Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 27 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
27
Dung lượng
1,84 MB
Nội dung
Collected by The_Wall (11/10/2005) M c tiêu Ki n th c c b n c n có h c ch ng Tài li u tham kh o có liên quan n ch ng N i dung: III.1 - Gi i thu t chia tr III.2 - Quy ho ch ng III.3 - K thu t "tham n" III.4 - K thu t quay lui III.5 - K thu t tìm ki m a ph ng V n nghiên c u c a trang k ti p Nói chung thi t k m t gi i thu t th ng d a vào m t s k thu t ó Ch ng s trình bày m t s k thu t quan tr ng thi t k gi i thu t nh : Chia tr (Divide-andConquer), quy ho ch ng (dynamic programming), k thu t tham n (greedy techniques), quay lui (backtracking) tìm ki m a ph ng (local search) Các k thu t c áp d ng vào m t l p ng toán, ó có nh ng toán n i ti ng nh tốn tìm ng i ng n nh t c a ng i giao hàng, toán ph t i ti u III.1- GI I THU T CHIA TR III.1.1- N i dung k thu t III.1.2- Nhìn nh n l i gi i thu t MergeSort QuickSort III.1.3- Bài toán nhân s nguyên l n III.1.4- X p l ch thi u th thao III.1.5- Bài toán cân b ng III.1.1- N i dung k thu t Có th nói r ng k thu t quan tr ng nh t, c áp d ng r ng rãi nh t thi t k gi i thu t có hi u qu k thu t "chia tr " (divide and conquer) N i dung c a là: gi i m t tốn kích th c n, ta chia tốn ã cho thành m t s tốn có kích th óc nh h n Gi i tốn r i t ng h p k t qu l i c l i gi i c a toán ban u i v i toán con, l i s d ng k thu t chia tr có c tốn kích th c nh h n n a Quá trình d n n nh ng toán mà l i gi i chúng hi n nhiên ho c dàng th c hi n, ta g i toán tốn c s Tóm l i k thu t chia tr bao g m hai trình: Phân tích tốn ã cho thành tốn c s ng h p k t qu t tốn c s có l i gi i c a toán ban u Tuy nhiên i v i t s tốn, q trình phân tích ã ch a ng vi c t ng h p k t qu ó n u ã gi i xong tốn c s tốn ban u c ng ã c gi i quy t Ng c l i có nh ng tốn mà q trình phân tích n gi n nh ng vi c t ng h p k t qu l i r t khó kh n Trong ph n ti p sau ta s trình bày m t s ví d th y rõ h n u thu t s cho m t gi i thu t quy mà vi c xác ph i gi i m t ph ng trình quy nh ch ng I ã trình bày Giáo trình mơn Phân tích Gi i Thu t – I nh ph c t p c a s C C N TH Trang 36 Collected by The_Wall (11/10/2005) III.1.2 Nhìn nh n l i gi i thu t MergeSort QuickSort Hai gi i thu t s p x p ã c trình bày ch ng tr c (MergeSort ch QuickSort ch ng II) th c ch t ã s d ng k thu t chia tr ng I i MergeSort, s p m t danh sách L g m n ph n t , chia L thành hai danh sách L1 L2 m i danh sách có n/2 ph n t S p x p L1, L2 tr n hai danh sách ã c s p c m t danh sách có th t Q trình phân tích ây q trình chia m t danh sách, q trình s d n n tốn s p x p m t danh sách có d b ng 1, ây tốn c s vi c s p p danh sách “không làm c ” Vi c t ng h p k t qu ây “tr ün danh sách ã cs p c m t danh sách có th t ” i QuickSort, s p x p m t danh sách g m n ph n t , ta tìm m t giá tr ch t phân ho ch danh sách ã cho thành hai danh sách “bên trái” “bên ph i “ S p x p “bên trái” “bên ph i” ta c danh sách có th t Q trình phân chia s d n n toán s p x p m t danh sách ch m m t ph n t ho c g m nhi u ph n t có khố b ng nhau, ó tốn c s , b n thân chúng ã có th t r i ây c ng khơng có vi c t ng h p k t qu m t cách t ng minh, vi c ó ã c th c hi n q trình phân ho ch III.1.3- Bài tốn nhân s nguyên l n Xét toán nhân hai s nguyên n ch s X Y Theo gi i thu t nhân hai s thơng th ng n n phép nhân n phép c ng nên t n O(n2) th i gian Áp d ng k thu t "chia tr " vào phép nhân s nguyên, ta chia m i s nguyên X Y thành s nguyên có n/2 ch s n gi n ta gi s n lu th a c a X = A10n/2 + B Y = C10n/2 + D Trong ó A, B, C, D s nguyên có n/2 ch s Ch ng h n v i X = 1234 A = 12 B = 34 b i X = 12 *102 + 34 Tích c a X Y có th c vi t thành: XY = AC10n+(AD + BC)10n/2 + BD (III.1) i m i s có n/2 ch s , l i ti p t c phân tích theo cách trên, q trình phân tích s n n toán c s nhân s nguyên ch g m m t ch s mà ta d dàng th c hi n Vi c t ng p k t qu th c hi n phép tốn theo cơng th c (III.1) Theo (III.1) ph i th c hi n phép nhân s nguyên n/2 ch s (AC, AD, BC, BD), sau ó t ng h p k t qu b ng phép c ng s nguyên n ch s phép nhân v i 10n 10n/2 Các phép c ng s nguyên n ch s d nhiên ch c n O(n) Phép nhân v i 10n có th th c hi n m t cách n gi n b ng cách thêm vào n ch s ó c ng ch l y O(n) G i T(n) th i gian nhân hai s nguyên, m i s có n ch s t (III.1) ta có: T(1) = T(n) = 4T(n/2) + cn (III.2) Giáo trình mơn Phân tích Gi i Thu t – I C C N TH Trang 37 Collected by The_Wall (11/10/2005) Gi i (III.1) ta c T(n) = O(n2) Nh v y ch ng c i ti n c chút so v i gi i thu t nhân hai s bình th ng c i thi n tình hình, có th vi t l i (III.1) thành d ng: XY = AC10n + [(A-B)(D-C) + AC + BD] 10n/2+ BD (III.3) Cơng th c (III.3) ch ịi h i phép nhân c a s nguyên n/2 ch s là: AC, BD (AB)(D-C), phép c ng tr phép nhân v i 10n Các phép toán u l y O(n) th i gian T (III.3) ta có ph ng trình quy: T(1) = T(n) = 3T(n/2) + cn ã Gi i ph ng trình quy ta c c i thi n r t nhi u Gi i thu t thô c nghi m T(n) = O(nlog3) = O(n1.59) Gi i thu t rõ ràng nhân hai s nguyên (d ng ho c âm) n ch s là: function Mult(x,y:integer; n:integer) : integer; var m1,m2,m3,A,B,C,D: integer; s:integer;{L u tr d u c a tích xy} begin s := sign(x)*sign(y); {Hàm sign có giá tr n u x d ng –1 n u x âm} x := ABS(x);{L y tr t i c a x} y := ABS(y); if n = then mult:=x*y*s else begin A := left( x, n DIV 2); B := right(x, n DIV 2); C := left(y, n DIV 2); D := right(y, n DIV 2); m1 := mult(A,C, n DIV 2); m2 := mult(A-B,D-C, n DIV 2); m3 := mult(B,D, n DIV 2); mult := (s * (m1 * 10n + (m1+m2+m3)* 10 n DIV + m3)); end end; III.1.4- X p l ch thi u th thao K thu t chia tr không nh ng ch có ng d ng thi t k gi i thu t mà nhi u nh v c khác c a cu c s ng Ch ng h n xét vi c x p l ch thi u th thao theo th th c u vòng tròn t cho n c u th M i c u th ph i u v i c u th khác, m i c u th ch u nhi u nh t m t tr n m i ngày Yêu c u x p m t l ch thi u cho s ngày thi u nh t Ta d dàng th y r ng ng s tr n u c a toàn gi i n(n-1)/2 Nh v y n u n m t s ch n ta có th s p n/2 c p thi u m t ngày ó c n nh t n-1 ngày Ng c l i n u n m t s l n-1 m t s ch n nên ta có th s p (n-1)/2 c p thi u m t ngày ó ta c n n ngày Gi s n = 2k n m t s ch n Giáo trình mơn Phân tích Gi i Thu t – I C C N TH Trang 38 Collected by The_Wall (11/10/2005) ó c n t i thi u n-1 ngày L ch thi u m t b ng n dòng n-1 c t Các dòng c ánh s t n n c t c ánh s t n n-1, ó dịng i bi u di n cho c u th i, c t j bi u di n cho ngày thi u j ô(i,j) ghi c u th ph i thi u v i c u th i ngày j Chi n l c chia tr xây d ng l ch thi u nh sau: s p l ch cho n c u th , ta s s p l ch cho n/2 c u th , s p l ch cho n/2 c u th , ta s s p l ch cho n/4 c u th Quá trình s d n n toán c s s p l ch thi u cho c u th Hai c u th s thi u m t tr n m t ngày, l ch thi u cho h th t d s p Khó kh n ch t l ch thi u cho hai c u th , ta t ng h p l i c l ch thi u c a c u th , c u th , Xu t phát t l ch thi u cho hai c u th ta có th xây d ng l ch thi u cho c u th nh sau: ch thi u cho c u th s m t b ng dòng, c t L ch thi u cho c u th ngày th l ch thi u c a hai c u th (bài toán c s ) Nh v y ta có Ơ(1,1) = “2” Ơ(2,1) = “1” ng t ta có l ch thi u cho c u th ngày th Ngh a Ô(3,1) =”4” Ô(4,1) = “3” (Ta c th th y r ng Ô(3,1) = Ô(1,1) + Ô(4,1) = Ô(2,1) + ) Bây gi hoàn thành l ch thi u cho c u th , ta l y góc bên trái c a b ng l p vào cho góc d i bên ph i l y góc d i bên trái l p cho góc bên ph i L ch thi u cho c u th m t b ng g m dịng, c t Góc bên trái l ch thi u ngày u c a c u th t n Các ô c a góc d i bên trái s b ng t ng ng c a góc bên trái c ng v i ây l ch thi u cho c u th 5, 6, ngày u Bây gi hoàn thành vi c s p l ch b ng cách l p y góc d i bên ph i b i góc bên trái góc bên ph i b i góc d i bên trái III.1.5- Bài toán cân b ng (Balancing Subproblems) i v i k thu t chia tr , nói chung s t t h n n u ta chia toán c n gi i thành toán có kích th c g n b ng Ví d , s p x p tr n (MergeSort) phân chia tốn thành hai tốn có kích th c n/2 ó th i gian c a ch O(nlogn) Ng c l i tr ng h p u nh t c a QuickSort, m ng b phân ho ch l ch th i gian th c hi n O(n2) Nguyên t c chung tìm cách chia tốn thành tốn có kích th hi u su t s cao h n III.2- QUY HO CH c x p x b ng NG Giáo trình mơn Phân tích Gi i Thu t – I C C N TH Trang 39 Collected by The_Wall (11/10/2005) III.2.1- N i dung k thu t III.2.2- Bài tốn tính s t h p III.2.1- N i dung k thu t Nh III.1 ã nói, k thu t chia tr th ng d n t i m t gi i thu t quy Trong gi i thu t ó, có th có m t s gi i thu t th i gian m Tuy nhiên, th ng ch có m t s a th c tốn con, u ó có ngh a chúïng ta ã ph i gi i m t s tốn ó nhi u l n tránh vi c gi i d th a m t s toán con, t o m t b ng l u t t c k t qu a toán c n ch c n tham kh o t i k t qu ã c l u b ng mà không c n ph i gi i l i tốn ó L p y b ng k t qu toán theo m t quy lu t ó nh n c k t qu c a toán ban u (c ng ã c l u m t ô ó c a b ng) c g i quy ho ch ng III.2.2- Bài tốn tính s t h p M t toán quen thu c v i tính s t h p ch p k c a n theo công th c: Ckn = n u k=0 ho c k = n Ckn = Ck-1n-1 + Ckn-1 n u < k < n Công th c ã g i ý cho m t gi i thu t quy nh sau: function Comb(n,k : integer) : Integer; begin if (k=0) or (k=n) then Comb := else Comb := Comb(n-1, k-1) + Comb(n-1,k); end; G i T(n) th i gian tính s t h p ch p k c a n, ta có ph ng trình quy: T(1) = C1 T(n) = 2T(n-1) + C2 Gi i ph ng trình ta c T(n) = O(2n), nh v y m t gi i thu t th i gian m , ch có m t a th c tốn u ó ch ng t r ng có nh ng tốn c gi i nhi u l n Ch ng h n tính Comb(4,2) ta ph i tính Comb(3,1) Comb(3,2) tính Comb(3,1) ta ph i tính Comb(2,0) Comb(2,1) tính Comb(3,2) ta ph i tính Comb(2,1) Comb(2,2) Nh v y tính Comb(4,2) ta ph i tính Comb(2,1) hai l n Hình 3-2 sau minh ho rõ u ó Giáo trình mơn Phân tích Gi i Thu t – I C C N TH Trang 40 Collected by The_Wall (11/10/2005) Áp d ng k thu t quy ho ch ng kh c ph c tình tr ng trên, ta xây d ng m t b ng g m n+1 dòng (t n n) n+1 c t (t n n) n giá tr cho O(i,j) theo quy t c sau: (Quy t c tam giác Pascal): O(0,0) = 1; O(i,0) =1; O(i,i) = v i < i ( n; O(i,j) = O(i-1,j-1) + O(i-1,j) v i < j < i £ n Ch ng h n v i n = ta có b ng bên O(n,k) Comb(n,k) ta có gi i thu t nh sau: function Comb(n, k : Integer) : Integer var C: array[0 n, n] of integer; i,j : integer; begin {1} C[0,0] := 1; {2} for i := to n begin {3} C[i,0] := 1; {4} C[i,i] := 1; {5} for j := to i-1 C[i,j] := C[i-1,j-1] + C[i-1,j]; end; {6} Comb := C[n,k]; end; Vòng l p {5} th c hi n i-1 l n, m i l n O(1) Vòng l p {2} có i ch y t T(n) th i gian th c hi n gi i thu t ta có: n n, nên n u g i III.3- K THU T "THAM N" III.3.1- Bài toán t i u t h p III.3.2- N i dung k thu t tham n III.3.3- Bài toán ng i c a ng i giao hàng III.3.4- Bài toán ba lơ Giáo trình mơn Phân tích Gi i Thu t – I C C N TH Trang 41 Collected by The_Wall (11/10/2005) III.3.1- Bài toán t i u t h p Là m t d ng c a tốn t i u, có d ng t ng quát nh sau: f(X) · Cho phi m hàm c g i hàm m c tiêu xác nh m t t p h u h n ph n t D Hàm · M i ph n t X D có d ng X= (x1, x2, xn) c g i m t ph · C n tìm m t ph ng án X D cho hàm f(X) i ph ng án t i u ng án t (max) Ph ng án X nh th c Ta có th tìm th y ph ng án t i u b ng ph ng pháp “vét c n” ngh a xét t t c ph ng án t p D (h u h n) xác inh ph ng án t t nh t M c dù t p h p D h u h n nh ng tìm ph ng án t i u cho m t tốn kích th c n b ng ph ng pháp “vét c n” ta có th c n m t th i gian m Các ph n ti p theo c a ch th i gian có th ch p nh n c ng s trình bày m t s k thu t gi i toán t i u t h p mà III.3.2- N i dung k thu t tham n K thu t tham n th ng c v n d ng gi i toán t i u t h p b ng cách xây d ng m t ph ng án X Ph ng án X c xây d ng b ng cách l a ch n t ng thành ph n xi c a X cho n hoàn ch nh ( n thành ph n) V i m i xi , ta s ch n xi t i u V i cách có th b c cu i ta khơng cịn ch n mà ph i ch p nh n m t giá tr cu i l i ta ch Áp d ng k thu t tham n s cho m t gi i thu t th i gian a th c, nhiên nói chung chúng t c m t ph ng án t t ch không ph i t i u Có r t nhi u tốn mà ta có th gi i b ng k thu t này, sau ây m t s ví d III.3.3- Bài toán ng i c a ng i giao hàng Chúng ta s xét m t tốn r t n i ti ng có tên tốn tìm ng i c a ng i giao hàng (TSP - Traveling Salesman Problem): Có m t ng i giao hàng c n i giao hàng t i n thành ph Xu t phát t m t thành ph ó, i qua thành ph khác giao hàng tr v thành ph ban u M i thành ph ch n m t l n, kho ng cách t m t thành ph n thành ph khác xác nh c Kho ng cách gi a hai thành ph có th kho ng cách a lý, có th c c phí di chuy n ho c th i gian di chuy n Ta g i chung dài Hãy tìm m t chu trình (m t ng i khép kín th a mãn u ki n trên) cho t ng dài c nh nh nh t Hay cịn nói tìm m t ph ng án có giá nh nh t Bài toán c ng c g i toán ng i du l ch V i ph ng pháp vét c n ta xét t t c chu trình, m i chu trình tính t ng dài c nh a r i ch n m t chu trình có t ng dài nh nh t Tuy nhiên c n xét t t c chu trình Th c v y, m i chu trình u i qua t t c nh (thành ph ) nên ta có th c nh m t nh nh ta có n-1 c nh t i n-1 nh khác, nên ta có n-1 cách ch n c nh u tiên c a chu trình Sau ã ch n c c nh u tiên, n-2 cách ch n c nh th hai, ó ta có (n-1)(n-2) cách Giáo trình mơn Phân tích Gi i Thu t – I C C N TH Trang 42 Collected by The_Wall (11/10/2005) ch n hai c nh C lý lu n nh v y ta s th y có (n-1)! cách ch n m t chu trình Tuy nhiên v i m i chu trình ta ch quan tâm n t ng dài c nh ch không quan tâm n h ïng i theo chi u d ng hay âm v y có t t c ph ng án ó m t gi i thu t th i gian m !!! thu t tham n áp d ng vào ây là: Tính dài c a t t c c nh (có t t c Xét c nh có M t c nh s dài t nh c nl n nh) a vào chu trình a vào chu trình n u c nh ó th a mãn hai · Khơng t o thành m t chu trình thi u (không i qua m t n u ki n sau: nh) · Không t o thành m t nh có c p (t c khơng c có nhi u h n hai c nh xu t phát nh, yêu c u c a toán m i thành ph ch c n m t l n: m t l n n m t l n i) L p l i b c cho n xây d ng c m t chu trình V i k thu t ta ch c n n(n-1)/2 phép ch n nên ta có m t gi i thu t c n O(n2) th i gian Ví d 3-1: Cho tốn TSP v i nh c cho b i t a nh sau: Do có nh nên có t t c 15 c nh ó c nh: ab, ac, ad, ae, af, bc, bd, be, bf, cd, ce, cf, de, df ef dài c nh ây kho ng cách Euclide Trong 15 c nh de = nh nh t, nên de c ch n vào chu trình K n c nh ab, bc ef u có dài C c nh u th a mãn hai u ki n nói trên, nên u c ch n vào chu trình C nh có dài nh k ti p ac = 7.08, nh ng không th a c nh vào chu trình s t o chu trình thi u (a-b-c-a) C nh df c ng b lo i lý t ng t C ûnh be c xem xét nh ng r i c ng b lo i t o nh b nh e có c p T ng t c ng lo i bd cd c nh ti p theo c xét c ch n Cu i ta có chu trình a-b-c-d-e-f-a v i t ng dài 50 Giáo trình mơn Phân tích Gi i Thu t – I C C N TH Trang 43 Collected by The_Wall (11/10/2005) ây ch m t ph Ph ng án t t ng án t i u chu trình a-c-d-e-f-b-a v i t ng dài 48.39 Gi i thu t s b nh sau: procedure TSP; begin {E t p c nh } {S p x p c nh E theo th t t ng c a Chu_Trinh := F; Gia := 0.0; while E F begin if c nh e có th ch n then begin Chu_Trinh := Chu_Trinh + e ; Gia := Gia + dài c a e; end; E := E-e; end ; dài } end; M t cách ti p c n khác c a k thu t tham n vào toán là: Xu t phát t m t nh b t k , ch n m t c nh có nh ó n nh k ti p T ki n nói nh k ti p ta l i ch n m t c nh có i n d nh k ti p L p l i b c cho n i t i dài nh nh t t t c c nh i t dài nh nh t i t nh n quay tr v nh tho mãn hai u nh xu t phát III.3.4- Bài toán ba lơ Cho m t ba lơ có th ng m t tr ng l ng W n lo i v t, m i v t i có m t tr ng l ng gi m t giá tr vi T t c lo i v t u có s l ng khơng h n ch Tìm t cách l a ch n v t ng vào ba lô, ch n lo i v t nào, m i lo i l y cho ng tr ng l ng không v t W t ng giá tr l n nh t Theo yêu c u c a tốn ta c n nh ng v t có giá tr cao mà tr ng l ng l i nh cho có th mang c nhi u “ quý”, s h p lý ta quan tâm n y u t “ n giá” c a t ng lo i v t t c t l giá tr /tr ng l ng n giá cao q T ó ta có k thu t greedy áp Giáo trình mơn Phân tích Gi i Thu t – I C C N TH Trang 44 Collected by The_Wall (11/10/2005) ng cho toán là: Tính n giá cho lo i Xét lo i V i m i v t v t theo th t v t n giá t l n c xét s l y m t s l n nh ng t i a mà tr ng l ng cịn l i c a ba lơ cho phép ch n Xác nh tr ng lu ng cịn l i c a ba lơ quay l i b c v t n a Ví d 3-2: Ta có m t ba lơ có tr ng l ng ng c cho b ng (hình 3-6) ng làì 37 lo i T b ng ã cho ta tính n giá cho lo i n giá gi m d n ta có b ng (hình 3-7) Theo ó th t u tiên ch n c cho n khơng cịn có th v t v i tr ng l v t s p x p lo i ng giá tr v t theo th t v t là B, A, D cu i C V tB c xét u tiên ta ch n t i a m i tr ng l ng m i 10 ba lơ có tr ng l ng 37 Sau ã ch n vât lo i B, tr ng l ng cịn l i ba lơ 37 - 3*10 = Ta xét n v t A, A có tr ng l ng 15 mà tr ng l ng cịn l i c a balơ ch cịn nên khơng th ch n v t A Xét v t D ta th y có th ch n v t D, ó tr ng l ng cịn l i c a ba lơ 7-4 = Cu i ta ch n c m t v t C Nh v y ã ch n lo i B, m t lo i D lo i C T ng tr ng l 3*10 + 1*4 + 1*2 = 36 t ng giá tr 3*25+1*6+1*2 = 83 ng Chú ý có m t s bi n th c a tốn ba lơ nh sau: M i v t i ch có m t s l t s l ng v t si Giáo trình mơn Phân tích Gi i Thu t – I ng si V i toán l a ch n v t i ta không cl y C C N TH Trang 45 Collected by The_Wall (11/10/2005) n n m t tr ng thái ph n ánh có m t ng i th ng cu c ho c m t tr ng thái mà c hai u th không th phát tri n c n c i c a mình, ta g i tr ng thái hịa c Ta tìm cách phân tích xem t m t tr ng thái ó s d n n u th s th ng v i u ki n c hai u th u có trình nh M t trò ch i nh v y có th c bi u di n b i m t cây, g i trò ch i M i m t nút c a bi u di n cho m t tr ng thái Nút g c bi u di n cho tr ng thái b t u c a cu c ch i M i nút bi u di n cho m t tr ng thái k t thúc c a trò ch i (tr ng thái th ng thua ho c hòa) N u tr ng thái x c bi u di n b i nút n c a n bi u di n cho t t c tr ng thái k t qu c a n c i có th xu t phát t tr ng thái x Ví d 3-5: Xét trị ch i carơ có ô Hai ng i thay phiên i X ho c O Ng i i c ô th ng hàng (ngang, d c, xiên) th ng cu c N u ã h t ô i mà ch a phân th ng b i hai u th hòa M t ph n c a trò ch i c bi u di n b i sau: Trong trò ch i trên, nút c tô n n vi n khung ôi d phân bi t v i nút khác Ta có th gán cho m i nút m t giá tr ph n ánh tr ng thái th ng thua hay hòa c a u th Ch ng h n ta gán cho nút giá tr nh sau: · n u t i ó ng i i X ã th ng, · -1 n u t i ó ng Giáo trình mơn Phân tích Gi i Thu t – i i X ã thua I C C N TH Trang 48 Collected by The_Wall (11/10/2005) · n u hai u th ã hòa Nh v y t m t tr ng thái b t k , n l t mình, ng i i X s ch n cho m t n c i cho d n n tr ng thái có giá tr l n nh t (trong tr ng h p 1) Ta nói X ch n n c i MAX, nút mà t ó X ch n n c i c a c g i nút MAX Ng i i O n l t s ch n m t n c i cho d n n tr ng thái có giá tr nh nh t (trong tr ng h p -1, ó X s thua ó O s th ng) Ta nói O ch n n c i MIN, nút mà t ó O ch n n c i c a c g i nút MIN Do hai u th luân phiên i n c c a nên m c trị ch i c ng luân phiên MAX MIN Cây trị ch i th cịn có tên MIN-MAX Ta có th a m t quy t c nh tr cho nút ph n ánh tình tr ng th ng thua hay hòa kh n ng th ng cu c c a hai u th N u m t nút nút tr c a giá tr ã c gán cho nút ó Ng c l i, n u nút nút MAX tr c a b ng giá tr l n nh t c a t t c tr c a c a N u nút nút MIN tr a giá tr nh nh t c a t t c tr c a c a Quy t c nh tr c ng g n gi ng v i quy t c nh tr cho bi u th c s h c, m khác bi t ây toán t hàm l y max ho c m i nút có th có nhi u Do v y ta có th dùng k thu t quay lui nh tr cho nút c a trị ch i cài t ta có m t s gi thi t sau: · Ta có m t hàm Payoff nh n vào m t nút cho ta giá tr c a nút ó · Các h ng - t ng ng tr Payoff l n nh t nh nh t · Khai báo ki u ModeType = (MIN, MAX) xác nh · M t ki u NodeType c khai báo m t cách thích h p ph n ánh m t tr ng thái c a cu c ch i · Ta có m t hàm is_leaf · Hàm max t xác nh tr cho nút MIN hay MAX bi u di n cho m t nút nh xem m t nút có ph i nút hay không? ng ng l y giá tr l n nh t giá tr nh nh t c a hai giá tr Gi i thu t vét c n nh tr trò ch i Hàm Search nh n vào m t nút n ki u mode c a nút ó (MIN hay MAX) tr v giá tr c a nút N u nút n nút tr v giá tr ã c gán cho nút Ng c l i ta cho n m t giá tr t m value - ho c tùy thu c n nút MAX hay MIN xét c a n Sau m t c a n có giá tr V t l i value = max(value,V) n u n nút MAX value = min(value,V) n u n nút MIN Khi t c c a n ã c xét giá tr t m value c a n tr thành giá tr c a function Search(n : NodeType; mode: ModeType): real; var C : NodeType ; { C m t nút c a nút n} Value : real; {Lúc u ta cho value m t giá tr t m, sau ã xét h t t t c c a nút n value giá Giáo trình mơn Phân tích Gi i Thu t – I C C N TH Trang 49 Collected by The_Wall (11/10/2005) tr c a nút n } begin if is_leaf(n) then return ( Payoff(n) ) else begin {Kh i t o giá tr t m cho n } if mode = MAX then value := - else value := ; {Xét t t c c a n, m i l n xác nh c giá tr c a m t nút con, ta ph i m value Khi ã xét h t t t c value giá tr c a n} t l i giá tr for v i m i C c a n if mode = MAX then Value := max(Value, Search(C, MIN) ) else Value := min(Value, Search(C, MAX) ); return (value); end; end; thu t c t t a Alpha-Beta (Alpha-Beta Pruning) Trong gi i thu t vét c n trên, ta th y nh tr cho m t nút ó, ta ph i nh tr cho t t c nút cháu c a nó, mu n nh tr cho nút g c ta ph i nh tr cho t t c nút S ng nút trò ch i h u h n nh ng khơng ph i Ch ng h n trị ch i ca rơ nói trên, n u ta có bàn c bao g m n có th có t i n! nút (trong tr ng h p 9!) i v i lo i c khác nh c vua ch ng h n, s l ng nút l n h n nhi u Ta g i m t bùng n t h p nút Chúng ta c g ng tìm m t cách cho nh tr m t nút khơng nh t thi t ph i cho t t c nút cháu c a Tr c h t ta có nh n xét nh sau: nh tr N u P m t nút MAX ta ang xét m t nút Q c a (d nhiên Q nút MIN) Gi s Vp m t giá tr t m c a P, Vq m t giá tr t m c a Q n u ta có Vp Vq ta khơng c n xét ch a xét c a Q n a Vì n u có xét giá tr c a Q c ng s nh h n ho c b ng Vq ó khơng nh h ng n Vp T ng t n u P nút MIN (t t nhiên Q nút MAX) Vp Vq ta c ng khơng c n xét n ch a xét c a Q n a Vi c không xét ti p ch a c xét c a nút Q i vi c c t t a Alpha-Beta c a nút Q Trên c s nh n xét ó, ta nêu quy t c nh tr cho m t nút không ph i nút nh sau: Kh i u nút MAX có giá tr t m - nút MIN có giá tr t m N u t t c nút c a m t nút ã thành giá tr c a c xét ho c b c t t a giá tr t m c a nút ó tr N u m t nút MAX n có giá tr t m V1 m t nút c a có giá tr V2 t giá tr m m i c a n max (V1,V2) N u n nút MIN t giá tr t m m i c a n (V1,V2) V n d ng quy t c c t t a Alpha-Beta nói Giáo trình mơn Phân tích Gi i Thu t – I h n ch s l ng nút ph i xét C C N TH Trang 50 Collected by The_Wall (11/10/2005) function cat_tia(Q: NodeType; mode: ModeType; Vp: real): real; var C : NodeType ; { C m t nút c a nút Q} Vq : real; {Vq giá tr t m c a Q, sau t t c c a nút Q ã xét ho c b c t t a Vq giá tr a nút Q} begin if is_leaf(Q) then return ( Payoff(Q) ) else begin { Kh i t o giá tr t m cho Q } if mode = MAX then Vq := - else Vq := ; {Xét c a Q, m i l n xác nh c giá tr c a m t nút c a Q, ta ph i t l i giá tr m Vq so sánh v i Vp có th c t t a hay không} Xét C trái nh t c a Q; while C c a Q DO if mode = MAX then begin Vq:= max(Vq, Cat_tia(C, MIN, Vq)); if Vp Vq then return(Vq); end else begin Vq := min(Vq, Cat_tia(C, MAX, Vq)); if Vp Vq then return(Vq); end; return (Vq); end; end; Ví d 3-6: V n d ng quy t c nh tr cho nút A trò ch i ví d 3-5 A nút MAX, lúc u có giá tr t m - , xét B c a A, B nút nên giá tr c a giá tr ã c gán 1, giá tr t m c a A bây gi max (- ,1) = Xét C c a A, C nút MIN, giá tr t m lúc u c a C Xét E c a C, E nút MAX, giá tr t m c a E - Xét I c a E, I nút nên giá tr c a Quay lui l i E, giá tr t m c a E bây gi max (- ,0) = Vì E ch có t I ã xét nên giá tr t m tr thành giá tr c a E Quay lui l i C, giá tr t m m i c a C ,0) = A nút MAX có giá tr t m 1, C c a A, có giá tr t m 0, 1>0 nên ta không c n xét F c a C n a Nút C có hai E F, ó E ã c xét, F ã b c t, v y giá tr t m a C tr thành giá tr c a Sau có giá tr c a C, ta ph i t l i giá tr t m c a A, nh ng giá tr m khơng thay i max (1,0) = Ti p t c xét nút D, D nút MIN nên giá tr t m , xét nút G c a D, G nút MAX nên giá tr t m c a - , xét nút J c a G Vì J nút nên có giá tr Quay lui l i G, giá tr t m c a G bây gi max (- ,0) = giá tr t m tr thành giá tr c a G G ch có m t J ã xét Quay lui v D, giá tr t m c a D bây gi ( ,0) = Giá tr t m c a D nh h n giá tr t m c a nút A MAX cha c a nên ta c t t a H ch a c xét c a D lúc D có giá tr Quay lui v A, giá tr t m c a v n không thay i, nh ng lúc c c a A u ã c xét nên giá tr t m tr thành giá tr c a A K t qu c minh h a hình sau: Giáo trình mơn Phân tích Gi i Thu t – I C C N TH Trang 51 Collected by The_Wall (11/10/2005) III.4.3-K thu t nhánh c n V i tốn tìm ph ng án t i u, n u xét h t t t c ph ng án m t r t nhi u th i gian, nh ng n u s d ng ph ng pháp tham n ph ng án tìm c ch a h n ã ph ng án t i u Nhánh c n k thu t xây d ng tìm ki m ph ng án t i u, nh ng khơng xây ng tồn b mà s d ng giá tr c n h n ch b t nhánh Cây tìm ki m ph ng án có nút g c bi u di n cho t p t t c ph ng án có th có, m i nút bi u di n cho m t ph ng án ó Nút n có nút t ng ng v i kh n ng có th l a ch n t p ph ng án xu t phát t n K thu t g i phân nhánh V i m i nút ta s xác nh m t giá tr c n Giá tr c n m t giá tr g n v i giá c a ph ng án V i toán tìm ta s xác nh n d i cịn v i tốn tìm max ta s xác nh n C n d i giá tr nh h n ho c b ng giá c a ph ng án, ng c l i c n giá tr l n h n ho c b ng giá c a ph ng án d hình dung ta s xét hai toán quen thu c tốn TSP tốn ba lơ Giáo trình mơn Phân tích Gi i Thu t – I C C N TH Trang 52 Collected by The_Wall (11/10/2005) Bài toán ng i c a ng i giao hàng Phân nhánh Cây tìm ki m ph ng án nh phân ó: · Nút g c nút bi u di n cho c u hình bao g m t t c ph ng án · M i nút s có hai con, trái bi u di n cho c u hình bao g m t t c ph ng án ch a t c nh ó, ph i bi u di n cho c u hình bao g m t t c ph ng án khơng ch a c nh ó (các c nh xét phân nhánh c thành l p tuân theo m t th t ó, ch ng h n th t t n) · M i nút s k th a thu c tính c a t tiên c a có thêm m t thu c tính m i (ch a hay khơng ch a m t c nh ó) · Nút bi u di n cho m t c u hình ch bao g m m t ph ng án · trình phân nhánh mau chóng t i nút lá, t i m i nút ta c n có m t quy t nh b sung d a nguyên t c m i nh chu trình u có c p không t o m t chu trình thi u Ví d 3-7: Xét tốn TSP có Các c nh theo th t t n nh v i dài c nh c cho hình 3-12 xét là: ab, ac, ad, ae, bc, bd, be, cd, ce de Nút g c A c a bao g m t t c ph ng án Hai c a A B C, ó B bao g m t tc ph ph ng án không ch a ab ng án ch a c nh ab, C bao g m t t Hai c a B D E Nút D bao g m t t c ph ng án ch a ac Vì ph ng án a ch a ab (k th a c a B) v a ch a ac nên nh a ã c p hai nên D không th ch a ad ae Nút E bao g m t t c ph ng án không ch a ac Ta c (ch a y Giáo trình mơn Phân tích Gi i Thu t – ) hình 3-13 I C C N TH Trang 53 Collected by The_Wall (11/10/2005) Trong ó ký hi u có ngh a khơng ch a c nh ab Tính c n d i ây tốn tìm nên ta s d ng n d i C n d i t i m i nút m t s nh h n ho c ng giá c a t t c ph ng án c bi u di n b i nút ó Giá c a m t ph ng án ây t ng dài c a m t chu trình tính c n d i c a nút g c, m i nh ta ch n hai c nh có c b ng t ng dài t t c c nh c ch n chia cho dài nh nh t C n d Ví d 3-8: V i s li u cho ví d 3-7 nói trên, ta tính c n d nh sau: · nh b ch n ba = 3, be = · nh c ch n ca = 4, cb = · nh d ch n da = 2, dc = · i c a nút g c A (hình 3-13) nh a ch n ad = 2, ab = · i c a nút nh e ch n eb = 3, ed = T ng dài c nh c ch n là= 35, c n d i c a nút g c A 35/2 = 17.5 i v i nút khác, ph i l a ch n hai c nh có bu c (ph i ch a c nh này, không ch a c nh kia) Ví d 3-9: Tính c n d không ch a ad,ae i cho nút D hình 3-13 dài nh nh t th a u ki n ràng u ki n ràng bu c ph i ch a ab, ac · nh a ch n ab = 3, ac = 4, hai c nh bu c ph i ch n · nh b ch n ba = 3, be = Giáo trình mơn Phân tích Gi i Thu t – I C C N TH Trang 54 Collected by The_Wall (11/10/2005) · nh c ch n ca = 4, cb = · nh d ch n de = 6, dc = 5, không · nh e ch n eb = 3, ed = T ng dài c nh c ch n 41, c n d thu t nhánh c n Bây gi ta s k t h p hai k thu t c ch n da nên ta ph i ch n de i c a nút D 41/2 = 20.5 xây d ng tìm ki m ph · Xây d ng nút g c, bao g m t t c ph ng án, tính c n d · Sau phân nhánh cho m i nút, ta tính c n d ng án Quy t c nh sau: i cho nút g c i cho c hai · N u c n d i c a m t nút l n h n ho c b ng giá nh nh t t m th i c a m t ph ng án ã c tìm th y ta khơng c n xây d ng cho nút n a (Ta g i c t t a c a nút ó) · N u c hai u có c n d i nh h n giá nh nh t t m th i c a m t ph c tìm th y nút có c n d i nh h n s c u tiên phân nhánh tr c ng án ã · M i l n quay lui xét nút ch a c xét c a m t nút ta ph i xem xét l i nút ó có th c t t a c a hay khơng có th m t ph ng án có giá nh nh t t m th i v a c tìm th y · Sau t t c ã c phân nhánh ho c b c t t a ph ph ng án tìm c ph ng án c n tìm ng án có giá nh nh t Trong q trình xây d ng có th ta ã xây d ng c m t s nút lá, nh ta bi t m i nút bi u di n cho m t ph ng án Giá nh nh t s giá c a ph ng án c g i giá nh nh t t m th i Ví d 3-10: Xét tốn TSP ví d 3-7 nói sung T p h p c nh xét phân nhánh ab, ac, ad, ae, bc, bd, be, cd, ce de u ki n b ây m i nh ph i c ch n hai c nh, b lo i hai c nh không c t o chu trình thi u Nút g c A bao g m t t c ph ng án, có c n d i 17.5 Phân nhánh cho A, xây d ng hai B C Tính c n d i cho hai nút c c n d i c a B 17.5 C 18.5 Nút B có c n i nh h n nên c phân nhánh tr c Hai c a B D E Các ràng bu c c a D E gi ng nh ta ã nói ví d c a ph n phân nhánh Tính c n cho D E, c c n d i c a D 20.5 a E 18 Nút E c xét tr c Phân nhánh cho nút E theo c nh ad, hai c a E F G F ch a ad G không ch a ad Do F k th a thu c tính c a E B, nên F t p h p ph ng án ch a ab, ad không ch a ac, nh a ã c p v y F không ch a ae T ng t G ch a ab, không ch a ac, không ch a ad nên ph i ch a ae Tính c n d i cho F G c c n d i c a F 18 c a G 23 Ti p t c xây d ng hai cho F theo c nh bc H I H ch a bc I không ch a bc Do H k th a thu c tính c a B, E F nên H ph ng án ch a ab, ad, không ch a ac ch a bc Nh v y Giáo trình mơn Phân tích Gi i Thu t – I C C N TH Trang 55 Collected by The_Wall (11/10/2005) nh a ã th a u ki n c ch n hai c nh (ab ad) b lo i hai c nh (ac ae), nh b ã c ch n c nh (ba bc) nên bd be b lo i nh c ã c ch n cb, b lo i ca, ta có th ch n cd ho c ce N u ch n cd s có m t chu trinh thi u a b c d a, nh v y cd b lo i nên ph i ch n ce nh d có db dc ã b lo i, da ã c ch n nên ph i ch n thêm de Lúc ó nh e c ng ã có hai c nh c ch n ec ed, hai c nh b lo i eb ea Tóm l i H t p ch bao g m m t ph ng án a b c e d a có giá 23 i v i I ta ã có I ch a ab, không ch a ac, ch a ad, không ch a ae không ch a bc ng lý lu n t ng t ta có I khơng ch a bd, ch a be, cd, ce không ch a de M t ph ng án m i a b e c d a v i giá 21 ây giá nh nh t t m th i m i c tìm th y Bây gi ta quay lui v E xét nút c a G Vì G có c n d nh t t m th i 21 nên c t t a c a G i 23 l n h n giá th p Quay lui v B xét nút D c a C n d i c a D 20.5 không l n h n 21 Nh ng dài c nh tốn ã cho s nguyên nên n u ta tri n khai c a D t i nút g m m t ph ng án Giá c a ph ng án ph i m t s nguyên l n h n 20.5 hay l n h n ho c b ng 21 V y ta c ng không c n xây d ng c a D n a Ti p t c quay lui n A xét C c a Phân nhánh C theo c nh ac thành hai J K Giáo trình mơn Phân tích Gi i Thu t – I C C N TH Trang 56 Collected by The_Wall (11/10/2005) J ch a ac có c n d i 18.5 K không ch a ac nên ph i ch a ad ae, c n d nh nh t t m th i nên c t t a c a K i c a K 21 b ng giá Hai c a J L M M không ch a ad, ab, ch a ac ae có c n d con.Hai c a L N O, N ch a bc O không ch a bc i 23.5 nên b c t t a Xét nút N ta có: nh a c ch n hai c nh ac ad, b lo i hai c nh ab ae nh b ã c ch n bc, b lo i ba, ta có th ch n bd ho c be N u ch n bd s có m t chu trình thi u a c b d a, y ph i lo i bd ch n be nh c ã c ch n ca, cb nên ph i lo i cd ce nh d ã c ch n da, b lo i db dc nên ph i ch n de Khi ó nh e có hai c nh c ch n eb, ed hai c nh b lo i ea ec V y N bao g m ch m t ph ng án a c b e d a v i giá 19 T ng t nút O bao g m ch m t ph T t c nút c a ã ng án a c e b d a có giá 23 c xét ho c b c t t a nên ph ng án c n tìm a c b e d a v i giá 19 Hình 3-14 minh h a cho nh ng u ta v a nói Bài tốn ba lơ Ta th y ây m t tốn tìm max Danh sách n giá xét phân nhánh v t c s p x p theo th t gi m c a Nút g c bi u di n cho tr ng thái ban u c a ba lơ, ó ta ch a ch n m t v t T ng giá c ch n TGT=0 C n c a nút g c CT = W * n giá l n nh t tr Nút g c s có nút t i nút ta tính l i thông s : · TGT = TGT (c ) + s · W = W (c ) - s ng ng v i kh n ng ch n v t v t · CT = TGT + W (m i) * v t có n giá l n nh t V i c ch n * giá tr m i v t c ch n * tr ng l ng m i v t n giá c a v t s xét k ti p Trong nút con, ta s u tiên phân nhánh cho nút có c n l n h n tr c Các c a nút t ng ng v i kh n ng ch n v t có n giá l n ti p theo V i m i nút ta i ph i xác nh l i thông s TGT, W, CT theo công th c ã nói b c L p l i b c v i ý: i v i nh ng nút có n nh h n ho c b ng giá l n nh t m th i c a m t ph ng án ã c tìm th y ta khơng c n phân nhánh cho nút ó n a ph N u t t c nút ng án c n tìm u ã c phân nhánh ho c b c t b ph ng án có giá l n nh t Ví d 3-11: V i tốn ba lơ ã cho ví d 3-2 , sau tính s p x p v t theo th t gi m d n c a n giá ta c b ng sau Giáo trình mơn Phân tích Gi i Thu t – I n giá cho v t C C N TH Trang 57 Collected by The_Wall (11/10/2005) G i x1, x2, x3, x4 s l ng c n ch n t ng ng c a v t b, a, d, c Nút g c A bi u di n cho tr ng thái ta ch a ch n b t c m t v t Khi ó t ng giá tr TGT =0, tr ng l ng c a ba lô W=37 (theo ra) c n CT = 37*2.5 = 92.5, ó 37 W, 2.5 n giá c a v t b V i v t b, ta có kh n ng: ch n v t b (X1=3), ch n v t b (X1=2), ch n v t b (X1=1) không ch n v t b (X1=0) ng v i kh n ng này, ta phân nhánh cho nút g c A thành B, C, D E V i nút B, ta có TGT = 0+ 3*25 = 75, ó s v t b c ch n, 25 giá tr c a i v t b W = 37- 3*10 = 7, ó 37 tr nh l ng ban u c a ba lô, s v t b c, 10 tr ng l ng mõi v t b CT = 75 + 7*2 = 89, ó 75 TGT, tr ng l ng cịn l i c a ba lơ n giá c a v t a T ng t ta tính c thơng s cho nút C, D E, ó c n t ng ng 84, 79 74 Trong nút B, C, D E nút B có c n l n nh t nên ta s phân nhánh cho nút B tr c i hy v ng s có c ph ng án t t t h ng T nút B ta ch có m t nút F nh t ng v i X2=0 (do tr ng l ng l i c a ba lô 7, tr ng l ng c a m i v t a 15) Sau xác nh thơng s cho nút F ta có c n c a F 85.5 Ta ti p t c phân nhánh cho nút F Nút F có G H t ng ng v i X3=1 X3=0 Sau xác nh thông s cho hai nút ta th y c n c a G 84 c a H 82 nên ta ti p t c phân nhánh cho nút G Nút G có hai I J t ng ng v i X4=1 X4=0 ây hai nút (bi u di n cho ph ng án) v i m i nút s v t ã c ch n xong Trong ó nút I bi u di n cho ph ng án ch n X1=3, X2=0, X3=1 X4=1 v i giá 83, nút J bi u di n cho ph ng án ch n X1=3, X2=0, X3=1 X4=01 v i giá 81 Nh v y giá l n nh t t m th i ây 83 Quay lui lên nút H, ta th y c n c a H 8283 nên ti p t c phân nhánh cho nút C Nút C có hai K L ng v i X2=1 X2=0 Sau tính thơng s cho K L ta th y n c a K 83 c a L 75.25 C hai giá tr u không l n h n 83 nên c hai nút u b c t t a Cu i nút D E c ng b c t t a Nh v y t t c nút u ã c phân nhánh ho c b t t a nên ph ng án t t nh t t m th i ph ng án c n tìm Theo ó ta c n ch n v t lo i b, t lo i d m t v t lo i c v i t ng giá tr 83, t ng tr ng l ng 36 Xem hình 3-16 Giáo trình mơn Phân tích Gi i Thu t – I C C N TH Trang 58 Collected by The_Wall (11/10/2005) III.5- K THU T TÌM KI M A PH NG III.5.1- N i dung k thu t III.5.2- Bài toán ph t i thi u III.5.3- Bài toán ng i c a ng i bán hàng III.5.1- N i dung k thu t K thu t tìm ki m a ph ng (local search) th gi i t i u Ph ng pháp nh sau: · Xu t phát t m t ph ph i lên ph · L p l i vi c áp d ng phép bi n c ph ng án n a Thơng th ng m t phép bi n Giáo trình mơn Phân tích Gi i Thu t – c áp d ng gi i tốn tìm l i ng án ó · Áp d ng m t phép bi n ng án ã có i thi n ng I ng án hi n hành i lên ph i ch thay c m t ph ng án hi n hành cho ng án m i t t h n n khơng cịn có th i m t b ph n ó c a ph ng án hi n hành C C N TH Trang 59 Collected by The_Wall (11/10/2005) c m t ph ng án m i nên phép bi n i c g i phép bi n i a ph ng ó ta có tên k thu t tìm ki m a ph ng Sau ây ta s trình bày m t s ví d áp d ng k thu t tìm ki m a ph ng III.5.2- Bài toán ph t i thi u Cho G = (V,E) m t th vơ h ng liên thơng, ó V t p nh E t p nh Các c nh c a th G u có tr ng s Cây T có t p h p nút V c g i ph (spaning tree) c a th G Cây ph t i thi u m t ph c a G mà t ng dài (tr ng s ) c nh nh nh t Bài toán ph t i thi u th ng c áp d ng vi c thi t k m t m ng l gi a thành ph hay thi t k m t m ng máy tính K thu t tìm ki m · Ph a ph ng án ban ng áp d ng vào toán nh sau: u m t ph ó · Thành l p t p t t c c nh theo th t ng d n c a có n i giao thơng dài (có nh iv i th nh) · Phép bi n i a ph ng ây là: Ch n m t c nh có dài nh nh t t p c nh ch a s d ng thêm vào Trong s có m t chu trình, lo i kh i chu trình c nh có dài l n nh t chu trình ó Ta c m t ph m i L p l i b c cho n khơng cịn c i thi n c ph ng án n a Ví d 3-12: Cho th G bao g m nh a, b, c, d,e dài c nh c cho hình 3- 17 T p h p c nh de, ae ce xét c thành l p theo th t t nh n l n ad, ab, be, bc, ac, cd, bd, Cây xu t phát v i giá 20 (Hình 3-18a) Thêm c nh ad = 2, b c nh cd = ta giá 17 (Hình 3-18b) Giáo trình mơn Phân tích Gi i Thu t – I c m i có C C N TH Trang 60 Collected by The_Wall (11/10/2005) L i thêm c nh ab = 3, b c nh bc = ta Thêm c nh be = 3, b c nh ae = ta Vi c áp d ng phép bi n c ph ng án i c có giá là16 (Hình 3-18c) c có giá 12 (Hình 3-18d) n ây d ng l i nêuú ti p t c n a c ng khơng c i thi n V y ph t i thi u c n tìm hình 3-18d ng III.5.3- Bài tốn ng i c a ng i bán hàng Ta có th v n d ng k thu t tìm ki m a ph ng i bán hàng (TSP) gi i tốn tìm ng i ng n nh t c a · Xu t phát t m t chu trình ó · B i hai c nh có o m t chu trình dài l n nh t không k nhau, n i · Ti p t c q trình bi n Ví d 3-13: Bài tốn TSP có Giáo trình mơn Phân tích Gi i Thu t – I i cho nh l i v i cho v n n khơng cịn c i thi n nh c nh có dài c ph ng án n a c cho hình 3-19 C C N TH Trang 61 Collected by The_Wall (11/10/2005) Ph ng án ban u chu trình (a b c d e a) có giá (t ng dài ) 25 (Hình 3-20a) B hai c nh có dài l n nh t khơng k ae cd, n i a v i d e v i c ta trình m i ( a b c e d a) v i giá = 23 (Hình 3-20b) c chu B hai c nh có dài l n nh t, khơng k ce ab, ta c chu trình m i (a c b e d a) có giá = 19 (Hình 3-20c) Quá trình k t thúc n u ti p t c giá s t ng lên Giáo trình mơn Phân tích Gi i Thu t – I C C N TH Trang 62