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

Môn học phân tích và thiết kế giải thuật chương 5

83 290 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

Thông tin cơ bản

Định dạng
Số trang 83
Dung lượng 1,86 MB

Nội dung

Ch ng Các k thu t thi t k gi i thu t N i dung Qui ho ch ng Gi i thu t tham lam Gi i thu t quay lui Qui ho ch ng Quy ho ch ng (dynamic programming) gi i toán b ng cách k t h p l i gi i c a toán c a toán ang xét Ph ng pháp kh d ng toán không c l p i v i nhau, t c toán có dùng chung nh ng toán “cháu” (subsubproblem) Qui ho ch ng gi i toán “cháu” dùng chung m t l n l u l i gi i c a chúng m t b ng sau ó kh i ph i tính l i g p l i toán cháu ó c áp d ng cho nh ng toán t i u Qui ho ch ng hóa (optimization problem) B nb c c a qui ho ch ng â d ng m t gi i thu t qui ho ch làm b n b c: ng có th c chia c tr ng hóa c u trúc c a l i gi i t i u nh ngh a giá tr c a l i gi i t i u m t cách Tính tr c a l i gi i t i u theo ki u t d quy i lên C u t o l i gi i t i u t nh ng thông tin ã toán c tính Thí d Nhân xâu ma tr n Cho m t chu i g m n matr n, ta mu n tính tích ma tr n A1 A2 … An (5.1) c g i m - óng-ngo c- yTích c a xâu ma tr n (fully parenthesized ) n u m t ma tr n n ho c tích c a hai xâu ma tr n m - óng-ngo c- y- c m - óng-ngo c- y- theo Thí d : A1 A2 A3 A4 có th cách: (A1(A2(A3A4))) (A1((A2A3)A4) ((A1A2)(A3A4)) (A1(A2A3))A4) (((A1A2)A3)A4) a m óng ngo c m t xâu ma tr n có nh h r t l n n chi phí tính tích xâu ma tr n ng Thí d : A1 10 100 A2 100 A3 50 (A1(A2A3)) th c hi n 10.000.5 + 10.5.50 = 5000 + 2500 = 7500 phép nhân vô h ng (A1(A2A3)) th c hi n 100.5.50 + 10.100.50 = 25000 + 50000 = 75000 phép nhân vô h ng Hai chi phí r t khác bi t Phát bi u toán nhân xâu ma tr n í í â '‘Cho m t chu i g m n matr n, v i m i i = 1, 2, …, n, ma tr n Ai có kích th c pi-1 pi, ta m - óngngo c tích cho t i thi u hóa t ng s phép nhân vô h ng” ây m t toán t i u hóa thu c lo i khó C u tr c c a m t cách m óng ngo c t i u c 1: c tr ng hóa c u trúc c a m t l i gi i t i u Dùng Ai j ký hi u ma tr n k t qu c a vi c tính Ai Ai+1…Aj M t s m óng ngo c t i u c a tích xâu ma tr n A1.A2… An Tách xâu t i v trí n m gi a Ak Ak+1 v i m t tr nguyên k, k < n Ngh a là, tr c tiên ta tính chu i ma tr n A1 k and Ak+1 n r i nhân chúng v i cho A1.n Chi phí c a s m óng ngo c t i u = chi phí tính Al k + chí phí tính Ak+1 n, + chi phí nhân chúng l i v i Di n t l i gi i m t cách quy â , nh ng toán c a ta toán xác nh chi phí t i u ng v i s m óng ngo c cho chu i Ai.Ai+1… Aj v i i j n t m[i, j] t ng s t i thi u phép nhân vô h ng c òi h i tính ma tr n Ai j Chi phí c a cách r nh t tính c ghi m[1, n] A1 n s Gi s r ng s m óng ngo c t i u t ch i tích chu i Ai Ai+l… Aj t i gi a Ak and Ak+l, v i i k < j Thì m[i, j] b ng v i chí phí t i thi u tính Ai k Ak+1 j, c ng v i chi phí nhân hai ma tr n l i v i m[i, j] = m[i, k] + m[k+1, j] + pi-1pkpj M t c ng th c quy v y, nh ngh a quy cho chi phí t i thi u c a m t s m óng ngo c cho Ai Ai+l… Aj nh sau: m[i, j] = n u i = j, = {m[i, k] + m[k + 1, j] + pi-1pkpj.} n u i < j giúp theo dõi cách t o m t l i gi i t i u, ngh a: (5.2) nh s[i, j]: tr c a k t i ó tách tích xâu ma tr n t n m t s m óng ngo c t i u AiAi+1…Aj 10 procedure (i: integer); begin initialize selection of positions for i-th queen; repeat make next selection; if safe then begin setqueen; if i < then begin try (i + 1); if not successful then remove queen end end until successful ∨ no more positions end 69 Lu t c : M t h u có th t n công h u khác n m ng chéo bàn c m t hàng, m t c t Cách bi u di n d li u Làm cách var di n t h u bàn c ? array 8] of integer; a: array[1 8] of Boolean; b: array[b1 b2] of Boolean; c: array[c1 c2] of Boolean; v i x[i] ch v trí c a h u c t th i; a[j] cho bi t h u hàng th j; b[k] cho bi t h u ng chéo th k; c[k] cho bi t h u ng chéo th k 70 Vi c ch n tr cho m c b1, b2, c1, c2 c xác nh b i cách mà ch s c a m ng b c c tính ng chéo chi u t t Hãy ý r ng m t c ô s có giá tr c a t ng hai t a i +j, m t ng chép chi u diagonal, t t c ô s có giá tr c a hi u hai t a (i j ) Nh v y, phát bi u setqueen c tinh ch nh sau: a[j]:=false; b[i+j]:=false;c[i-j]:=false; Phát bi u removequeen c chi ti t hóa nh sau: a[j] = true; b[i+j] = true ; c[i-j] := true i u ki n safe c di n t nh sau: a[j] ∧ b[i+j] ∧ c[i-j] 71 program ( olution to eight queens problem} var i : integer; q: boolean; a : array [1 8] of boolean; b : array [2 16] of boolean; c : array [–7 7] of boolean; x : array [1 8] of integer; procedure try(i: integer; var q: boolean); var j: integer; begin j:=0; repeat j:=j+1; q:=false; if a[j] ∧ b[i+j] ∧ c[i-j] then begin x[i]:=j; a[j]:=false; b[i+j]:=false; c[i-j]:=false; if i[...]... ính tích xâu ma tr n ch cho i < j, ch ph n c a b ng m ng chéo chính m i c dùng Cho các ma tr n v i kích th A1 30 35 A2 35 15 A3 15 5 A4 5 10 A5 10 20 A6 20 25 c nh sau: Hình 5. 1 trình bày b ng m và s c tính b i th t c MATRIX-CHAIN-ORDER v i n = 6 14 M t thí d v tính tích xâu ma trân M ng m 6 5 j 4 3 2 1 i 1 2 3 4 151 5 1 050 0 51 0 50 0 1000 118 75 71 7 75 750 0 78 75 0 157 50 0 0 5 5000 0 M ng s H nh 5. 1... 118 75 71 7 75 750 0 78 75 0 157 50 0 0 5 5000 0 M ng s H nh 5. 1 1 6 5 j 4 3 2 6 0 2 i 3 4 5 4 5 5 1 1 15 M t thí d v tính tích xâu ma trân m[2,2] + m[3 ,5] + p.p2p5 = 0 + 250 0 + 35. 15. 20 = 13000 2 ,5] = min m[2,3] + m[4 ,5] + p1p2p5 = 26 25 +100 + 35. 5.30 = 71 25 m[2,4] + m[5m5] + p p p = 43 75 + 0 + 35. 10.20 = 113 75 1 4 5  = 71 25 k = 3 for A2 5 B c 4 c a ph ng pháp qui ho ch ng là t o m t l i gi i t i u... best[k] j =5 cost[k] best[k] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 0 0 4 4 4 8 8 8 12 12 12 16 16 16 20 20 20 A A A A A A A A A A A A A A A 0 0 4 5 5 8 9 10 12 13 14 16 17 18 20 21 22 A B B A B B A B B A B B A B B 0 0 4 5 5 8 10 10 12 14 15 16 18 18 20 22 24 A B B A C B A C C A C C A C C 0 0 4 5 5 8 10 11 12 14 15 16 18 20 21 22 24 A B B A C D A C C A C C D C C 0 0 4 5 5 8 10 11 13 14 15 17 18 20... x2, …, xm> và Y = là nh ng chu i, và Z = là LCS c a X và Y 1 N u xm = yn thì zk = xm = yn và Zk-1 là LCS c a Xm-1 và Yn-1 2 N u xm yn, thì zk xm hàm ý Z là LCS c a Xm-1 và Y 3 N u xm yn, thì zk yn hàm ý Z là LCS c a X và Yn-1 22 L i gi i quy ì m t LCS c a X và Y, ta có th c n tìm LCS c a X và Yn-1 và LCS c a Xm-1 và Y Nh ng m i trong hai bài toán tìm Xm-1 và Yn-1 con... 5, 7> Cho hai chu i X và Y, ta b o Z là chu i con chung (common subsequence) c a X và Y n u Z là m t chu i con c a c hai chu i X và Y Trong bài toán chu i con chung dài nh t, ta c cho hai chu i X = và Y = và mu n tìm chu i con chung dài nh t (LCS) c a X và Y 21 Ti u c u trúc t i chung dài nh t í u c a bài toán chu i con : X = và Y = 0 và xi = yj max(c[i, j-1],c[i-1,j]) n u i,j >0 và xi yj (5. 3) 23 Tính chi u dài c a m t LCS à trình (5. 3), ta có th vi t m t gi i thu t quy tìm chi u dài c a m t... lúc M i ho t ng i có th i i m b t u si và m t th i i m k t c l a ch n, ho t ng i di n ra thúc fi, mà si fi N u trong th i kho ng [si, fi) Ho t ng i và j là t ng thích n u th i kho ng [si, fi) và [sj, fj) không ph l p lên nhau (t c là, i và j là t ng thích n u si >= fj hay sj >= fi) Bài toán x p l ch các ho t ng là ch n ra m t chu i các ho t ng t ng thích v i nhau và có s ho t ng nhi u nh t 34 Gi i thu... cái túi napsac '‘M t k tr m t nh p vào m t c a hi u tìm th y có n m t hàng có tr ng l ng và giá tr khác nhau, nh ng y ch mang theo m t cái túi có s c ch a v tr ng l ng t i a là M Bài toán cái túi là tìm m t t h p các m t hàng mà k tr m nên b vào cái túi t m t giá tr cao nh t v i nh ng món hàng mà y mang i.” Bài toán này có th gi i b ng qui ho ch dùng hai b ng cost và best sau ây: ng b ng cách cost[i]... c n t d i lên Gi s ma tr n Ai có kích th c pi-1 pi v i i = 1, 2 , , n u vào là chu i tr s Th t c dùng m t b ng m[1 n, 1 n] l u các chi phí m[i, j] và b ng s[1 n, 1 n] l u giá tr nào c a v trí k mà th c c chi phí t i u khi tính m[i, j] hi n Th t c MATRIX-CHAIN-ORDER tr v hai m ng m và s 12 Th t c tính hai b ng m và s procedure MATRIX-CHAIN-ORDER(p, m, s); begin n:= length[p] - 1; for ... tính tích xâu ma trân M ng m j i 151 1 050 0 51 50 0 1000 118 75 71 75 750 78 75 157 50 0 50 00 M ng s H nh 5. 1 j i 5 1 15 M t thí d v tính tích xâu ma trân m[2,2] + m[3 ,5] + p.p2p5 = + 250 0 + 35. 15. 20... tính tích xâu ma tr n ng Thí d : A1 10 100 A2 100 A3 50 (A1(A2A3)) th c hi n 10.000 .5 + 10 .5. 50 = 50 00 + 250 0 = 750 0 phép nhân vô h ng (A1(A2A3)) th c hi n 100 .5. 50 + 10.100 .50 = 250 00 + 50 000... p.p2p5 = + 250 0 + 35. 15. 20 = 13000 2 ,5] = m[2,3] + m[4 ,5] + p1p2p5 = 26 25 +100 + 35. 5.30 = 71 25 m[2,4] + m[5m5] + p p p = 43 75 + + 35. 10.20 = 113 75  = 71 25 k = for A2 B c c a ph ng pháp qui

Ngày đăng: 03/12/2015, 23:03

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w