Bài giảng Toán rời rạc 1: Phần 2

75 19 0
Bài giảng Toán rời rạc 1: Phần 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

Nối tiếp phần 1, Bài giảng Toán rời rạc 1: Phần 2 tiếp tục cung cấp cho học viên những kiến thức về bài toán liệt kê; thuật toán và độ phức tạp tính toán; thuật toán quay lui; bài toán tối ưu; kỹ thuật rút gọn giải quyết bài toán người du lịch; thuật toán nhánh cận giải bài toán người du lịch; bài toán tồn tại; phương pháp phản chứng; nguyên lý Dirichlet;... Mời các bạn cùng tham khảo!

HỌC VIỆN CƠNG NGHỆ BƯU CHÍNH VIỄN THƠNG  KHOA CƠNG NGHỆ THƠNG TIN BÀI GIẢNG TỐN RỜI RẠC NGUYỄN DUY PHƯƠNG HàNội 2016 CHƢƠNG BÀI TOÁN LIỆT KÊ Nội dung tốn đếm đếm xem có cấu hình tổ hợp thỏa mãn số tính chất Bài tốn liệt khơng đếm đƣợc cấu hình tổ hợp thỏa mãn tính chất đặt mà cịn xem xét cấu hình tổ hợp Đối với tốn, chƣa tìm đƣợc thuật giải liệt kê đƣợc xem biện pháp cuối để thực với hỗ trợ máy tính Có thể nói, liệt kê đƣợc xem phƣơng pháp giải vạn tốn máy tính Nội dung chƣơng tập chung giải vấn đề sau:  Giới thiệu toán liệt kê  Thuật tốn độ phức tạp tính tốn  Giải toán liệt kê phƣơng pháp sinh  Giải toán liệt kê phƣơng pháp quay lui Bạn đọc tìm thấy cách giải nhiều toán liệt kê tài liệu [1] [2] tài liệu tham khảo 3.1- Giới thiệu toán Bài toán đƣa danh sách tất cấu hình tổ hợp có đƣợc gọi toán liệt kê tổ hợp Khác với toán đếm tìm kiếm cơng thức cho lời giải, toán liệt kê lại cần xác định thuật toán để theo xây dựng đƣợc lần lƣợt tất cấu hình cần quan tâm Một thuật tốn liệt kê phải đảm bảo hai ngun tắc: Khơng lặp lại cấu hình Khơng bỏ sót cấu hình Ví dụ Cho tập hợp số a1, a2, , an số M Hãy tìm tất tập k phần tử dãy số {an} cho tổng số phần tử tập M Lời giải: Nhƣ biết, số tập k phần tử tập gồm n phần tử C(n,k) Nhƣ cần phải duyệt số C(n,k) tập k phần tử để lấy tập có tổng phần tử M Vì khơng thể xác định đƣợc có tập k phần tử từ tập n phần tử có tổng phần tử M nên cịn cách liệt kê cấu hình thoả mãn điều kiện cho Ví dụ Một thƣơng nhân bán hàng tám thành phố Chị ta bắt đầu hành trình thành phố nhƣng phải qua thành phố theo thứ tự mà chị ta muốn Hãy lộ trình ngắn mà chị ta Lời giải: Vì thành phố xuất phát đƣợc xác định Do thƣơng nhân chọn tuỳ ý thành phố lại để hành trình Nhƣ vậy, tất số hành trình thƣơng nhân 45 qua 7! = 5040 cách Tuy nhiên 5040 cách phải duyệt tồn để hành trình ngắn Có thể nói phƣơng pháp liệt kê biện pháp cuối nhƣng biện pháp phổ dụng để giải tốn tổ hợp Khó khăn phƣơng pháp bùng nổ tổ hợp Để xây dựng chừng tỷ cấu hình (con số lớn toán tổ hợp nhƣ số thứ tự Dn, số phân bố Un, số hình vng la tinh ln), ta giả sử cần giây để liệt kê cấu hình cần 31 năm giải xong Tuy nhiên với phát triển nhanh chóng máy tính, phƣơng pháp liệt kê, nhiều tốn khó lý thuyết tổ hợp đƣợc giải góp phần thúc đẩy phát triển nhiều ngành toán học 3.2 Thuật toán độ phức tạp tính tốn 3.2.1 Ví dụ Định nghĩa Định nghĩa Dãy hữ hạn thao tác sơ cấp F=F1F2 Fn(Input)Output đƣợc gọi thuật toán tập thơng tin vào Input để có đƣợc kết qua Output Dãy thao tác sơ cấp đƣợc hiểu phép toán số học, phép toán logic, phép toán so sánh Một thuật toán cần thỏa mãn tính chất dƣới đây: • • • • • Tính đơn định Ở bƣớc thuật toán, thao tác sơ cấp phải rõ ràng, không gây nên lộn xộn, nhập nhằng, đa nghĩa Thực bƣớc thuật toán tập liệu vào, cho kết Tính dừng Thuật tốn khơng đƣợc rơi vào q trình vơ hạn Phải dừng lại cho kết sau số hữu hạn bƣớc Tính Sau thực tất bƣớc thuật tốn theo qui trình định, ta phải nhận đƣợc kết mong muốn với liệu đầu vào Kết đƣợc kiểm chứng yêu cầu tốn Tính phổ dụng Thuật tốn phải dễ sửa đổi để thích ứng đƣợc với toán lớp toán loại làm việc nhiều loại liệu khác Tính khả thi Thuật tốn phải dễ hiểu, dễ cài đặt, thực đƣợc máy tính với thời gian cho phép 3.2.2 Phƣơng pháp biểu diễn thuật tốn: Thơng thƣờng, để biểu diễn thuật tốn ta sử dụng phƣơng pháp sau: • Biểu diễn ngôn ngữ tự nhiên Ngôn ngữ tự nhiên phƣơng tiện giao tiếp ngƣời với ngƣời Ta sử dụng ngơn ngữ vào việc biểu diễn thuật tốn 46 • Ngơn ngữ hình thức Ngơn ngữ hình thức phƣơng tiện giao tiếp trung gian ngƣời hệ thống máy tính Ví dụ ngơn ngữ sơ đồ khối, ngơn ngữ tựa tự nhiên, ngôn ngữ đặc tả Đặc điểm chung loại ngôn ngữ việc sử dụng gần với ngơn ngữ tự nhiên ngơn ngữ máy tính • Ngơn ngữ máy tính Là phƣơng tiện giao tiếp máy tính máy tính Trong trƣờng hợp ta sử dụng nơn ngữ lập trình để mơ tả thuật tốn Ghi Trong phƣơng pháp biểu diễn thuật toán, phƣơng pháp biểu diễn ngơn ngữ hình thức đƣợc sử dụng rộng dãi gần với ngơn ngữ tự nhiên không phụ thuộc vào ngôn ngữ máy tính Ví dụ Biểu diễn thuật tốn tìm USCLN (a, b) ngôn ngữ tự nhiên Đầu vào (Input) Hai số tự nhiên a, b Đầu (Output) Số nguyên u lớn để a b chia hết cho u Thuật toán (Euclide Algorithm): Bước Đƣa vào hai số tự nhiên a b Bước Nếu b chuyển đến bƣớc 3, b=0 thực bƣớc Bước Đặt r = a mod b; a = b; b = r ; Sau quay trở lại bƣớc Bước (Output) Kết luận u=a số ngun cần tìm Ví dụ Biểu diễn Biểu diễn thuật tốn tìm USCLN (a, b)bằng ngơn ngữ hình thức Thuật tốn Euclide: Đầu vào (Input): aN, aN Đầu (Output): s = max { u N : a mod u =0 and b mod u =0} Format : s = Euclide (a, b) Actions : while (b  ) r = a mod b; a = b; b = r; endwhile; return(a); Endactions Ví dụ Biểu diễn thuật tốn tìm USCLN (a, b) ngơn ngữ máy tính (C++) Int USCLN( int a, int b) { while ( b != ) { r = a % b; a = b; b = r; 47 } return(a); } 3.2.3 Độ phức tạp tính tốn Một tốn thực nhiều thuật toán khác Chọn giải thuật nhanh giải toán nhu cầu thực tế Vì ta cần phải có ƣớc lƣợng cụ thể để minh chứng toán học mức độ nhanh chậm giải thuật Khái niệm độ phức tạp thuật toán: Thời gian thực giải thuật chƣơng trình máy tính phụ thuộc vào yếu tố: • Kích thƣớc liệu vào: Dữ liệu lớn thời gian xử lý chậm • Phần cứng máy tính: máy có tốc độ cao thực nhanh máy có tốc độ thấp Tuy vậy, yếu tố khơng ảnh hƣởng đến q trình xác định thời gian thực thuật toán xem xét thời gian thực thuật toán nhƣ hàm độ dài liệu T(n) Tổng quát, cho hai hàm f(x), g(x) xác định tập số nguyên dương tập số thực vào tập số thực Hàm f(x) gọi O(g(x)) tồn số C>0 n0 cho: |f(x)| ≤C.|g(x)| vớ x≥n0 Điều có nghĩa với giá trị x ≥n0 hàm f(x) bị chặn số C nhân với g(x) Nếu f(x) thời gian thực thuật tốn ta nói giải thuật có cấp g(x) hay độ phức tạp thuật toán O(g(x)) Ghi Các số C, n0 thỏa mãn điều kiện không Nếu có đồng thời f(x) O(g(x)) h(x) thỏa mãn g(x) < h(x) với x>n0 ta có f(x) O(h(n)) Ví dụ Cho f x   an x n  an1 x n1   a1 x  a0 Trong đó, số thực (i =0,1, 2, ,n) Khi f(x) = O(xn) Chứng minh Thực vậy, với x>1: 48 f  x   a n x n  a n 1 x n 1   a1 x  a0   a n x n  a n 1 x n 1   a1 x  a0   a n x n  a n 1 x n   a1 x n  a0 x n   x n  a n  a n 1   a1  a0   C.x n  O( x n ) C   a n  a n 1   a1  a0 49   Ví dụ Tìm độ phức tạp thuật tốn xếp kiểu Bubble-Sort? Void Bubble-Sort ( int A[], int n ) { for ( i=1; ik; Trong đó, C = C1 + C2; g(x) = max( g1(x), g2(x)); k = max (k1, k2) Tổng quát Nếu độ phức tạp f1(x), f2(x), , fm(x) lần lƣợt O(g1(x)), O(g2(x)), , O(gn(x)) độ phức tạp f1(x) + f2(x) + +fm(x) O(max(g1(x), g2(x), ,gm(x)) 51 Qui tắc nhân: Nếu f(x) có độ phức tạp O(g(x) độ phức tạp f n(x) O(gn(x) Trong đó: fn(x) = f(x).f(x)….f(x) //n lần f(x) gn(x) = g(x).g(x)…g(x).//n lần g(x) Nói cách khác, đoạn chƣơng trình P có thời gian thực T(n)= O(f(n)) Khi đó, thực k(n) lần đoạn chƣơng trình P với k(n) O(g(n)) độ phức tạp tính tốn O(f(n) g(n)) Chứng minh Thật theo giả thiết f(x) O(g(x)) nên tồn số C k cho với x>k |f(x)| C.|g(x) Ta có: f n  x   f  x  f  x  f n  x   C.g  x .C.g  x  C.g n  x   C n g n  x   Og n  x  3.2.5 Độ phức tạp cấu trúc lệnh Để đánh giá độ phức tạp thuật tốn đƣợc mã hóa thành chƣơng trình máy tính ta thực theo số qui tắc sau Độ phức tạp số O(1): đoạn chƣơng trình khơng chứa vịng lặp lời gọi đệ qui có tham biến số Ví dụ 1.7 Đoạn chƣơng trình dƣới có độ phức tạp số for (i=1; i 21 : XD 17 21 : XD 19 21 : XD 20  21 : XD 22 > 21 : XD 22 > 21 : XD 24 > 21 : XD 25 > 21 : XD 79 F(X)=  ci xi  ? i 1 10 11 13 11 14 16 9 10 12. .. chứa cạnh (6,3) (Hình 4.7) Cận dƣới =81 Cận dƣới = 129 93 6  30  27 30  30 17 12  10 30 17 12 29 12  29  12 12 32 83  49 32 83 10  49 21  21 0  85  35 89  Cạnh (6,3) đƣợc chọn để phân

Ngày đăng: 01/03/2022, 09:47

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan