Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 15 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
15
Dung lượng
1,45 MB
Nội dung
h a n g e Vi e N y c PHẦN TỔNG QUAN Mục đích u cầu Mơn học giải thuật cung cấp cho sinh viên khối lượng kiến thức tương đối hồn chỉnh phân tích thiết kế giải thuật lập trình cho máy tính Sau học xong môn học này, sinh viên cần: - Nắm khái niệm thời gian thực chương trình, độ phức tạp giải thuật Biết cách phân tích, đánh giá giải thuật thơng qua việc tính độ phức tạp - Nắm giải thuật xếp phân tích đánh giá giải thuật xếp - Nắm kĩ thuật thiết kế giải thuật, vận dụng vào việc giải số toán thực tế - Nắm phương pháp tổ chức lưu trữ thông tin tập tin giải thuật tìm, xen, xố thơng tin tập tin Đối tượng sử dụng Môn học giải thuật dùng để giảng dạy cho sinh viên sau: - Sinh viên năm thứ chuyên ngành Tin học - Sinh viên năm thứ chuyên ngành Điện tử (Viễn thơng, Tự động hố…) - Sinh viên Tốn-Tin Nội dung cốt lõi Trong khn khổ 45 tiết, giáo trình cấu trúc thành chương - Chương 1: Kĩ thuật phân tích đánh giá giải thuật Chương đặt vấn đề cần phải phân tích, đánh giá giải thuật phân tích đánh giá theo phương pháp Nội dung chương tập trung vào khái niệm độ phức tạp thời gian giải thuật phương pháp tính độ phức tạp giải thuật chương trình bình thường, chương trình có gọi chương trình chương trình đệ quy - Chương 2: Sắp xếp Chương trình bày giải thuật xếp, thao tác thường sử dụng việc giải tốn máy tính Sẽ có nhiều giải thuật xếp từ đơn giản đến nâng cao giới thiệu Với giải thuật, trình bày ý tưởng giải thuật, ví dụ minh hoạ, cài đặt chương trình phân tích đánh giá - Chương 3: Kĩ thuật thiết kế giải thuật Chương trình bày kĩ thuật phổ biến để thiết kế giải thuật Các kĩ thuật gồm: Chia để trị, Quy hoạch động, Tham ăn, Quay lui Tìm kiếm địa phương Với kĩ thuật trình bày nội dung kĩ thuật vận dung vào giải toán tiếng toán người giao hàng, tốn ba lơ, tốn phủ tối thiểu - Chương 4: Cấu trúc liệu giải thuật lưu trữ Chương trình bày cấu trúc liệu dùng để tổ chức lưu trữ tập tin nhớ giải thuật tìm kiếm, xen xố thơng tin tập tin Kiến thức tiên Để học tốt mơn học giải thuật cần phải có kiến thức sau: - Kiến thức toán học - Kiến thức kĩ lập trình to k lic d o m C w o o c u -tr a c k Tổng quan Giáo trình hình thành trình đánh giá kĩ thuật giải thuật theo phương pháp tổng quan w w d o m C lic k to Giải thuật w w w w bu bu y N O W ! XC er O W F- w PD h a n g e Vi e ! XC er PD F- c u -tr a c k c h a n g e Vi e N bu y c - Kiến thức cấu trúc liệu giải thuật thao tác cấu trúc liệu Trong chương trình đào tạo, Cấu trúc liệu môn học tiên môn Giải thuật Danh mục tài liệu tham khảo [1] A.V Aho, J.E Hopcroft, J.D Ullman; Data Structures and Algorithms; Addison-Wesley; 1983 [2] Jeffrey H Kingston; Algorithms and Data Structures; Addison-Wesley; 1998 [3] Đinh Mạnh Tường; Cấu trúc liệu & Thuật toán; Nhà xuất khoa học kĩ thuật; Hà nội-2001 [4] Đỗ Xuân Lôi; Cấu trúc liệu & Giải thuật; 1995 [5] Nguyễn Đức Nghĩa, Tô Văn Thành; Tốn rời rạc; 1997 [6] Trang web phân tích giải thuật: http://pauillac.inria.fr/algo/AofA/ [7] Trang web giảng giải thuật: http://www.cs.pitt.edu/~kirk/algorithmcourses/ [8] Trang tìm kiếm giải thuật: http://oopweb.com/Algorithms/Files/Algorithms.html to k d o m o o c u -tr a c k w lic w w w d o Tổng quan m C lic k to Giải thuật w w w C bu y N O W ! XC er O W F- w PD h a n g e Vi e ! XC er PD F- c u -tr a c k c h a n g e Vi e y N c CHƯƠNG 1: KĨ THUẬT PHÂN TÍCH GIẢI THUẬT 1.1 TỔNG QUAN 1.1.1 Mục tiêu Sau học chương này, sinh viên cần phải trả lời câu hỏi sau: - Tại cần phân tích đánh giá giải thuật? - Tiêu chuẩn để đánh giá giải thuật tốt? - Phương pháp đánh nào? (đánh giá chương trình khơng gọi chương trình con, đánh giá chương trình có gọi chương trình khơng đệ quy đánh giá chương trình đệ quy) 1.1.2 Kiến thức cần thiết Các kiến thức cần thiết để học chương bao gồm: - Kiến thức toán học: Cơng thức tính tổng n số tự nhiên đầu tiên, cơng thức tính tổng n số hạng cấp số nhân, phương pháp chứng minh quy nạp kiến thức liên quan đến logarit (biến đổi logarit, tính chất đồng biến hàm số logarit) - Kĩ thuật lập trình lập trình đệ quy 1.1.3 Tài liệu tham khảo A.V Aho, J.E Hopcroft, J.D Ullman Data Structures and Algorithms AddisonWesley 1983 (Chapters 1, 9) Jeffrey H Kingston; Algorithms and Data Structures; Addison-Wesley; 1998 (Chapter 2) Đinh Mạnh Tường Cấu trúc liệu & Thuật toán Nhà xuất khoa học kĩ thuật Hà nội-2001 (Chương 1) Trang web phân tích giải thuật: http://pauillac.inria.fr/algo/AofA/ 1.1.4 Nội dung cốt lõi Trong chương nghiên cứu vấn đề sau: • Sự cần thiết phải phân tích giải thuật • Thời gian thực chương trình • Tỷ suất tăng độ phức tạp giải thuật • Tính thời gian thực chương trình • Phân tích chương trình đệ quy Nguyễn Văn Linh Trang bu to k d o m o m o c u -tr a c k w lic to k C lic w w w d o w w w Kĩ thuật phân tích giải thuật Giải thuật C bu y N O W ! XC er O W F- w PD h a n g e Vi e ! XC er PD F- c u -tr a c k c h a n g e Vi e N bu y c 1.2 SỰ CẦN THIẾT PHẢI PHÂN TÍCH GIẢI THUẬT Trong giải tốn có số giải thuật khác nhau, vấn đề cần phải đánh giá giải thuật để lựa chọn giải thuật tốt (nhất) Thơng thường ta vào tiêu chuẩn sau: 1.- Giải thuật đắn 2.- Giải thuật đơn giản 3.- Giải thuật thực nhanh Với yêu cầu (1), để kiểm tra tính đắn giải thuật cài đặt giải thuật cho thực máy với số liệu mẫu lấy kết thu so sánh với kết biết Thực cách làm khơng chắn giải thuật với tất liệu thử lại sai với liệu Vả lại cách làm phát giải thuật sai chưa chứng minh Tính đắn giải thuật cần phải chứng minh toán học Tất nhiên điều không đơn giản không đề cập đến Khi viết chương trình để sử dụng vài lần yêu cầu (2) quan trọng Chúng ta cần giải thuật dễ viết chương trình để nhanh chóng có kết , thời gian thực chương trình khơng đề cao dù chương trình sử dụng vài lần mà Tuy nhiên chương trình sử dụng nhiều lần thì yêu cầu tiết kiệm thời gian thực chương trình lại quan trọng đặc biệt chương trình mà thực cần liệu nhập lớn yêu cầu (3) xem xét cách kĩ Ta gọi hiệu thời gian thực giải thuật 1.3 THỜI GIAN THỰC HIỆN CỦA CHƯƠNG TRÌNH Một phương pháp để xác định hiệu thời gian thực giải thuật lập trình đo lường thời gian thực hoạt động máy tính xác định tập hợp chọn lọc liệu vào Thời gian thực không phụ thuộc vào giải thuật mà phụ thuộc vào tập thị máy tính, chất lượng máy tính kĩ xảo người lập trình Sự thi hành điều chỉnh để thực tốt tập đặc biệt liệu vào chọn Ðể vượt qua trở ngại này, nhà khoa học máy tính chấp nhận tính phức tạp thời gian tiếp cận đo lường thực thi giải thuật Thuật ngữ tính hiệu đề cập đến đo lường đặc biệt phức tạp thời gian trường hợp xấu 1.3.1 Thời gian thực chương trình Thời gian thực chương trình hàm kích thước liệu vào, ký hiệu T(n) n kích thước (độ lớn) liệu vào Ví dụ 1-1: Chương trình tính tổng n số có thời gian thực T(n) = cn c số Nguyễn Văn Linh Trang to k d o m o o c u -tr a c k w lic w w w d o Kĩ thuật phân tích giải thuật m C lic k to Giải thuật w w w C bu y N O W ! XC er O W F- w PD h a n g e Vi e ! XC er PD F- c u -tr a c k c h a n g e Vi e N bu y c Thời gian thực chương trình hàm không âm, tức T(n) ≥ ∀ n ≥ 1.3.2 Ðơn vị đo thời gian thực Ðơn vị T(n) đơn vị đo thời gian bình thường giờ, phút giây mà thường xác định số lệnh thực máy tính lý tưởng Ví dụ 1-2: Khi ta nói thời gian thực chương trình T(n) = Cn có nghĩa chương trình cần Cn thị thực thi 1.3.3 Thời gian thực trường hợp xấu Nói chung thời gian thực chương trình khơng phụ thuộc vào kích thước mà cịn phụ thuộc vào tính chất liệu vào Nghĩa liệu vào có kích thước thời gian thực chương trình khác Chẳng hạn chương trình xếp dãy số nguyên tăng dần, ta cho vào dãy có thứ tự thời gian thực khác với ta cho vào dãy chưa có thứ tự, ta cho vào dãy có thứ tự tăng thời gian thực khác so với ta cho vào dãy có thứ tự giảm Vì thường ta coi T(n) thời gian thực chương trình trường hợp xấu liệu vào có kích thước n, tức là: T(n) thời gian lớn để thực chương trình liệu vào có kích thước n 1.4 TỶ SUẤT TĂNG VÀ ÐỘ PHỨC TẠP CỦA GIẢI THUẬT 1.4.1 Tỷ suất tăng Ta nói hàm khơng âm T(n) có tỷ suất tăng (growth rate) f(n) tồn số C N0 cho T(n) ≤ Cf(n) với n ≥ N0 Ta chứng minh “Cho hàm khơng âm T(n) bất kỳ, ta ln tìm tỷ suất tăng f(n) nó” Ví dụ 1-3: Giả sử T(0) = 1, T(1) = tổng quát T(n) = (n+1)2 Ðặt N0 = C = với n ≥1 dễ dàng chứng minh T(n) = (n+1)2 ≤ 4n2 với n ≥ 1, tức tỷ suất tăng T(n) n2 Ví dụ 1-4: Tỷ suất tăng hàm T(n) = 3n3 + 2n2 n3 Thực vậy, cho N0 = C = ta dễ dàng chứng minh với n ≥ 3n3 + 2n2 ≤ 5n3 1.4.2 Khái niệm độ phức tạp giải thuật Giả sử ta có hai giải thuật P1 P2 với thời gian thực tương ứng T1(n) = 100n2 (với tỷ suất tăng n2) T2(n) = 5n3 (với tỷ suất tăng n3) Giải thuật thực nhanh hơn? Câu trả lời phụ thuộc vào kích thước liệu vào Với n < 20 P2 nhanh P1 (T2 a[j] tốn O(1) thời gian, lệnh {3} tốn O(1) thời gian Vịng lặp {2} thực (n-i) lần, lần O(1) vịng lặp {2} tốn O((n-i).1) = O(n-i) Vòng lặp {1} lặp có I chạy từ đến n-1nên thời gian thực vòng lặp {1} độ phức tạp giải thuật n −1 i =1 n(n − 1) = O(n2) Chú ý: Trong trường hợp vịng lặp khơng xác định số lần lặp phải lấy số lần lặp trường hợp xấu Ví dụ 1-8: Tìm kiếm Hàm tìm kiếm Search nhận vào mảng a có n số nguyên số nguyên x, hàm trả giá trị logic TRUE tồn phần tử a[i] = x, ngược lại hàm trả FALSE Nguyễn Văn Linh Trang to k d o m o c T(n) = ∑ (n − i) = w N O W ! PD m w o c u -tr a c k h a n g e Vi e lic O W N y bu to k lic C Kĩ thuật phân tích giải thuật w w d o XC er Giải thuật w w w F- w C h a n g e Vi e ! XC er PD F- c u -tr a c k c h a n g e Vi e y N c Giải thuật tìm kiếm so sánh x với phần tử mảng a, a[1], tồn a[i] = x dừng trả TRUE, ngược lại tất phần tử a khác X trả FALSE FUNCTION Search(a:ARRAY[1 n] OF Integer;x:Integer):Boolean; VAR i:Integer; Found:Boolean; BEGIN {1} i:=1; {2} Found:=FALSE; {3} WHILE(ia[j] THEN Swap(a[j-1], a[j]); END; Trong cách viết trên, chương trình Bubble gọi chương trình Swap, để tính thời gian thực Bubble, trước hết ta cần tính thời gian thực Swap Dễ thấy thời gian thực Swap O(1) bao gồm lệnh gán Trong Bubble, lệnh {3} gọi Swap nên tốn O(1), lệnh {2} thực n-i lần, lần tốn O(1) nên tốn O(n-i) Lệnh {1} thực n-1 lần nên n −1 i =1 n(n − 1) = O(n2) 1.6 PHÂN TÍCH CÁC CHƯƠNG TRÌNH ÐỆ QUY Với chương trình có gọi chương trình đệ quy, ta khơng thể áp dụng cách tính vừa trình bày mục 1.5.4 chương trình đệ quy gọi thân Có thể thấy hình ảnh chương trình đệ quy A sau: A Hình 1-2: Sơ đồ chương trình A đệ quy Nguyễn Văn Linh Trang to k d o m o c T(n) = ∑ (n − i) = w N O W ! PD m w o c u -tr a c k h a n g e Vi e lic O W N y bu to k lic C Kĩ thuật phân tích giải thuật w w d o XC er Giải thuật w w w F- w C h a n g e Vi e ! XC er PD F- c u -tr a c k c h a n g e Vi e N bu y c Với phương pháp tính độ phức tạp trình bày mục 1.5.4 khơng thể thực Bởi theo phương pháp thì, để tính thời gian thực hiên chương trình A, ta phải tính thời gian thực chương trình A vịng luẩn quẩn khơng thể kết thúc Với chương trình đệ quy, trước hết ta cần thành lập phương trình đệ quy, sau giải phương trình đệ quy, nghiệm phương trình đệ quy thời gian thực chương trình đệ quy 1.6.1 Thành lập phương trình đệ quy Phương trình đệ quy phương trình biểu diễn mối liên hệ T(n) T(k), T(n) thời gian thực chương trình với kích thước liệu nhập n, T(k) thời gian thực chương trình với kích thước liệu nhập k, với k < n Ðể thành lập phương trình đệ quy, ta phải vào chương trình đệ quy Thơng thường chương trình đệ quy để giải tốn kích thước n, phải có trường hợp dừng ứng với n cụ thể lời gọi đệ quy để giải tốn kích thước k (k0 chương trình phải gọi đệ quy Giai_thua(n-1), việc gọi đệ quy tốn T(n-1), sau có kết việc gọi đệ quy, chương trình phải nhân kết với n gán cho Giai_thua Thời gian để thực phép nhân phép gán C2 Vậy ta có Nguyễn Văn Linh Trang to k d o m o m o c u -tr a c k w lic to k C lic w w w d o Kĩ thuật phân tích giải thuật Giải thuật w w w C bu y N O W ! XC er O W F- w PD h a n g e Vi e ! XC er PD F- c u -tr a c k c h a n g e Vi e y N c T(n) = C1 nêu n = T(n - 1) + C nêu n > Ðây phương trình đệ quy để tính thời gian thực chương trình đệ quy Giai_thua Ví du 1-11: Chúng ta xét thủ tục MergeSort cách phác thảo sau: FUNCTION MergeSort (L:List; n:Integer):List; VAR L1,L2:List; BEGIN IF n=1 THEN RETURN(L) ELSE BEGIN Chia đôi L thành L1 L2, với độ dài n/2; RETURN(Merge(MergeSort(L1,n/2),MergeSort(L2,n/2))); END; END; Chẳng hạn để xếp danh sách L gồm phần tử 7, 4, 8, 9, 3, 1, 6, ta có mơ hình minh họa MergeSort sau: 9 7 9 9 6 2 6 Hình 1-3: Minh hoạ xếp trộn Hàm MergeSort nhận danh sách có độ dài n trả danh sách xếp Thủ tục Merge nhận hai danh sách L1 L2 danh sách có độ dài n , trộn chúng lại với để danh sách gồm n phần tử có thứ tự Nguyễn Văn Linh Trang bu to k d o m o m o c u -tr a c k w lic to k C lic w w w d o w w w Kĩ thuật phân tích giải thuật Giải thuật C bu y N O W ! XC er O W F- w PD h a n g e Vi e ! XC er PD F- c u -tr a c k c h a n g e Vi e y N c Giải thuật chi tiết Merge ta bàn sau, để ý thời gian để Merge danh sách có độ dài n O(n) n Gọi T(n) thời gian thực MergeSort danh sách n phần tử T( ) thời gian thực MergeSort danh sách n phần tử Khi L có độ dài (n = 1) chương trình làm việc return(L), việc tốn O(1) = C1 thời gian Trong trường hợp n > 1, chương trình phải thực gọi đệ quy MergeSort hai lần cho L1 L2 với độ dài n thời gian để gọi n hai lần đệ quy 2T( ) Ngồi cịn phải tốn thời gian cho việc chia danh sách L thành hai nửa trộn hai danh sách kết (Merge) Người ta xác đinh thời gian để chia danh sách Merge O(n) = C2n Vậy ta có phương trình đệ quy sau: T(n) = C1 nêu n = n 2T( ) + C n nêu n > 1.6.2 Giải phương trình đệ quy Có ba phương pháp giải phương trình đệ quy: 1.- Phương pháp truy hồi 2.- Phương pháp đoán nghiệm 3.- Lời giải tổng quát lớp phương trình đệ quy 1.6.2.1 Phương pháp truy hồi Dùng đệ quy để thay T(m) với m < n vào phía phải phương trình tất T(m) với m > thay biểu thức T(1) T(0) Vì T(1) T(0) số nên có cơng thức T(n) chứa số hạng liên quan đến n số Từ công thức ta suy T(n) Ví dụ 1-12: Giải phương trình T(n) = C1 nêu n = T(n - 1) + C nêu n > Ta có T(n) = T(n-1) + C2 T(n) = [T(n-2) + C2] + C2 = T(n-2) + 2C2 T(n) = [T(n-3) + C2] + 2C2 = T(n-3) + 3C2 …… T(n) = T(n-i) + iC2 Quá trình kết thúc n - i = hay i = n Khi ta có T(n) = T(0) + nC2 = C1 + n C2 = O(n) Nguyễn Văn Linh Trang 10 bu to k d o m o m o c u -tr a c k w lic to k C lic w w w d o w w w Kĩ thuật phân tích giải thuật Giải thuật C bu y N O W ! XC er O W F- w PD h a n g e Vi e ! XC er PD F- c u -tr a c k c Ví dụ 1-13: Giải phương trình T(n) = C1 nêu n = n 2T( ) + C n nêu n > n Ta có T(n) = 2T( ) + 2C n n n n T(n) = [ 2T( ) + C ] + C n = 4T( ) + 2C n 4 n n n T(n) = [ 2T( ) + C ] + 2C n = 8T( ) + 3C n 8 ……… T(n) = i T( n ) + iC n 2i Quá trình suy rộng kết thúc n i i = hay = n i = logn Khi ta có: T(n) = nT(1) + lognC2n = C1n + C2nlogn = O(nlogn) 1.6.2.2 Phương pháp đoán nghiệm Ta đoán nghiệm f(n) dùng chứng minh quy nạp để chứng tỏ T(n) ≤ f(n) với n Thông thường f(n) hàm quen thuộc logn, n, nlogn, n2, n3, 2n, n!, nn Ðơi đốn dạng f(n) có vài tham số chưa xác định (chẳng hạn f(n) = an2 với a chưa xác định) trình chứng minh quy nạp ta suy diễn giá trị thích hợp tham số C1 nêu n = n 2T( ) + C n nêu n > Ví dụ 1-12: Giải phương trình đệ quy T(n) = Giả sử đoán f(n) = anlogn Với n = ta thấy cách đốn khơng anlogn có giá trị khơng phụ thuộc vào giá trị a Vì ta thử f(n) = anlogn + b Với n = ta có, T(1) = C1 f(1) = b, muốn T(1) ≤ f(1) b ≥ C1 (*) Giả sử T(k) ≤ f(k), tức T(k) ≤ aklogk + b với k < n (giả thiết quy nạp) Ta phải chứng minh T(n) ≤ anlogn + b với n n Giả sử n ≥ 2, từ phương trình cho ta có T(n) = 2T( ) + C2n Áp dụng giả thiết quy nạp với k = n T(n) = 2T( ) + C2n n < n ta có: n ≤ 2[a log n + b] + C2n Nguyễn Văn Linh Trang 11 y bu to k d o m o c w N O W ! PD m o c u -tr a c k h a n g e Vi e lic O W N y bu to k C lic w w w d o XC er Kĩ thuật phân tích giải thuật Giải thuật w w w F- w C h a n g e Vi e ! XC er PD F- c u -tr a c k c h a n g e Vi e N bu y c T(n) ≤ (anlogn - an + 2b) + C2n T(n) ≤ (anlogn + b) + [b + (C2 - a)n] Nếu lấy a ≥ C2 + b (**) ta T(n) ≤ (anlogn + b) + [b +(C2 - C2 - b )n ] T(n) ≤ (anlogn + b) + (1-n) b T(n) ≤ anlogn + b = f(n) (do b>0 1-n b T(n) = (I.1) Ta sử dụng phương pháp truy hồi để giải phương trình Khi n > ta có n b T(n) = aT( ) + d(n) T(n)= a[aT( n n n n ) + d(n) ) + d( ) ] + d(n) = a T( ) + ad( b b b b T(n)= a [a T( = n n n n n n 3 ) + d ( ) ] + ad ( ) + d(n) = a T ( ) + a d ( ) + ad ( ) + d(n) b b b b b b i -1 n a = a T( i ) + ‡” j d( j ) a b b j= i Giả sử n = bk, trình suy rộng kết thúc i = k Khi ta T( n ) = T(1) = Thay vào ta có: bk k -1 T(n) = a + ‡” j d (b k - j ) a (I.2) k j= 1.6.2.3.1 Hàm tiến triển, nghiệm nghiệm riêng Trong phương trình đệ quy (I.1) hàm thời gian d(n) gọi hàm tiến triển (driving function) Trong công thức (I.2), ak = nlogba gọi nghiệm (homogeneous solutions) Nghiệm nghiệm xác d(n) = với n Nói cách khác, nghiệm biểu diễn thời gian để giải tất toán k -1 Trong công thức (I.2), ‡”a d (b ) gọi nghiệm riêng (particular solutions) j k- j j= Nghiệm riêng biểu diễn thời gian phải tốn để tạo toán tổng hợp kết chúng Nhìn vào cơng thức ta thấy nghiệm riêng phụ thuộc vào hàm tiến triển, số lượng kích thước tốn Khi tìm nghiệm phương trình (I.1), phải tìm nghiệm riêng so sánh với nghiệm Nếu nghiệm lớn hơn, ta lấy nghiệm làm nghiệm phương trình (I.1) Việc xác định nghiệm riêng khơng đơn giản chút nào, vậy, tìm lớp hàm tiến triển dễ dàng xác định nghiệm riêng Nguyễn Văn Linh Trang 13 to k d o m o o c u -tr a c k w lic w w w d o Kĩ thuật phân tích giải thuật m C lic k to Giải thuật w w w C bu y N O W ! XC er O W F- w PD h a n g e Vi e ! XC er PD F- c u -tr a c k c ... phân tích đánh giá giải thuật? - Tiêu chuẩn để đánh giá giải thuật tốt? - Phương pháp đánh nào? (đánh giá chương trình khơng gọi chương trình con, đánh giá chương trình có gọi chương trình khơng... 1.6.2 Giải phương trình đệ quy Có ba phương pháp giải phương trình đệ quy: 1.- Phương pháp truy hồi 2.- Phương pháp đoán nghiệm 3.- Lời giải tổng quát lớp phương trình đệ quy 1.6.2.1 Phương pháp truy... giải tốn có số giải thuật khác nhau, vấn đề cần phải đánh giá giải thuật để lựa chọn giải thuật tốt (nhất) Thơng thường ta vào tiêu chuẩn sau: 1.- Giải thuật đắn 2.- Giải thuật đơn giản 3.- Giải