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

Thiết kế và phân tích thuật toán

18 897 4

Đ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

http://caohoc.net/Forum/forum_posts.asp?TID=93&PN=1 Thiết kế và phân tích thuật toán BÀI TẬP 1 1. Chứng minh rằng thuật toán sắp xếp Pigeonhole sắp xếp mảng gồm n số nguyên dương, mỗi số có giá trị không quá 10000, có độ phức tạp tính toán O(n). procedure Pigeonhole (T[1 n]) (* Sắp xếp các số nguyên trong khoảng từ 1 đến 10000) array U[1 10000]; for k:= 1 to 10000 do U[k] := 0; for i := 1 to n do U[T] := U[T] + 1; i := 0; for k:= 1 to 10000 do begin while U[k] <> 0 do begin i := i+1; T := k; U[k] := U[k]-1; end; end; 2. Hỏi phép cộng hay trừ hai số nguyên có độ dài m và n đòi hỏi thời gian tính là bao nhiêu? Mô tả thuật toán tương ứng. 3. Chứng minh rằng việc tính f n sử dụng hàm Fibrec đòi hỏi f n-i+1 lần gọi Fibrec(i) với i=1,2,…,n, và f n-1 lần gọi hàm Fibrec(0): function Fibrec(n) if n<2 then return n else return Fibrec(n-1) + Fibrec(n-2) 4. Gọi g(n) là số xâu nhị phân độ dài n không chứa hai số 0 liền nhau. Chứng minh rằng g(n) = f n+2 . 5. Giả sử f, g: N → R + . Chứng minh rằng a) O(f(n)) = O(g(n)) khi và chỉ chi f(n) ÎΘ(n) khi và chỉ khi Θ(f(n)) = Θ(g(n)). b) O(f(n)) + O(g(n)) = O(f(n)) + O(g(n)) = O(max(f(n), g(n)) = max (O(f(n), O(g(n)) 6. Giả sửt t: N → R + xác định theo công thức đệ quy t(1) = a, t(n) = 4 t(én/2ù) + b n, n>2, trong đó a và b là các hằng số dương. Chứng minh bằng quy nạp: t(n) là không giảm. 7. Sắp xếp các hàm sau đây theo thứ tự tốc độ tăng từ thấp đến cao. Nếu có hai (hoặc nhiều hơn) hàm có cùng tốc độ tăng, hãy chỉ rõ điều đó. (Không cần chứng minh). n; 2 n ; n k ; n log n; log n; 192; n - n 3 + 7 n 5 ; log (log n); n 3; (log n) 2 ; n!; 2 2n ; n 2 n ; 8. Xét thuật toán sau procedure waste(n) for i := 1 to n do for j := 1 to i do writeln(i, j, n) if n > 0 then for i := 1 to 4 do waste( n div 2) Gọi T(n) là số dòng ở đầu ra của lệnh gọi waste(n). Xây dựng công thức đệ quy để tính T(n). Sử dụng Định lý thợ để chỉ ra bậc chính xác của T(n). 9. Để tính X N , trong đó N là số nguyên dương, có thể sử dụng một trong các thuật toán sau: function power1(X,N); begin if N = 1 then return(X) else returnX*power1(X, N-1) end; function power2(X,N); begin if N = 1 then return(X) else begin HALF := N/2; HALFPOWER := power2(X, HALF); if 2*HAFL = N {N chẵn}; then return (HALFPOWER*HALFPOWER) else return (HALFPOWER*HALFPOWER*X) {N lẻ} end; end; function power3(X,N); begin if N = 1 then return(X) else begin HALF := N/2; if 2*HAFL = N {N chẵn } then return (power3(X,HALF)*power3(X,HAFL)) else return ((power3(X,HALF)*power3(X,HAFL)*X {N lẻ} end; end; Hãy tìm công thức đệ quy cho T1(N), T2(N), T3(N) là thời gian tính trong tình huống xấu nhất của power1, power2, power3, theo thứ tự tương ứng. Để đơn giản, được phép giả thiết N là số mũ của 2, nghĩa là N = 2 k , với K nguyên dương nào đó. Từ đó đánh giá tốc độ tăng của chúng trong ngôn ngữ ký hiệu O lớn. 10. Xét hàm trên Pascal function Recursive(n: integer): longint; var x, y: integer; begin if n <= 1 then begin Recursive := 0; exit; end; x := Recursive(n-1); y := Recursive(n-1); Recursive := x+y; end; Ký hiệu T(n) là thời gian tính của việc thực hiện lệnh gọi z := Recursive(n) Hãy đưa ra đánh giá của T(n) trong kí hiệu O. 11. Giải công thức đệ quy t 0 = 0, t 1 = 1, t n = 5 t n-1 - 6 t n-2 , n ≥ 2. Viết so sánh bậc của t n trong ngôn ngữ ký hiệu Θ. 12. Giải công thức đệ quy T(0) = a, T(1) = a, T(n) = T(n-1) + T(n-2) + c, n ≥ 2. trong đó a, c là các hằng số dương. Viết so sánh bậc của T n trong ngôn ngữ ký hiệu Θ. 13. Giải công thức đệ quy T(0) = a, T(1) = a, T(n) = T(n-1) + T(n-2) + cn, n ≥ 2. trong đó a, c là các hằng số dương. Viết so sánh bậc của T n trong ngôn ngữ ký hiệu Θ. Bài tập chương 5 QUY HOẠCH ĐỘNG 1. Tìm trình tự nhân tối ưu để tính tích của dãy ma trận A 1 ×A 2 ×A 3 ×A 4 ×A 5 , trong đó kích thước của các ma trận lần lượt là: A 1 A 2 A 3 A 4 A 5 10×4 4×5 5×20 20×2 2×50 2. Xét bài toán sau: Cho dãy gồm n số nguyên dương a 1 , a 2 , , a n và số nguyên dương k. Cần tìm dãy con gồm nhiều phần tử nhất của dãy đã cho có tổng chia hết cho k. Sử dụng phương pháp quy hoạch động thiết kế thuật toán giải bài toán đặt ra. Đánh giá thời gian tính của thuật toán đề nghị. 3. Xét Bài toán về các đoạn thẳng không giao nhau có trọng số Đầu vào: Cho họ các đoạn thẳng mở: C = {(a 1 ,b 1 ), , (a n ,b n )}. Đoạn thẳng (a i ,b i ) được gán với trọng số c i , i = 1,2, ,n. Đầu ra: Tập các đoạn không giao nhau có tổng các trọng số là lớn nhất. Thiết kế thuật toán giải bài toán đặt ra. Phân tích thời gian tính và bộ nhớ của thuật toán. 4. Phát triển thuật toán đa thức giải bài toán tìm xâu con chung dài nhất của ba xâu A, B, C: Input: 3 xâu A, B, C. Output: Xâu con chung dài nhất S của 3 xâu A, B và C. 5. Phát triển thuật toán đa thức giải bài toán tìm xâu ngắn nhất phủ hai xâu A và B. Xâu C được gọi là xâu phủ của A nếu A là xâu con của C. 6. Cho cây T với trọng số nguyên trên cạnh. Trọng số có thể là số dương, âm hay bằng không tùy ý. Xây dựng thuật toán thời gian tuyến tính để tìm đường đi đơn ngắn nhất trên cây T. Nhắc lại là đường đi đơn là đường đi mà không có đỉnh nào xuất hiện trên nó quá một lần. Độ dài đường đi là tổng trọng số của các cạnh trên đường đi. Lưu ý là không có hạn chế gì về hai đỉnh đầu và cuối của đường đi. 7. Xét bài toán thuê xe sau đây. Bạn nhận nhiệm vụ chuyển công văn hỏa tốc. Trên tuyến đường đi từ địa điểm xuát phát đánh số là 1 đến địa điểm cần chuyển giấy mời đánh số là n có n-2 địa điểm trung gian được đánh số từ 2 đến n-1. Tại địa điểm i bạn có thể thuê xe ôm để đi đến địa điểm j>i với thời gian t(i,j) (phút). Giả thiết rằng thời gian đổi xe là bằng 0. Hãy phát triển thuật toán tìm cách đi bằng xe ôm để đạt đích với thời gian nhanh nhất và đánh giá độ phức tạp tính toán của thuật toán đề nghị. Ví dụ: Khi n = 5 và thời gian t(i,j) cho trong bảng T(i,j) 1 2 3 4 Thời gian cần tìm sẽ là 5. 1 0 2 3 7 Cách đi: 2 0 2 4 + Thuê xe ở điểm 1 đến điểm 3 (mất 3 phút), 3 0 2 + Từ 3 tiếp tục thuê xe về đích (mất 2 phút). Giải bài tập chương 3 THUẬT TOÁN THAM LAM Bài 1. Xét bài toán INPUT: tập S = {(x i , y i ) | 1 £ i £ n} – các khoảng trên trục số thực. OUTPUT: Tập con với các lực lượng lớn nhất S* của S sao cho không có 2 khoảng nào trong S* là có điểm chung Xét thuật toán sau: Lặp lại cho đến khi S là rỗng các thao tác sau: 1. Chọn khoảng I có điểm chung với một số ít nhất các khoảng khác 2. Bổ sung I vào tập cần tìm S* 3. Loại bỏ mọi khoảng có điểm chung với I Hãy chứng minh tính đúng đắn của thuật toán hoặc nêu phản ví dụ cho nó Giải: Giải thuật này không giải quyết được bài toán đặt ra. Hãy quan sát ví dụ sau: E A B C D Rõ ràng, phương án tối ưu là {A, B, C, D}. Tuy nhiên, khoảng có ít điểm chung nhất với các khoảng khác là E, và giải thuật đề ra sẽ chọn E đầu tiên, khi đó sẽ phải bỏ qua hai khoảng B và C và sẽ không đạt được phương án tối ưu. Bài 2. Xét bài toán tô màu khoảng (Interval Coloring Problem). INPUT: Tập S = {(x i ,y i ) | 1 ≤ i ≤ n} - các khoảng trên trục số thực. Hãy coi rằng mỗi khoảng (x i ,y i ) tương ứng với một yêu cầu sử dụng phòng học bắt đầu từ thời điểm x i , kết thúc tại y i . OUTPUT: Tìm các phẩn bổ lớp vào phòng sao cho số phòng cần sử dụng là ít nhất. Chú ý là mỗi yêu cầu sử dụng phòng cần được thỏa mãn và không có 2 lớp nào sử dụng cùng một phòng tại cùng một thời điểm. (a) Xét thuật toán lặp sau đây: Phân bổ một số nhiều nhất có thể được các lớp phòng thứ nhất, sau đó phân bổ một số nhiều nhất có thể các lớp vào phòng thứ hai, rồi đến phòng thứ ba…v…v… Hỏi rằng thuật toán vừa nêu có cho lời giải đúng của bài toán tô màu khoảng? Giải thích câu trả lời của bạn. (b) Xét thuật toán sau: Lầm lượt xét các lớp theo thứ tự tăng dần của thời điểm bắt đầu. Giả sử đang xét lớp C, nếu có phòng R đã được sử dụng để xếp một lớp nào đấy và C có thể xếp vào phòng này mà không mâu thuẫn với các lớp đã xếp vào R trước đó thì xếp C vào R. Nếu trái lại xếp C vào phòng mới. Hỏi rằng thuật toán vừa nêu có cho lời giải đúng của bài toán tô màu khoảng? Giải thích câu trả lời của bạn. Giải: (a) Giải thuật này không giải quyết được bài toán tô màu khoảng. Hãy xem xét các khoảng cho dưới đây. Giải pháp tối ưu là đặt A vào một phòng, {B, C, D}vào phòng khác, và {E, F, G} vào phòng khác nữa, tổng cộng là sử dụng 3 phòng. Tuy nhiên, nếu đưa số lượng lớn nhất các lớp vào phòng đầu tiên, kết quả sẽ đặt {B, C, F, G} vào cùng một phòng, còn các lớp A, D, và G mỗi lớp sẽ phải đặt trong một phòng riêng, tổng cộng là 4 phòng. (b) Giải thuật này giải quyết được bài toán tô màu khoảng. Lưu ý rằng nếu giải thuật tham lam này sử dụng N phòng để sắp cho cho tập các lớp C, khi đó rõ ràng phải có N lớp muốn họp ở cùng một lúc. Do đó, N phòng là số lượng ít nhất có thể sử dụng để sắp xếp C lớp. 3. Xét bài toán đổi tiền sau: Đầu vào là số nguyên L. Đầu ra là số lượng ít nhất các đồng tiền để đổi lượng tiền L. Các đồng tiền có mệnh giá là 1, 2, 2 2 , … , 2 1000 . Giả thiết rằng số lượng đồng tiền của mỗi mệnh giá là không hạn chế. Xét thuật toán đổi tiền sau đây: Sử dụng nhiều nhất đồng tiền có mệnh giá cao nhất. Ví dụ L = 31: Sử dụng 1 đồng tiền 2 4 ; còn lại giá trị 15, lại lấy 1 đồng tiền 2 3 ; còn lại giá trị 7, lấy 1 đồng tiền 2 2 ; giá trị còn lại 3 cần đổi bởi một đồng 2 1 và 1 đồng 2 0 . Hỏi thuật toán này có cho lời giải tối ưu của bài toán không? Giải thích câu trả lời của bạn. [...]... và T’ giống G hơn T (mâu thuẫn) Chương 4 CHIA ĐỂ TRỊ Bài 1 Thiết kế thuật toán nhân 2 số nguyên dương, sử dụng thuật toán chia để trị, trong đó mỗi số nguyên dương được chia làm 3 phần, và tích của 2 số đó sẽ tìm được sau 5 phép nhân số này với độ dài xấp xỉ n/3 Phân tích độ phức tạp tính toán trong thuật toán thu được Giải: Phân tích độ phức tạp của thuật toán thu được: Thời gian thực thi thuật toán. .. đắn của thuật toán hoặc nêu phản ví dụ cho thuật toán vừa nêu Giải: (a) Thuật toán này là không đúng cho bài toán cực tiểu hóa độ lệch trung bình giữa học sinh và đôi giầy của họ Cho p1 = 5, p2 = 10, s1 = 9 và s2 = 14 Thuật toán sẽ ghép cặp p1 với s2 và p2 với s1 và độ lệch trung bình: ½(1+9) = 5 Trong khi đó nếu ghép cặp p1 với s1 và p2 với s2 thì độ lệch trung bình là ½(4+4) = 4 (b) Giải thuật là... i nhận đôi giày a(i) thì độ lệch trung bình của cách phân giày này là: (a) Xét thuật toán tham lam sau; Tìm học sinh và đôi giày có độ chênh lệch nhỏ nhất Phân đôi giày tìm được cho học sinh này Lặp lại với các học sinh và các đôi giày còn lại Hãy chứng minh tính đúng đắn của thuật toán hoặc nêu phản ví dụ cho thuật toán vừa mô tả (b) Xét thuật toán tham lam sau: Đôi giày bé nhất cho học sinh có yêu... quan hệ truy toán như sau: T(n) = 5T(n/3) + G(n) trong đó, 5T(n/3) là thời gian để tính 5 phép nhân đệ qui và G(n) Θ(n) là thời gian cần thiết để thực hiện các phép công, dịch chuyển và nâng lên Áp dụng trường hợp 1 của định lý thợ, ta có T(n) Θ(nlog ), và log = 1.465 Do vậy, thuật toán này tốt hơn thuật toán hai phép nhân Chương 5 QUY HOẠCH ĐỘNG Bài 1 Tìm trình tự nhân tối ưu để tính tích của dãy... sau cùng là ai thì những kí tự trước đó là kết quả cho bài toán toán con của a1,…,ai-1 và b1…bj Nếu kí tự sau cùng là bj thì những kí tự trước đó là kết quả cho bài toán con của a1,…,ai và b1…bj-1 Do vậy, có M(i, j) = Việc cập nhật bảng có thể nhúng vào hai vòng lặp lồng nhau, vòng thứ 1 chạy từ i = 1 đến m và vòng vòng thứ 2 chạy từ j = 1 to n Từ đó có giải thuật với thời gian là Θ(n2) Chú ý là xâu... Phát triển thuật toán đa thức giải bài toán tìm xâu ngắn nhất phủ hai xâu A và B Xâu C được gọi là xâu phủ của A nếu A là xâu con của C Giải: Chúng ta đưa ra giải thuật tìm xâu ngắn nhất phủ hai xâu A và B: o Đặt A = a1…am và B = b1…bn o Gọi M[i,j] là độ dài của xâu ngắn nhất phủ hai xâu a1…ai và b1…bj, trong đó 1≤i≤m, 1≤j≤n o Chú ý rằng kí tự sau cùng trong xâu ngắn nhất phủ hai xâu a1…ai và b1…bj có... đơn kết thúc tại v trong cây con có gốc tại v Tại nút v, giải thuật tính đệ qui best(wi) và root-best(wi) với mỗi cây con Tiếp theo giải thuật tính best(wi) và root-best(wi) bằng cách sử dụng các quan hệ truy toán tương ứng với hai trường hợp nói trên như sau: Không quá khó nhưng cũng không phải là tầm thường để thấy rằng giải thuật này có thể thực hiện trong thời gian tuyến tính Chương 8: THUẬT TOÁN... THUẬT TOÁN GẦN ĐÚNG Bài 1 Xét bài toán phủ đỉnh: Tìm phủ đỉnh lực lượng nhỏ nhất của đồ thị vô hướng G=(V,E) (Tập S V được gọi là phủ đỉnh nếu mỗi cạnh của G đều có ít nhất một đầu mút trong S Xét thuật toán gần đúng: (a) Chọn cạnh e=(v,w) của G (b) Bổ sung v và w vào S (c) Loại v và w và tất cả các cạnh kề của chúng khỏi G (d) Quay lại bước (a) Đưa ra ví dụ để thuật toán trên không cho lời giải tối... toán cực tiểu hóa độ lệch trung bình giữa kích thước yêu cầu của học sinh với kích thước giầy Ta sẽ chứng minh bằng phản chứng Giả sử học sinh và các đôi giày được đánh số theo kích thước tăng dần Nếu thuật toán tham lam đã cho là không đúng, thì phải có p1,…, pn s1,…, sn mà thuật toán không cho lời giải tối ưu Giả sử là phương án tối ưu giống nhất với G = {(p1,s1),…,(pn, sn)} là đầu ra của thuật toán. .. triển thuật toán đa thức giải bài toán tìm xâu con chung dài nhất của ba xâu A, B, C: Input: 3 xâu A, B, C Output: Xâu con chung dài nhất S của 3 xâu A, B và C Giải: Lời giải cho bài toán tìm xâu con chung dài nhất của ba xâu kí tự về cơ bản cũng giống như lời giải trong trường hợp 2 xâu Bằng cách xem T(I,j,k) là một mảng đầu vào và cập nhật bảng một cách phù hợp, chúng ta có thểcó được giải thuật . các trọng số là lớn nhất. Thiết kế thuật toán giải bài toán đặt ra. Phân tích thời gian tính và bộ nhớ của thuật toán. 4. Phát triển thuật toán đa thức giải bài toán tìm xâu con chung dài. 3 phần, và tích của 2 số đó sẽ tìm được sau 5 phép nhân số này với độ dài xấp xỉ n/3. Phân tích độ phức tạp tính toán trong thuật toán thu được. Giải: Phân tích độ phức tạp của thuật toán thu. http://caohoc.net/Forum/forum_posts.asp?TID=93&PN=1 Thiết kế và phân tích thuật toán BÀI TẬP 1 1. Chứng minh rằng thuật toán sắp xếp Pigeonhole sắp xếp mảng gồm n số nguyên dương, mỗi số có giá trị không quá 10000, có độ phức tạp tính toán

Ngày đăng: 12/04/2015, 14:08

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w