Bài giảng Cơ sở toán học – Bài 1: Thuật toán đánh giá và tiếp cận cung cấp cho người học kiến thức về thuật toán; độ phức tạp thuật toán; tiếp cận giải quyết bài toán. Mời các bạn cùng tham khảo bài giảng để nắm chi tiết nội dung kiến thức.
Bài Thuật toán đánh giá tiếp cận Các vấn đề Thuật toán Khái niệm Đặc trưng Độ phức tạp thuật tốn Cơ sở tốn học Tính tốn độ phức tạp thuật toán Tiếp cận giải toán Các bước tiếp cận, giải thuật toán Xu hướng tiếp cận, giải toán Cơ sở toán học/2 of 59 Thuật toán Khái niệm thuật toán Định nghĩa: Một thuật toán liệt kê dẫn, quy tắc cần thực theo bước xác định nhằm giải toán cho khoảng thời gian hữu hạn Cơ sở toán học/3 of 59 Thuật tốn Ví dụ: 2.1 Mơ tả thuật tốn tìm số lớn dãy hữu hạn số nguyên Đặt giá trị cực đại tạm thời số nguyên dãy; So sánh số nguyên với giá trị cực đại tạm thời, lớn giá trị cực đại tạm thời đặt giá trị cực đại tạm thời số nguyên Lặp lại bước 2) số nguyên dãy Giá trị cực đại tạm thời thời điểm số nguyên lớn dãy Cơ sở toán học/4 of 59 Thuật tốn Ta viết lại thuật tốn theo cách thức khác gọi dạng giả mã: Dữ liệu vào (input): a[1 n], a mảng số nguyên, n>0 số số mảng a; Dữ liệu (output): max, số lớn mảng a; int TimMax(a: mảng số nguyên); max = a[1]; for i:2 -> n if (max < a[i] ) max = a[i]; return max; Cơ sở toán học/5 of 59 Thuật tốn Như vậy, mơ tả (hay xây dựng) thuật toán cần ý tới yếu tố sau: Dữ liệu đầu vào: Một thuật tốn phải mơ tả rõ giá trị đầu vào từ tập hợp liệu xác định Ví dụ, dãy số nguyên a(1), a(2), ,a(n), với nb Cơ sở tốn học/59 of 59 Độ phức tạp thuật tốn Ví dụ 2.9 Đánh giá số phép chia số nguyên thuật tốn Euclid để tìm ước số chung lớn hai số nguyên a b, a>b x:= a; y:=b; While y>0 r := x mod y; x := y; y := r; End While Cơ sở toán học/60 of 59 Độ phức tạp thuật tốn Ví dụ 2.9 Đánh giá số phép chia số nguyên thuật toán Euclid để tìm ước số chung lớn hai số nguyên a b, a>b x:= a; y:=b; While y>0 r := x mod y; x := y; y := r; End While Đáp số: O(log2b) Cơ sở toán học/61 of 59 Tiếp cận thuật toán Bước 1: Xác định toán Nhiệm vụ giai đoạn làm rõ u cầu đặt tốn Có thể đặt trả lời số câu hỏi: Bài tốn đặt vấn đề phải giải Giải vấn đề phạm vi nào? Xếp thứ tự tầm quan trọng yêu cầu đặt Ví dụ, tốn đặt “Giải hệ phương trình đại số tuyến tính có số phương trình số ẩn” u cầu tốn “tìm nghiệm hệ phương trình đại số tuyến tính n phương trình, n ẩn” u cầu quan trọng “độ xác nghiệm” Cơ sở tốn học/62 of 59 Tiếp cận thuật toán Bước 2: Phân tích tốn lựa chọn cách giải Với tốn đặt thường có nhiều cách giải Chúng khác thời gian thực hiện, dung lượng nhớ cần thiết, độ xác đạt Tuỳ theo yêu cầu điều kiện mà lựa chọn cách tiếp cận cho thích hợp Ví dụ, với tốn lựa chọn giải trường hợp hệ có nghiệm Cơ sở toán học/63 of 59 Tiếp cận thuật toán Bước 3: Xây dựng thuật toán (thuật giải) Trên sở mơ hình xây dựng từ hai bước trước (chính yêu cầu điều kiện) chi tiết hoá bước thực lựa chọn thuật toán biết phù hợp với toán Cơ sở toán học/64 of 59 Tiếp cận thuật tốn Bước 4: Viết chương trình theo thuật toán (thuật giải) lựa chọn Dựa vào thuật toán (thuật giải) xây dựng, lựa chọn ngôn ngữ lập trình phù hợp với thuật tốn liệu để thiết kế chương trình Cơ sở tốn học/65 of 59 Tiếp cận thuật toán Bước 5: Xây dựng chương trình, thử nghiệm, triển khai Cơ sở tốn học/66 of 59 Tiếp cận thuật tốn Ví dụ: tìm số có giá trị lớn thứ mang a[0 n1] Ví dụ 1, 2, 5, 3, 7, 8, 3, 5, 8: số cần tìm Giải quyết: Yêu cầu tốn: Tìm số có giá trị lớn thứ Đầu vào mảng có n phần tử Số có giá trị thứ 2: Sắp xếp, sau tìm phần tử có giá trị lớn thứ Dùng vịng lặp thứ tìm phần tử lớn thứ nhất, vịng lặp thứ tìm phần tử thứ Dùng vịng lặp, số lớn số đầu tiền, tìm số thứ khác số thứ so sánh để lấy số thứ duyệt đến cuối, số lớn số lớn số lớn số lớn thứ 2, ngược lại lớn số thứ cập nhật số thứ Cơ sở toán học/67 of 59 Tiếp cận thuật toán Giải (t): int secondmax(int a[]) M1=a[0]; For(i=1;a[i]==m1 && im2) m[2=a[j] Return m2 Cơ sở toán học/68 of 59 Tiếp cận thuật tốn Chia để trị Bài tốn lớn khơng giải Chia thành toán nhỏ hơn, đến mức giải Ví dụ: f(n) = f(n-1)+f(n-2), f(0)=2, f(1)=2; Nếu biết f(n-1), f(n-2) tính f(n), n>n-1>n-2 quy mơ tốn? Hàm tính f(n-1) f(n-2) tương tự với f(n) khác quy mô! => Ý tưởng đề quy => Ý tưởng tính tốn giá trị f(0) , (f1) , …, f(n-2), f(n-1) -> f(n) Hướng tiếp cận khác nhau, hiệu khác thời gian tính tốn, sử dụng nhớ Cơ sở tốn học/69 of 59 Các vấn đề Thuật toán Khái niệm Đặc trưng Độ phức tạp thuật toán Cơ sở toán học Tính tốn độ phức tạp thuật tốn Tiếp cận giải toán Các bước tiếp cận, giải thuật toán Xu hướng tiếp cận, giải toán Cơ sở toán học/70 of 59 Bài tập Các phép tương quan ứng với kí hiệu O, o, Ω, ≈ có tính bắc cầu hay khơng (ví dụ, f(x) = O(g(x)), g(x) = O(h(x)) suy f(x) = O(h(x)))? Chứng tỏ f(n) = O(logan), với a>1, f(n) = O(logbn), với b>1 Chứng minh n logn = O(n2) Chứng minh lg(n+1) = lg n +1 Tìm hàm f(x) cho f(x) = O(x1+ε), với ε > 0, f(x) ≠O(x) Cơ sở toán học/71 of 59 Bài tập Chứng minh mệnh đề f(n) = O((2+ε)n) tương đương với mệnh đề f(n) = o((2+ε)n), với ε > Chứng tỏ T(n) = no(1) tồn số k >0 cho T(n) = O(nk) Chứng minh lg(n!) = O(n lg n) n! = o(nn) Chứng minh rằng, f(n) g(n) hàm đơn điệu tăng, f(n) + g(n) f(g(n)) hàm đơn điệu tăng Xây dựng thuật tốn tìm số bit số xâu bit s, số nguyên n So sánh thuật toán Cơ sở tốn học/72 of 59 Bài tập Mơ tả thuật toán chèn số nguyên vào mảng xếp tăng dần Mơ tả thuật tốn tìm số cực đại dãy hữu hạn số thực Mơ tả thuật tốn tìm từ dài xâu kí tự (ta hiểu từ xâu chữ liên tiếp) Mơ tả thuật tốn tìm kiếm tam phân mảng xếp tăng dần số ngun Mơ tả thuật tốn tìm dãy liên tiếp không giảm từ dãy số nguyên cho trước (ở ta hiểu dãy liên tiếp dãy gồm phần tử liên tiếp dãy ban đầu) Xây dựng thuật toán nhân hai số nguyên, biết số có tới 100 chữ số Cơ sở toán học/73 of 59 ... đề Thuật toán Khái niệm Đặc trưng Độ phức tạp thuật tốn Cơ sở tốn học Tính tốn độ phức tạp thuật toán Tiếp cận giải toán Các bước tiếp cận, giải thuật toán Xu hướng tiếp cận, giải toán Cơ sở toán. .. = O(n2) Cơ sở toán học/ 31 of 59 Đánh giá độ phức tạp thuật toán Ví dụ 1.7 Tìm đánh giá tốt hàm f(x) = 2x + 23 Cơ sở toán học/ 32 of 59 Đánh giá độ phức tạp thuật tốn Ví dụ 1.7 Tìm đánh giá tốt... n) Cơ sở tốn học/ 29 of 59 Đánh giá độ phức tạp thuật toán Ví dụ 1.6 Tìm đánh giá hàm f(n) = (n+3) log (n2+4) + 5n2 Cơ sở toán học/ 30 of 59 Đánh giá độ phức tạp thuật tốn Ví dụ 1.6 Tìm đánh giá