1. Trang chủ
  2. » Giáo Dục - Đào Tạo

thiết kế và đánh giá thuật toán - trần tuấn minh -5 docx

16 477 2

Đ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 16
Dung lượng 1,47 MB

Nội dung

Sưu tầm bởi: www.daihoc.com.vn Thiết kế và đánh giá thuật toán - 65 - Đường đi ngắn nhất tìm được là 4 ← 6 ← 5 ← 1 , có chiều dài là 3. ợc biểu diễn bằng ma trận kề a= (a uv ) nxn ∈ = ;),(;1 Evu a mảng . Thuật toán được cài đặt như sau : queue[cuoiQ] = s; axet[s] = 1; for ( j = 1; j <= n; j++) if( a[u][j] == 1 && !Daxet[j] ) 1 6 Tìm đường đi từ đỉnh (1) đến đỉnh (4) : A(0) = {1}; A(1) = {2,3,5} A(2) = {6} A(3) = {4} c) Cài đặt Trong thuật toán BFS, đỉnh được thăm càng sớm sẽ càng sớm trở thành duyệt xong, nên các đỉnh được thăm sẽ được lưu trử trong hàng đợi queue. Một đỉnh sẽ trở thành duyệt xong ngay sau khi ta xét xong tất cả các đỉnh kề của nó . axet[ ] để đánh dấu các đỉnh được thăm, mảng Ta dùng một mảng logic D này được khởi động bằng 0 tất cả để chỉ rằng lúc đầu chưa đỉnh nào được thăm. Một mảng truoc[ ] để lưu trử các đỉnh nằm trên đường đi ngắn nhất cần tìm (nếu có), với ý nghóa Truoc[i] là đỉnh đứng trước đỉnh i trong đường đi. Mảng Truoc[ ] được khởi động bằng 0 tất cả để chỉ rằng lúc đầu chưa có đỉnh nào. Đồ thò G đư trong đó : ⎩ ∉ ;),(;0 Evu uv Hàng đợi queue ta cài đặt bằng ⎨ ⎧ BFS(s) ≡ int u, j, dauQ = 1, cuoiQ = 1; D while ( dauQ <= cuoiQ) { u = queue[dauQ]; dauQ++; { cuoiQ++; 2 5 3 4 Trần Tuấn Minh Khoa Toán-Tin Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com Sưu tầm bởi: www.daihoc.com.vn Thiết kế và đánh giá thuật toán - 66 - queue[cuoiQ] = j; Daxet[j] = 1; Truoc[j] = u; } ấy mỗi lần gọi DFS(s), BFS(s) thì mọi đỉnh cùng thành phần g với s sẽ được thăm, nên sau khi thực hiện hàm trên thì : p2 = Truoc[p1] ← … ← s . BÀI TẬP } Nhận xét : Ta có thể th liên thôn • Truoc[t] == 0 : có nghỉa là không tồn tại đường đi từ s đến t, • Ngược lại, có đường đi từ s đến t. Khi đó lời giải được cho bởi : t ← p1 = Truoc[t] ← Bài 1: Cài đặt các thuật toán : 1. Liệt kê tất cả các dãy nhò phân độ dài n. 2. Liệt kê tất cả các hoán vò của n số nguyên dương đầu tiên. 3. Liệt kê tất cả các tổ hợp chặp k trong tập gồm n số nguyen dương đầu tiên. ài toán ngựa đi tuần. øi toán n hậu. ài 2 4. Giải b 5. Giải ba 6. DFS. 7. BFS. B : c số đôi một khác nhau. . L ät a a. Bài Cho dãy a = (a , a 1 2 , . . ., an ) gồm cá 1. Liệt kê tất cả các hoán vò của dãy n phần tử của a. 2 kê tất cả các tổ hợp chặp k trong tập gồm n phần tử củie 3 : Giả sử ổ khóa có n công tắc. Mỗi công tắc có một trong 2 trạng thái “đóng” hay “mở”. Khóa mở được nếu có ít nhất [n/2] công tắc có trạng thái mở. Liệt kê tất cả các cách mở khóa. Bài 4 ( Ngựa đi tuần ). Cho bàn cờ n x n ô. Một con ngựa được phép đi theo luật cờ vua. Tìm hành trình của ngựa, bắt đầu từ ô <x 0 , y 0 > đi qua tất cả các ô của bàn cờ, mỗi ô đúng một lần. Liệt kê tất cả các hành trình. Bài 5 : Cho bàn cờ n x n ô. Một con ngựa được phép đi theo luật cờ vua. Trần Tuấn Minh Khoa Toán-Tin Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com Sưu tầm bởi: www.daihoc.com.vn Thiết kế và đánh giá thuật toán - 67 - Tìm 1 >, mỗi ô trong hành trình ngựa đ 1. Liệt kê tất cả các ha trình ngắn nhất ( có số ô trong hành trình ít nhất ) Bài hành trình của ngựa, bắt đầu từ ô <x 0 , y 0 > , ô kết thúc <x 1 , y i qua đúng một lần. ønh trình. 2. Chỉ ra hành 6 ( Ngựa đi tuần ). Cho bàn cờ n x n ô. Một con ngựa được phép đi theo luật cờ tướng. Tìm hành trình của ngựa, bắt đầu từ ô <x 0 , y 0 > đi qua tất cả các ô của bàn cờ, mỗi ô đúng một lần. Liệt kê tất cả các hành trình. Bài 7 : Một người du lòch muốn tham quan n thành phố T 1 , T 2 , . ., Tn . Xuất phát từ một thành phố nào đó, người du lòch muốn đi qua tất cả các thành phố còn lại, mỗi á T j thỏa yêu cầu bài toán (nếu có) sao cho có chi phí ít nhất. ài 8 thành phố đi qua đúng một lần rồi quay trở lại thành phố xuất phát. Gọi C ij là chi phí đi từ thành phố Ti đến thành phố T j . 1. Liệt kê tất cả các hành trình đi từ thành phố Ti đến thành phố T j thỏa yêu cầu bài toán và chi phí tương ứng. 2. Chỉ ra hành trình đi từ thành phố Ti đến thành pho B : ấp n, các phần tử của ma trận là các số tự nhiên. Ta nói ro ma trận là một ï cắt xuất phát từ một ùi, rẽ o trước : 1. Tìm 2. Tìm ập thành một dãy số không giảm. ài 9 Cho một ma trận vuông c đường đi t ng đường gấp khúc không tư ô nào đó của ma trận, sau đó có thể đi theo các hướng : lên trên, xuống dươ trái, rẽ phải. Độ dài của đường đi là số ô nằm trong đường đi. Với ô xuất phát ch một đường đi dài nhất trong ma trận, theo nghóa có nhiều ô nhất trong đường đi. đường đi dài nhất trong ma trận sao cho các ô trên đường đi l B : ôn có trọng số, trong đó V= {1, , n} . Cho G = (V,E) là một đơn đồ thò, kh g là tập đỉnh, E là tập cạnh ( hay cung). 1. Xác đònh số thành phần liên thông của G 2. Xuất các đỉnh nằm trong trong mỗi thành phần liên thông. Bài 10 : mo mảnh đất hình vuông, ta chia thành n x n ô, mỗi ô ta ghi một số là 0 hoặc Trên ät 1. Ô mang số 0 ta đào ao, mang số 1 ta trồng cỏ. Hai ô trồng cỏ có cạnh liền nhau được xem là cùng nằm trong bồn cỏ. Hãy xác đònh diện tích của bồn cỏ lớn nhất ( theo nghóa có số ô nhiều nhất ). Trần Tuấn Minh Khoa Toán-Tin Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com Sưu tầm bởi: www.daihoc.com.vn Thiết kế và đánh giá thuật toán - 68 - Bài 11 : Cho 3 ký tự A, B, C và n là một số nguyên dương. . Liệt ỗi tạo ra từ 3 ký tự trên, với chiều dài n. ø 3 ký tự trên, với chiều dài n, thỏa điều kiện ên tiếp nào giống nhau. á ký tự B là ít nhất. 1 kê tất cả các chu 2. Liệt kê tất cả các chuỗi tạo ra tư không có 2 chuỗi con li 3. Chỉ ra chuỗi thỏa (1) , (2) và sao cho so Bài 12 : G A * phần tử. Cho S ∈ N*. iả sử ⊂ N , có n ⎭ ⎬ ⎫ Xác đònh : ⎩ ⎨ = xD ,( 1 L ⎧ x, =∀∈=∈ ∑ = niAaaxSN i n i ii n n ,1,;:) 1 Bài 13 : Cho n xâu ký tự khác rổng a 1 , a 2 , . .,an , và một xâu ký tự S. Tìm cách biểu âu ai có thể không xuất hiện nhiều lần. Liệt kê tất cả ài 14 diễn S qua các xâu ai, dưới dạng ghép xâu, mỗi xa trong S, hoặc xuất hiện trong S cách cách biểu diễn. B : Bài 15 Có n đồ vật, mỗi v ật i đặc trưng bởi trọng lượng Wi và giá trò sử dụng Vi, với mọi i ∈ {1, ,n}. Cần chọn các vật này đặt vào một chiếc túi xách có giới hạn trọng lượng m, sao cho tổng giá trò sử dụng các vật được chọn là lớn nhất. : ay trong mạng giao thông hàng không. một hãng hàng không, giả sử mỗi tuyến bay xác đònh bởi các thành phần : øng bay có chiều dài ngắn nhất. Xét bài toán tìm đường b Trong cơ sở dữ liệu các tuyến bay của - Thành phố xuất phát. - Thành phố đích. - Chiều dài đường bay Với thành phố xuất phát và thành phố đich cho trước. 1. Liệt kê tất cả các đường bay. 2. Chỉ ra đươ Trần Tuấn Minh Khoa Toán-Tin Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com Sưu tầm bởi: www.daihoc.com.vn Thiết kế và đánh giá thuật toán - 69 - CHƯƠNG 4: PHƯƠNG PHÁP NHÁNH CẬN (Branch And Bound) ầuI. Mở đ 1. Ý tưởng Phương pháp quay lui, vét cạn có thể giải các bài toán tối ưu, bằng cách lựa trong tất cả các lời giải tìm được. Nhưng nhiều bài toán hông nên áp dụng phương pháp pháp quay lui khó thuật. Cho nên ta cần phải cải tiến thuật toán cải tiến, trong đó của phương pháp quay lui, dùng để như sau : ng án mẫu ( có thể xem là lời ù giá nhỏ nhất tại thời điểm đó ). Đánh giá nhánh a xây dựng có thể tốt hơn phương án mẫu ọn ớng khác. chọn phương án tối ưu k gian các lời giải là quá lớn, đ ûo ời gian cũng như kỹ ảm ba về th quay lui để hạn chế bớt việc duyệt các phương án. Có nhiều cách có phương pháp nhánh cận. Phương pháp nhánh cận là một cải tiến tìm lời giải tối ưu của bài toán. Ý tưởng chính của nó Trong quá trình duyệt ta luôn giữ lại một phươ giải tối ưu cục bộ – chẳng hạn co cận là phương pháp tính giá của phương ùn ngay trong quá trình xây dựng các thành phần của phương án theo hướng đang hay không. Nếu không ta lựa ch theo hư 2. Mô hình Giả sử ài toá Tìm Min{f(x) : x ∈ D}; =1 i b n tối ưu cho là : Với X = () ⎬ ⎫ ⎨ ⎧ ∈= ∏ )(:,, xPAaaa n in L ; niA i ,1; =∀∞< ⎩ 1 ⎭ . P là một tính hất trec ∏ ân n . = :x = (x 1 , ,x n ) quá trình liệt kê the phương pháp quay lui, ta xây dựng dần các ộ i i A 1 Nghiệm của bài toán nếu có sẽ được biểu diễn dưới dạng Trong o thành phần của nghiệm. Một bộ phận i thành phần (x 1 , , x i ) sẽ gọi là một lời giải (phương án) b phận cấp i. Ta gọi X i là tập các lời giải bộ phận cấp i, ni ,1=∀ . Đánh giá cận là tìm một hàm g xác đònh trên các X i sao cho : },1,,),,(:)({),,( 11 iiaxXaaaafMinxxg =∀=∈=≤ LL hơn giá trò của các phương án mở rộng từ lời giải bộ phận au khi tìm được hàm đánh giá cận g, ta dùng g để giảm bớt chi phí duyệt các phương án theo phương pháp quay lui. hương án mẫu), còn f* là giá trò tốt nha iini Bất đẳng thức này có nghóa là giá trò ),,( xxg L không lớn 1 i ),,( xx L . 1 i S Giả sử x* là lời giải tốt nhất hiện có (p át tương ứng f* = f(x*). Nếu ),,( 1 i xxg L > f* thì : f* < },1,,),,(:)({),,( 11 XaaaafMinxxg ini ∈=≤ LL iiax i =∀= Trần Tuấn Minh Khoa Toán-Tin Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com Sưu tầm bởi: www.daihoc.com.vn Thiết kế và đánh giá thuật toán - 70 - Nên chắc rằng các lời giải mở rộng từ sẽ không tốt hơn phương án mẫu iển lời giải bộ phận để tìm lời giải øi to . ại thành thủ tục nhánh cận như sau : Ghi nhận trạng thái mới; (i == n) hật lời giải tối ưu ; se ; kiếm theo chiều sâu trên cây ù một điều là khi tìm được x i ta cắt bỏ các nhánh con từ x i đi xuống, mà ùnh giá cận như thế nào ? ),,( 1 i xx L , do đó có thể bỏ đi không cần phát tr ),,( 1 i xx L tối ưu của ba án Thủ tục quay lui sửa l Try (i) ≡ for (j = 1 → n) if( Chấp nhận được ) { Xác đònh x i theo j; if Cập n el { Xác đònh cận ),,( 1 i xxg L if( ),,( xxg L ≤ f* ) 1 i Try (i+1); } // Trả bài toán về trạng thái cũ } Thực chất của phương pháp nhánh cận là tìm liệt kê lời giải như phương pháp quay lui, chỉ khác co mà đánh giá cận ),,( xxg > f* thì 1 i L quay lên ngay cha của nó là x i-1 . đa Vấn đề là xác đònh hàm I øi d hI. Ba toán ngøi u lòc 1. Bài toán Một ngøi du lòch muốn tham quan n thành phố T 1 , , T n . Xuất phát từ một ành ố nào đó, n ua tất cả các thành phố còn lại, mỗi ïi thành phố xuất phát. í đi từ thành phố T i đến T j . Hãy tìm một hành trình thỏa yêu sao cho chi phí là nhỏ nhất. 2. Ý tưởng th ph gười du lòch muốn đi q thành phố đi qua đúng 1 lần rối quay trở la Gọi C ij là chi ph cầu bài toán hoán vò của {1, , n} thì một ành trình thỏ yêu cầu bài toán có π(1) → π(2) → … → T π(n) . Nên có tất cả n! hành trình như thế. Nếu ta cố đònh một thành phố xuất phát, chẳng hạn T 1 , thì có (n-1)! hành ình. ài toán chuyển về dạng : Gọi π là một h dạng : T T tr B Trần Tuấn Minh Khoa Toán-Tin Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com Sưu tầm bởi: www.daihoc.com.vn Thiết kế và đánh giá thuật toán - 71 - Tìm Min{f(a 2 , , a n ) : (a 2 , , a n ) là hoán vò của {2, ,n}}. ới V 1,,,11 1322 ),,( nnn aaaaaan CCCCaaf + + + + = − LL Cách giải bài toán sẽ kết hợp đánh giá nhánh cận trong quá trình liệt kê hương án của thuật toán quay lui. 3. Thiết kế p put C = (C ij ) utput - x* = (x 1 , ,x n ) // Hành trình tối ưu - f* = f(x*) // Giá trò tối ưu ry (i) ≡ for (j = 1 → n) if( Chấp nhận được ) i Ghi nhận trạng thái mới; if(i == n) Cập nhật lời giải tối ưu; else { Xác đònh cậ ; ≤ f* ) Try (i+1); } // Trả bài toán về trạng thái cũ } • Nếu ta cố đònh xuất phát tư ø T 1 , ta duyệt vòng lặp từ j = 2. • Đánh giá nhánh cận : Đặt : CMin = Min{C ij : i, j ∈ {1, ,n} øo bước i ta tìm được lời giả bộ phận cấp i là (x 1 , ,x i ), tức là đã đi g T 1 → T 2 → . . . →T i , tương ứng với chi phí : S i = hành trình bộ phận này thành một hành trình đầy đủ, ta còn hải đi nữa, gồm n-i thành phố còn lại và đoạn quay lại T 1 . -i+1 đoạn còn lại không nhỏ hơn CMin, nên hàm đònh như sau : In O T { Xác đònh x theo j; n ),,( 1 i xxg L if( ),,( 1 i xxg L Giả sử va qua đoạn đườn ii xxxxx CCC 1322 1 − +++ L Đểâ phát triển p qua n-i+1 đoạn đường Do chi phí mỗi một trong n đánh giá cận có thể xác CMinSxxg ii )1(),,( 1 in + −+=L hành phố T j chưa đi qua. ãn trạng thài này đưđã i • Điều kiện chấp nhận được của j là t Ta dùng một mảng logic Daxet[] để biểu die ⎪ ⎨ = T jDaxet ;0 ][ ⎪ ⎧ quiợc j T ;1 ⎩ j qua đi được chưa Mảng Daxet[ ] phải được bằng 0 tất cả. h gán : x = j • Xác đònh x i theo j bằng câu lện Trần Tuấn Minh Khoa Toán-Tin Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com Sưu tầm bởi: www.daihoc.com.vn Thiết kế và đánh giá thuật toán - 72 - Cập nhật trạng thái mới : Daxet[j] = 1. Cập nhật lại chi phí sau khi tìm được x i : S = S+ C ii xx 1− vừa tìm được : for (j = 2 → n) { x[i] = j; Daxet[j] = 1; //Cap nhat toi uu ong = S + C[x[n]][x[1]]; < f*) * = Tong; } else { S + (n-i+1)*Cmin; //Danh gia can if ( g < f*) Try(i+1); Min ⎢ ⎢ ⎡ ∞ ∞ ∞ ∞ = 12726 4169 202243 1518143 C • Cập nhật lời giải tối ưu : Tính chi phí hành trình Tong = S + C ; 1 n x ếu (T ng < f ) thì N o * Lgtu = x; f* = Tong; hái : Daxet[j] = 0. • Thao tác huỷ bỏ trạng t Trả lại chi phí cũ : S = S- ii xx C 1− Thủ tục nhánh cận viết lại như sau : Try(i) ≡ if(!Daxet[j]) S = S + C[x[i-1]][x[i]]; if(i==n) { T if(Tong { Lgtu = x; f } g = } S = S - C[x[i-1]][x[i]]; Daxet[j] = 0; } h họa : Ma trận chi phí : ⎢ ⎢ 17 ⎥ ⎥ ⎢ ⎢ ⎣ ∞ 511159 ⎥ ⎥ ⎥ ⎥ ⎦ ⎤ Trần Tuấn Minh Khoa Toán-Tin Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com Sưu tầm bởi: www.daihoc.com.vn Thiết kế và đánh giá thuật toán - 73 - Cắt các nhánh này (1) f*= ∞ (1,2) 3; g = 11 (1,3) S=14; g=22 (1,4) S=18; g = 26 (1,5) S=15;g=23 S= (1,2,3) (1,2,5) S=23; g = 29 (1,2,4) g ≥ f* (=22) : 4. Cài đặt void Try(int i) int j, Tong, g; { = j; Daxet[j] if(i==n) //Cap nhat hanh trinh toi uu { { for (j = 2; j <= n; j++) if(!Daxet[j]) x[i] = 1; S = S + C[x[i-1]][x[i]]; Tong = S + C[x[n]][x[1]]; S=7; g = 13 S=25; g = 31 (1,2,3,4) S=23; g = 27 (1,2,3,5) S=11; g = 15 (1,2,3,4,5) S= 37 35; g = (1,2,3,5,4) S=16; g = 18 Cập nhật : f* = 16 + 6 = 22 rình mới : Cập nhật : f* = 35 + 9 = 44 Hành trình TU mới 1→2→3→4→5 Hành t 1→2→3→5→4 Trần Tuấn Minh Khoa Toán-Tin Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com Sưu tầm bởi: www.daihoc.com.vn Thiết kế và đánh giá thuật toán - 74 - if(Tong < Gttu) { } { if < Gttu) ][x[i]]; axet[ } g các iến : 2 thanh pho Daxet[i] = 0; ) for(j = 1; j <= n; j++) (Cmin>C[i][j]) Cmin = C[i][j]; i uu f* nh xác Gan(Httu,x,n); Gttu = Tong; } else g = S + (n-i+1)*Cmin; //Danh gia can ( g Try(i+1); } S = S - C[x[i-1] D j] = 0; } Khởi độn b void Init() { int i, j; Cmin = VC;//Chi phi nho nhat giua for(i = 1; i <= n; i++) for(i = 1; i <= n; i++ if C;//Gia tri to Gttu = V S = 0; [1] = x 1; // Xuat phat tu di 1 } I à n cái túi hII. B i toá 1. Bài toán Có n loại đồ vật, mỗi loại có số lượng không hạn chế. Đồ vật loại i, đặc i, với mọi i ∈ {1, ,n}. hiếc túi xách có giới hạn trọng lượng m, trưng bởi trọng lượng Wi và giá trò sử dụng V Cần chọn các vật này đặt vào một c sao cho tổng giá trò sử dụng các vật được chọn là lớn nhất. 2. Ý tưởng Đặt : ⎨ ⎧ == uD ⎭ ⎬ ≤∈ ∑ ⎫ ⎩ = uu n n à : D: mwNu i iin 1 1 :),,( L v + Rf → Trần Tuấn Minh Khoa Toán-Tin Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com [...]... PDF Mergevà đánh giá thuật toán Thiết kế and Split Unregistered Version - http://www.simpopdf.com - 75 n (u1 , L , u n ) a f (u1 , L , u n ) = ∑ u i vi ; (u1 ,L, u n ) ∈ D i =1 Bài toán chiếc túi xách chuyển về bài toán sau : Tìm x* ∈ D : f* = f(x*) = { f (u ) : u ∈ D} Cho nên ta sẽ kết hợp đánh giá nhánh cận trong quá trình liệt kê các lời giải theo phương pháp quay lui 3 Thiết kế thuật toán Mô hình... ⎭ ⎩ i =1 Try(i)≡ t = (m-TL)/wi ; for (j = t; j >=0 ; j ) { xi = j; TL = TL + wi*xi ; S = S + vi*xi; • Trần Tuấn Minh Khoa Toán- Tin Sưu t m b i: www.daihoc.com.vn Simpo PDF Mergevà đánh giá thuật toán Thiết kế and Split Unregistered Version - http://www.simpopdf.com - 77 - } Minh họa : i w v m=8 if(i==n) //Cap nhat toi uu { if(S > f*) { x* = x; f* = S; } } else { g = S + vi+1*(m-TL)/wi+1; //Danh gia... các vật đã được xếp vào chiếc túi : TL= i ∑x w j =1 j j = TL + xiwi - Do đó, giới hạn trọng lượng của chiếc túi còn lại là : m – TL = m - i ∑x w j =1 j j Ta có : Trần Tuấn Minh Khoa Toán- Tin Sưu t m b i: www.daihoc.com.vn Simpo PDF Mergevà đánh giá thuật toán Thiết kế and Split Unregistered Version - http://www.simpopdf.com - 76 - { } Max f (u ) : u = (u1 , L , u n ) ∈ D; u j = x j , ∀j = 1, i = ⎧... (int)((m-Tl)/w[i]); for (j = t; j >=0 ; j ) { x[i] = j; Tl = Tl + w[i]*x[i]; //Trong luong thu duoc S = S + v[i]*x[i]; //Gia tri thu duoc if(i==n) //Cap nhat toi uu { Trần Tuấn Minh Khoa Toán- Tin Sưu t m b i: www.daihoc.com.vn Simpo PDF Mergevà đánh giá thuật toán Thiết kế and Split Unregistered Version - http://www.simpopdf.com - 79 - } else { if(S > Gttu) { Gan(); Gttu = S; } g = S + v[i+1]*(m-Tl)/w[i+1];... A, B, C và n là một số nguyên dương Xác đònh chuỗi thỏa tạo ra từ 3 ký tự trên, với chiều dài n, thỏa điều kiện không có 2 chuỗi con liên tiếp nào giống nhau và sao cho số ký tự B là ít nhất Trần Tuấn Minh Khoa Toán- Tin Sưu t m b i: www.daihoc.com.vn Simpo PDF Mergevà đánh giá thuật toán Thiết kế and Split Unregistered Version - http://www.simpopdf.com - 80 Bài 3 : Tìm lời giải tối ưu bài toán : ⎧10... } } else { g = S + vi+1*(m-TL)/wi+1; //Danh gia can if ( g > f*) Try(i+1); } TL = TL – wi*xi; S = S - vi*xi; 1 5 10 2 3 5 3 2 3 Trần Tuấn Minh 4 4 6 Khoa Toán- Tin Sưu t m b i: www.daihoc.com.vn Simpo PDF Mergevà đánh giá thuật toán Thiết kế and Split Unregistered Version - http://www.simpopdf.com - 78 - Gốc f* = 0 x1=1 x1=0 (1) S = 10; TL = 5; g = 15; x2=1 (0) S=0; TL = 0 ; g = 10; x2 =0 Cắt 2 nhánh... toán; } • Cách chọn vật : ⎛v v ⎞ Xét mảng đơn giá : Dg = ⎜ 1 , L, n ⎟ ⎜w wn ⎟ ⎠ ⎝ 1 Ta chọn vật theo đơn giá giảm dần Không mất tính tỏng quát, ta giả sử các loại vật cho theo thứ tự giảm dần của đơn giá • Đánh giá cận trên : Giả sử đã tìm được lời giải bộ phận : (x1 ,L, xi ) Khi đó : - Giá trò của túi xách thu được : S = i ∑x v j =1 j j = S + xjvj - Tương ứng với trọng lượng các vật đã được xếp vào... tìm được một lời giải, ta so sánh lời giải này với lời giải mà ta coi là tốt nhất vào thời điểm hiện tại để chọn lời giải tối ưu • Các khởi tạo giá trò ban đầu : - x* = 0 ; //Lời giải tối ưu của bài toán - f* = f(x*) = 0; // Giá trò tối ưu - S = 0; / /Giá trò thu được từng bước của chiếc túi - TL = ; //Trọng lượng xếp vào chiếc túi từng bước Ta viết lại thủ tục nhánh cận trên : Input m, v=(v1, , vn)... → Max ⎪ ⎨5 x1 + 3x 2 + 2 x3 + 4 x 4 ≤ 8 ⎪x , x , x , x ∈ N ⎩ 1 2 3 4 Bài 4 : Giả sử có n công việc và n thợ Chi phí trả cho người thợ i để làm công việc j là Cij Mỗi công việc chỉ do một thợ thực hiện và ngược lại Tìm cách thuê các thợ làm việc sao cho tổng chi phí là nhỏ nhất Trần Tuấn Minh Khoa Toán- Tin Sưu t m b i: www.daihoc.com.vn ... Gttu) Try(i+1); } Tl = Tl - w[i]*x[i]; S = S - v[i]*x[i]; } } //************* void Init() { for (int i = 1; i . 5 3 4 Trần Tuấn Minh Khoa Toán- Tin Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com Sưu tầm bởi: www.daihoc.com.vn Thiết kế và đánh giá thuật toán - 66 - . cờ vua. Trần Tuấn Minh Khoa Toán- Tin Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com Sưu tầm bởi: www.daihoc.com.vn Thiết kế và đánh giá thuật toán - 67 - Tìm 1 . nhất ). Trần Tuấn Minh Khoa Toán- Tin Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com Sưu tầm bởi: www.daihoc.com.vn Thiết kế và đánh giá thuật toán - 68 - Bài

Ngày đăng: 21/07/2014, 23:22

TỪ KHÓA LIÊN QUAN

w