Tài liệu Giáo trình giải thuật của Nguyễn Văn Linh part 11 docx

11 306 0
Tài liệu Giáo trình giải thuật của Nguyễn Văn Linh part 11 docx

Đ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

Giải thuật Kĩ thuật thiết kế giải thuật • Một kiểu NodeType khai báo cách thích hợp để biểu diễn cho nút phản ánh trạng thái chơi • Ta có hàm is_leaf để xác định xem nút có phải nút hay khơng? • Hàm max tương ứng lấy giá trị lớn giá trị nhỏ hai giá trị Hàm Search nhận vào nút n kiểu mode nút (MIN hay MAX) trả giá trị nút Nếu nút n nút trả giá trị gán cho nút Ngược lại ta cho n giá trị tạm value -∞ ∞ tùy thuộc n nút MAX hay MIN xét n Sau n có giá trị V đặt lại value = max(value,V) n nút MAX value = min(value,V) n nút MIN Khi tất n xét giá trị tạm value n trở thành giá trị FUNCTION Search(n : NodeType; mode: ModeType): real; VAR C : NodeType ; { C nút nút n} Value : real; {Lúc đầu ta cho value giá trị tạm, sau xét hết tất nút n value giá trị 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 n, lần xác định giá trị nút con, ta phải đặt lại giá trị tạm value Khi xét hết tất value giá trị n} FOR với C n DO IF mode = MAX THEN Value := max(Value, Search(C, MIN) ) ELSE Value := min(Value, Search(C, MAX) ); RETURN (value); END; END; 3.5.2.3 Kĩ 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 nút đó, ta phải định trị cho tất nút cháu nó, muốn định trị cho nút gốc ta phải định trị cho tất nút Số lượng nút trị chơi hữu hạn khơng phải Chẳng hạn trị chơi ca rơ nói trên, ta có bàn cờ bao gồm n có tới n! nút (trong trường hợp 9!) Ðối với loại cờ khác cờ vua chẳng hạn, số lượng nút lớn nhiều Ta gọi bùng nổ tổ hợp nút Nguyễn Văn Linh Trang 68 Sưu t m b i: www.daihoc.com.vn Giải thuật Kĩ thuật thiết kế giải thuật Chúng ta cố gắng tìm cách cho định trị nút không thiết phải định trị cho tất nút cháu Trước hết ta có nhận xét sau: Nếu P nút MAX ta xét nút Q (dĩ nhiên Q nút MIN) Giả sử Vp giá trị tạm P, Vq giá trị tạm Q ta có Vp ≥ Vq ta khơng cần xét chưa xét Q Vì có xét giá trị Q nhỏ Vq khơng ảnh hưởng đến Vp Tương tự P nút MIN (tất nhiên Q nút MAX) Vp ≤ Vq ta khơng cần xét đến chưa xét Q Việc không xét tiếp chưa xét nút Q gọi việc cắt tỉa Alpha-Beta nút Q Trên sở nhận xét đó, ta nêu quy tắc định trị cho nút nút sau: Khởi đầu nút MAX có giá trị tạm -∞ nút MIN có giá trị tạm ∞ Nếu tất nút nút xét bị cắt tỉa giá trị tạm nút trở thành giá trị Nếu nút MAX n có giá trị tạm V1 nút có giá trị V2 đặt giá trị tạm n max(V1,V2) Nếu n nút MIN đặt giá trị tạm n min(V1,V2) xét Vận dụng quy tắc cắt tỉa Alpha-Beta nói để hạn chế số lượng nút phải Ví dụ 3-7: Vận dụng quy tắc để định trị cho nút A trò chơi ví dụ 3-5 A nút MAX, A nút nên ta gán giá trị tạm -∞, xét B A, B nút nên giá trị giá trị gán 1, giá trị tạm A max(-∞,1) = Xét C A, C nút MIN, giá trị tạm lúc đầu C ∞ Xét E C, E nút MAX, giá trị tạm E -∞ Xét I E, I nút nên giá trị Quay lui lại E, giá trị tạm E max(-∞,0) = Vì E có I xét nên giá trị tạm trở thành giá trị E Quay lui lại C, giá trị tạm C min(∞,0) = A nút MAX có giá trị tạm 1, C A, có giá trị tạm 0, 1>0 nên ta không cần xét F C Nút C có hai E F, E xét, F bị cắt, giá trị tạm C trở thành giá trị Sau có giá trị C, ta phải đặt lại giá trị tạm A, giá trị tạ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 D, G nút MAX nên giá trị tạm -∞, xét nút J G Vì J nút nên có giá trị Quay lui lại G, giá trị tạm G max(-∞,0) = giá trị tạm trở thành giá trị G G có J xét Quay lui D, giá trị tạm D min(∞,0) = Giá trị tạm D nhỏ giá trị tạm nút A MAX cha nên ta cắt tỉa H chưa xét D lúc D có giá trị Quay lui A, giá trị tạm khơng thay đổi, lúc A xét nên giá trị tạm trở thành giá trị A Kết minh họa hình sau: Nguyễn Văn Linh Trang 69 Sưu t m b i: www.daihoc.com.vn Giải thuật Kĩ thuật thiết kế giải thuật X-đi MAX A X -∞ X X O X-đi MAX O B O-đi MIN O C X X X X O O O D X X X X O O O ∞ 0 ∞ X X X O O X O E X-đi MAX -∞ X O X X X O O O G F X X -∞ X O X X O X X O O X O O O O H X X O X O O X O -1 I J K X O X X X O O X O X O X X X O O X O X X X O X O O X O O-đi MIN Hình 3-10: Ðịnh trị trò chơi kĩ thuật cắt tỉa alpha-beta Hàm cat_tia sau trình bày giải thuật thơ để định trị nút, áp dụng kĩ thuật cắt tỉa alpha-beta FUNCTION cat_tia(Q:NodeType; mode:ModeType; Vp: real): real; var C : NodeType ; { C nút nút Q} Vq : real; {Vq giá trị tạm Q, sau tất nút Q xét bị cắt tỉa Vq giá trị 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 := ∞; Nguyễn Văn Linh Trang 70 Sưu t m b i: www.daihoc.com.vn Giải thuật Kĩ thuật thiết kế giải thuật {Xét Q, lần xác định giá trị nút Q, ta phải đặt lại giá trị tạm Vq so sánh với Vp để cắt tỉa hay khơng} Xét C trái Q; WHILE C Q DO IF mode = MAX THEN BEGIN Vq:= max(Vq, Cat_tia(C, MIN, Vq)); IF Vp= Vq THEN RETURN(Vq); END; RETURN (Vq); END; END; 3.5.3 Kĩ thuật nhánh cận Với tốn tìm phương án tối ưu, xét hết tất phương án nhiều thời gian, sử dụng phương pháp tham ăn phương án tìm chưa 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, khơng xây dựng tồn 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 phương án có, nút biểu diễn cho phương án Nút n có nút tương ứng với khả 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 nút ta xác định giá trị cận Giá trị cận giá trị gần với giá phương án Với tốn tìm ta xác định cận cịn với tốn tìm max ta xác định cận Cận giá trị nhỏ giá phương án, ngược lại cận giá trị lớn giá phương án Ðể dễ hình dung ta xét hai toán quen thuộc toán TSP tốn ba lơ 3.5.3.1 Bài tốn đường người giao hàng 3.5.3.1.1 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 phương án • Mỗi nút có hai con, trái biểu diễn cho cấu hình bao gồm tất phương án chứa cạnh đó, phải biểu diễn cho cấu hình bao gồm tất phương án khơng chứa cạnh (các cạnh để xét phân nhánh thành lập tuân theo thứ tự đó, chẳng hạn thứ tự từ điển) • Mỗi nút kế thừa thuộc tính tổ tiên có thêm thuộc tính (chứa hay khơng chứa cạnh đó) Nguyễn Văn Linh Trang 71 Sưu t m b i: www.daihoc.com.vn Giải thuật Kĩ thuật thiết kế giải thuật • Nút biểu diễn cho cấu hình bao gồm phương án • Ðể q trình phân nhánh mau chóng tới nút lá, nút ta cần có định bổ sung dựa nguyên tắc đỉnh chu trình có cấp khơng tạo chu trình thiếu Ví dụ 3-7: Xét tốn TSP có đỉnh với độ dài cạnh cho hình 311 b Các cạnh theo thứ tự từ điển để xét là: ab, ac, ad, ae, bc, bd, be, cd, ce de Nút gốc A bao gồm tất a c phương án Hai A B C, B bao gồm tất phương án chứa cạnh ab, C bao gồm tất phương án khơng chứa ab, kí hiệu ab e d Hai B D E Nút D bao gồm tất phương án Hình 3-11: Bài tốn TSP có đỉnh chứa ac Vì phương án vừa chứa ab (kế thừa B) vừa chứa ac nên đỉnh a đủ cấp hai nên D chứa ad ae Nút E bao gồm tất phương án không chứa ac… Ta (chưa đầy đủ) hình 3-12 Tất phương án A B C ab D ac ae ad ab E ac Hình 3-12: Phân nhánh 3.5.3.1.2 Tính cận Ðây tốn tìm nên ta sử dụng cận Cận nút số nhỏ giá tất phương án biểu diễn nút Giá phương án tổng độ dài chu trình Nguyễn Văn Linh Trang 72 Sưu t m b i: www.daihoc.com.vn Giải thuật Kĩ thuật thiết kế giải thuật Ðể tính cận nút gốc, đỉnh ta chọn hai cạnh có độ dài nhỏ Cận nút gốc tổng độ dài tất cạnh chọn chia cho Ví dụ 3-8: Với số liệu cho ví dụ 3-7 nói trên, ta tính cận nút gốc A (hình 3-12) sau: • Ðỉnh a chọn ad = 2, ab = • Ðỉnh b chọn ba = 3, be = • Ðỉnh c chọn ca = 4, cb = • Ðỉnh d chọn da = 2, dc = • Ðỉnh e chọn eb = 3, ed = Tổng độ dài cạnh chọn 35, cận 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ó độ dài nhỏ thỏa điều kiện ràng 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 cho nút D hình 3-13 Ðiều kiện ràng buộc phải chứa ab, ac không chứa ad, ae • Ðỉnh a chọn ab = 3, ac = 4, hai cạnh buộc phải chọn • Ðỉnh b chọn ba = 3, be = • Ðỉnh c chọn ca = 4, cb = • Ðỉnh d chọn de = 6, dc = 5, không chọn da nên ta phải chọn de • Ðỉnh e chọn eb = 3, ed = Tổng độ dài cạnh chọn 41, cận nút D 41/2 = 20.5 3.5.3.1.3 Kĩ thuật nhánh cận Bây ta kết hợp hai kĩ thuật để xây dựng tìm kiếm phương án Quy tắc sau: • Xây dựng nút gốc, bao gồm tất phương án, tính cận cho nút gốc • Sau phân nhánh cho nút, ta tính cận cho hai • Nếu cận nút lớn giá nhỏ tạm thời phương án tìm thấy ta khơng cần xây dựng cho nút (Ta gọi cắt tỉa nút đó) • Nếu hai có cận nhỏ giá nhỏ tạm thời phương án tìm thấy nút có cận nhỏ ưu tiên phân nhánh trước • Mỗi lần quay lui để xét nút chưa xét nút ta phải xem xét lại nút để cắt tỉa hay khơng phương án có giá nhỏ tạm thời vừa tìm thấy Nguyễn Văn Linh Trang 73 Sưu t m b i: www.daihoc.com.vn Giải thuật Kĩ thuật thiết kế giải thuật • Sau tất phân nhánh bị cắt tỉa phương án có giá nhỏ phương án tìm phương án cần tìm Trong trình xây dựng ta xây dựng số nút lá, ta biết nút biểu diễn cho phương án Giá nhỏ số giá phương án gọi giá nhỏ tạm thời Ví dụ 3-10: Xét tốn TSP ví dụ 3-7 nói Tập hợp cạnh để xét phân nhánh ab, ac, ad, ae, bc, bd, be, cd, ce de Ðiều kiện bổ sung đỉnh phải chọn hai cạnh, bị loại hai cạnh không tạo chu trình thiếu Nút gốc A bao gồm tất phương án, có cận 17.5 Phân nhánh cho A, xây dựng hai B C Tính cận cho hai nút cận B 17.5 C 18.5 Nút B có cận nhỏ nên phân nhánh trước Hai B D E Các ràng buộc D E giống nh-ư ta nói ví dụ phần phân nhánh Tính cận cho D E, cận D 20.5 E 18 Nút E xét trước Phân nhánh cho nút E theo cạnh ad, hai E F G F chứa ad G không chứa ad Do F kế thừa thuộc tính 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 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 cho F G cận F 18 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 B, E F nên H phương án chứa ab, ad, không chứa ac chứa bc Như đỉnh a thỏa điều kiện chọn hai cạnh (ab ad) bị loại hai cạnh (ac ae), Ðỉnh b chọn cạnh (ba bc) nên bd be bị loại Ðỉnh c chọn cb, bị loại ca, ta chọn cd ce Nếu chọn cd có chu trinh thiếu a b c d a, cd bị loại nên phải chọn ce Ðỉnh d có db dc bị loại, da chọn nên phải chọn thêm de Lúc đỉnh e có hai cạnh chọn ec ed, hai cạnh bị loại eb ea Tóm lại H tập bao gồm 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 Bằ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 a b e c d a với giá 21 Ðây giá nhỏ tạm thời tìm thấy Bây ta quay lui E xét nút G Vì G có cận 23 lớn giá thấp tạm thời 21 nên cắt tỉa G Quay lui B xét nút D Cận D 20.5 khơng lớn 21 Nhưng độ dài cạnh toán cho số nguyên nên ta triển khai D tới nút gồm phương án Giá phương án phải số nguyên lớn 20.5 hay lớn 21 Vậy ta không cần xây dựng D Tiếp tục quay lui đến A xét C Phân nhánh C theo cạnh ac thành hai J K J chứa ac có cận 18.5 K khơng chứa ac nên phải chứa ad ae, cận K 21 giá nhỏ tạm thời nên cắt tỉa K Hai J L M M không chứa ad, ab, chứa ac ae có cận 23.5 nên bị cắt tỉa Hai L N O, N chứa bc O không chứa bc Nguyễn Văn Linh Trang 74 Sưu t m b i: www.daihoc.com.vn Giải thuật Kĩ thuật thiết kế giải thuật Xét nút N ta có: Ðỉnh a chọn hai cạnh ac ad, bị loại hai cạnh ab ae Ðỉnh b chọn bc, bị loại ba, ta chọn bd be Nếu chọn bd có chu trình thiếu a c b d a, phải loại bd chọn be Ðỉnh c chọn ca, cb nên phải loại cd ce Ðỉnh d chọn da, bị loại db dc nên phải chọn de Khi đỉnh e có đủ hai cạnh chọn eb, ed hai cạnh bị loại ea ec Vậy N bao gồm phương án a c b e d a với giá 19 Tương tự nút O bao gồm phương án a c e b d a có giá 23 Tất nút xét 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-13 minh họa cho điều ta vừa nói Tất phương án 17.5 A B ab 17.5 D C ab 18.5 E ac ad ae 20.5 J ac 18.5 ac 18 F G ad ae 18 H ac ad ae 21 L ad ae ad ae 18.5 23 I K M ad ae 23.5 O N bc bd be cd ce de bc bd be cd ce de bc bd be cd ce de bc bd be ce cd de abceda Giá: 23 abecda Giá: 21 acbeda Giá: 19 acebda Giá: 23 Hình 3-13: Kĩ thuật nhánh cận giải toán TSP Nguyễn Văn Linh Trang 75 Sưu t m b i: www.daihoc.com.vn Giải thuật Kĩ thuật thiết kế giải thuật 3.5.3.2 Bài tốn ba lơ Ta thấy tốn tìm max Danh sách đồ vật xếp theo thứ tự giảm đơn giá để xét phân nhánh Nút gốc biểu diễn cho trạng thái ban đầu ba lơ, ta chưa chọn vật Tổng giá trị chọn TGT = Cận nút gốc CT = W * Ðơn giá lớn Nút gốc có nút tương ứng với khả chọn đồ vật có đơn giá lớn Với nút ta tính lại thơng số: • TGT = TGT (của nút cha) + số đồ vật chọn * giá trị vật • W = W (của nút cha) - số đồ vật chọn * trọng lượng vật • CT = TGT + W * Ðơn giá vật xét Trong nút con, ta ưu tiên phân nhánh cho nút có cận lớn trước Các nút tương ứng với khả chọn đồ vật có đơn giá lớn Với nút ta lạ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 ý: nút có cận nhỏ giá lớn tạm thời phương án tìm thấy ta khơng cần phân nhánh cho nút (cắt bỏ) Nếu tất nút phân nhánh bị cắt bỏ phương án có giá lớn phương án cần tìm Ví dụ 3-11: Với tốn ba lơ cho ví dụ 3-2 , sau tính đơn giá cho đồ vật xếp đồ vật theo thứ tự giảm dần đơn giá ta bảng sau Loại đồ vật b a d c Trọng lượng 10 15 Giá trị 25 30 Đơn giá 2.5 2.0 1.5 Gọi XA, XB, XC, XD số lượng cần chọn tương ứng đồ vật a, b, c d B Nút gốc A biểu diễn cho trạng thái ta chưa chọn đồ vật Khi tổng giá trị TGT =0, trọng lượng ba lô W=37 (theo đề ra) cận CT = 37*2.5 = 92.5, 37 W, 2.5 đơn giá đồ vật b Với đồ vật b, ta có khả năng: chọn đồ vật b (XB=3), chọn đồ vật b (XB=2), chọn đồ vật b (XB=1) không chọn đồ vật b (XB=0) Ứng với khả 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 chọn, 25 giá trị đồ vật b W = 37- 3*10 = 7, 37 trọnh lượng ban đầu 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 lại ba lô đơn giá đồ vật a Tương Nguyễn Văn Linh Trang 76 Sưu t m b i: www.daihoc.com.vn Giải thuật Kĩ thuật thiết kế giải thuật tự ta tính 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 nên ta phân nhánh cho nút B trước với hy vọng có phương án tốt từ hướng Từ nút B ta có nút F ứng với XA=0 (do trọng lượng cịn lại ba lơ 7, trọng lượng đồ vật a 15) Sau xác định thông số cho nút F ta có cận 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 XD=1 XD=0 Sau xác định thông số cho hai nút ta thấy cận G 84 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 XC=1 XC=0 Ðây hai nút (biểu diễn cho phương án) với nút số đồ vật chọn xong Trong nút I biểu diễn cho phương án chọn XB=3, XA=0, XD=1 XC=1 với giá 83, nút J biểu diễn cho phương án chọn XB=3, XA=0, XD=1 XC=0 với giá 81 Như giá lớn tạm thời 83 B Quay lui lên nút H, ta thấy cận 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 XA=1 XA=0 Sau tính thơng số cho K L ta thấy cận K 83 L 75.25 Cả hai giá trị không lớn 83 nên hai nút bị cắt tỉa Cuối nút D E bị cắt tỉa Như tất nút phân nhánh bị cắt tỉa nên phương án tốt tạm thời phương án cần tìm Theo ta cần chọn đồ vật loại b, đồ vật loạ d đồ vật loại c với tổng giá trị 83, tổng trọng lượng 36 Xem minh hoạ hình 3-14 Nguyễn Văn Linh Trang 77 Sưu t m b i: www.daihoc.com.vn Giải thuật Kĩ thuật thiết kế giải thuật TGT =0 A W=37,CT = 92.5 XB=3 XB=2 TGT=75 B W=7 CT = 89 XA=0 TGT=75 E W=7 CT=85.5 XD=1 XB=1 TGT=50 C W=17 CT = 84 TGT=25 D W=27 CT = 79 XA=1 TGT=0 E W=37 CT = 74 XA=0 TGT=80 K W=2 CT = 83 XB=0 TGT=50 L W=17 CT=75.25 XD=0 TGT=81 G W=3 CT = 84 TGT=75 H W=7 CT = 82 XC=1 XC=0 TGT=83 I W=1 TGT=81 J W=3 Cắt tỉa Hình 3-14: Kĩ thuật nhánh cận áp dụng cho tốn ba lơ Nguyễn Văn Linh Trang 78 Sưu t m b i: www.daihoc.com.vn ... Giá: 19 acebda Giá: 23 Hình 3-13: Kĩ thuật nhánh cận giải toán TSP Nguyễn Văn Linh Trang 75 Sưu t m b i: www.daihoc.com.vn Giải thuật Kĩ thuật thiết kế giải thuật 3.5.3.2 Bài tốn ba lơ Ta thấy... án biểu diễn nút Giá phương án tổng độ dài chu trình Nguyễn Văn Linh Trang 72 Sưu t m b i: www.daihoc.com.vn Giải thuật Kĩ thuật thiết kế giải thuật Ðể tính cận nút gốc, đỉnh ta chọn hai cạnh... thấy Nguyễn Văn Linh Trang 73 Sưu t m b i: www.daihoc.com.vn Giải thuật Kĩ thuật thiết kế giải thuật • Sau tất phân nhánh bị cắt tỉa phương án có giá nhỏ phương án tìm phương án cần tìm Trong q trình

Ngày đăng: 21/01/2014, 08:20

Từ khóa liên quan

Mục lục

  • Giao_trinh_giai_thuat-_11.pdf

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

Tài liệu liên quan