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

Bài giảng Thuật toán đánh giá và tiếp cận - ĐH Khoa học Tự nhiên Hà Nội

75 19 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 75
Dung lượng 286,62 KB

Nội dung

Bài giảng Thuật toán đánh giá và tiếp cận cung cấp cho người đọc các kiến thức về thuật toán, độ phức tạp của thuật toán và tiếp cận giải bài toán thuật toán, tính toán độ phức tạp thuật toán,.... Mời các bạn cùng tham khảo nội dung chi tiết.

Thuật toán đánh giá tiếp cận Bài Cơ sở tốn học/1 of 59 Các vấn đề • Thuật tố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 tốn • Tiếp cận giải tốn Các bước tiếp cận, giải thuật toán Xu hướng tiếp cận, giải tốn Thuật tố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 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ố ngun lớn dãy Thuật tốn Ta viết lại thuật toá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; 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 x:= a; y:=b; While y>0 r := x mod y; x := y; y := r; End While Đáp số: O(log2b) Độ 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 Định lý Lamé: • Cho a b số nguyên dương với a >= b Số phép chia cần thiết để tìm USCLN(a,b) nhỏ lần số chữ số b hệ thập phân (hay nói cách khác thuộc O(log2b)) Độ phức tạp thuật toán Khái niệm độ phức tạp P, NP Lớp P: P lớp toán giải với thời gian đa thức Ví dụ: Tìm phần tử bé dãy có n số nguyên cho trước Lớp NP: Có thể nói nơm na NP lớp toán định mà lời giải liệu vào khơng thể kiểm tra nhanh chóng, chẳng hạn, với thời gian đa thức NP lớp toán giải thuật toán bất định với thời gian đa thức (nondeterministic polynomial bouded) 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õ yêu cầu đặt tốn Có thể đặt trả lời số câu hỏi: Bài toá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 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” Yêu cầu quan trọng “độ xác nghiệm” Tiếp cận thuật tố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 Tiếp cận thuật tốn • Bước 3: Xây dựng thuật tố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 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 Tiếp cận thuật tốn • Bước 5: Xây dựng chương trình, thử nghiệm, triển khai Tiếp cận thuật tốn • Ví dụ: tìm số có giá trị lớn thứ mang a[0 n-1] Ví dụ 1, 2, 5, 3, 7, 8, 3, 5, 8: số cần tìm • Giải quyết: u cầu tốn: Tìm số có giá trị lớn thứ Đầu vào mảng có n phần tử (Xác định xác tham số đầu ra) 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ứ Tiếp cận thuật tốn • Giải (t): int secondmax(int a[]) M1=a[0]; For(i=1;a[i]==m1 && im2) » m[2=a[j] Return m2 Tiếp cận thuật tốn • Trường hợp thơng tin đầu với a[n]=1, 1,1,1,1 • => thơng tin số: • => sinh viên thực lại tham số đầu viết lại hàm 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 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 tốn 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) 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 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ố ... • Thuật tố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 Thuật. .. + n Đánh giá độ phức tạp thuật toán Ví dụ 1.6 Đánh giá tổng n số tự nhiên S(n) = + 2+ + n < n+n+ + n = n2 Vậy S(n) = O(n2) Đánh giá độ phức tạp thuật tốn Ví dụ 1.6 Đánh giá tổng n số tự nhiên. .. n) Đánh giá độ phức tạp thuật tốn Ví dụ 1.6 Tìm đánh giá hàm f(n) = (n+3) log (n2+4) + 5n2 Đánh giá độ phức tạp thuật tốn Ví dụ 1.6 Tìm đánh giá hàm f(n) = (n+3) log (n2+4) + 5n2 Ta có đánh giá

Ngày đăng: 05/11/2020, 10:36

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

TÀI LIỆU LIÊN QUAN