Bài giảng Toán rời rạc: Bài 2 - Vũ Thương Huyền cung cấp cho học viên các kiến thức cơ bản về hàm; đồ thị của hàm; độ tăng của hàm; độ tăng của tổ hợp các hàm; thuật toán, độ phức tạp của thuật toán; khái niệm Big-Omega và Big-Theta; thuật toán tìm kiếm tuyến tính; thuật toán sắp xếp;... Mời các bạn cùng tham khảo chi tiết nội dung bài giảng!
BÀI CÁC KIẾN THỨC CƠ BẢN Vũ Thương Huyền huyenvt@tlu.edu.vn NỘI DUNG • Hàm • Độ tăng hàm • Thuật tốn • Độ phức tạp thuật toán Toán rời rạc huyenvt@tlu.edu.vn 2.1 HÀM Toán rời rạc huyenvt@tlu.edu.vn 1.8 HÀM • Dùng để định nghĩa cấu trúc rời rạc dãy, xâu • Dùng để biểu diễn thời gian máy tính phải để giải toán Toán rời rạc huyenvt@tlu.edu.vn 1.8 HÀM Định nghĩa 1: Cho A B hai tập hợp Một hàm f từ A đến B gán xác phần tử B cho phần tử A Ta viết 𝒇 𝒂 = 𝒃 b phần tử B gán hàm f cho phần tử a A Nếu f hàm từ A đến B ta viết: 𝒇: 𝑨 → 𝑩 Toán rời rạc huyenvt@tlu.edu.vn 1.8 HÀM Định nghĩa 2: Nếu f hàm từ A đến B • A gọi miền xác định f B miền giá trị f • Nếu f(a) = b, b gọi ảnh a a nghịch ảnh b • Tập ánh xạ qua hàm f tập ảnh phần tử thuộc A • f ánh xạ A đến B Ví dụ: Cho A= {1, 2, 3}, B ={a, b, c} • • • • • Hàm f định nghĩa: → 𝑐, → 𝑎, → 𝑐 → 𝑐, c ảnh → 𝑎, nghịch ảnh a Miền xác định f {1, 2, 3}, miền giá trị f {a, b, c} Tập ánh xạ f {a, c} Toán rời rạc huyenvt@tlu.edu.vn 1.8 HÀM - HÀM ĐƠN ÁNH Định nghĩa 5: Một hàm f gọi đơn ánh hay ánh xạ một-một 𝑓 𝑥 = 𝑓(𝑦) kéo theo x = y với x y miền xác định f Khơng đơn ánh Tốn rời rạc Đơn ánh huyenvt@tlu.edu.vn 1.8 HÀM - HÀM ĐƠN ÁNH Các hàm sau có hàm đơn ánh khơng? Ví dụ 1: • Cho A = {1, 2, 3} B = {a, b, c}, hàm f cho sau: • → 𝑐, → 𝑎, → 𝑐 Ví dụ 2: • Cho g: 𝑍 → 𝑍 , với g(x) = 2x - Ví dụ 3: • Hàm f(x) = x2 , x thuộc tập số nguyên, miền giá trị f tập số nguyên Toán rời rạc huyenvt@tlu.edu.vn 10 1.8 HÀM - HÀM TOÀN ÁNH Định nghĩa 7: Một hàm f từ A đến B gọi toàn ánh với phần tử 𝑏 ∈ 𝐵 tồn phần tử 𝑎 ∈ 𝐴, với 𝑓 𝑎 = 𝑏 Toán rời rạc huyenvt@tlu.edu.vn 11 1.8 HÀM - HÀM TOÀN ÁNH Định nghĩa 8: Một hàm f song ánh vừa đơn ánh vừa tồn ánh (1)? (2)? Tốn rời rạc (3)? huyenvt@tlu.edu.vn (4)? (5)? 12 2.1 CÁC THUẬT TỐN TÌM KIẾM Tìm kiếm tuyến tính • So sánh x với a1, x = a1 vị trí tìm • Khi x a1 so sánh x với a2 • THUẬT TỐN : Thuật tốn tìm kiếm tuyến tính Procedure linear search (x: nguyên, a1, a2, an: số nguyên phân biệt) i := while (𝑖 ≤ 𝑛 𝑣à 𝑥 ≠ 𝑎𝑖 ) i := i + if 𝑖 ≤ 𝑛 then location := i else location := { location số số hạng x khơng tìm x} Tốn rời rạc huyenvt@tlu.edu.vn 30 2.1 CÁC THUẬT TỐN TÌM KIẾM Tìm kiếm nhị phân • Sử dụng cho dãy xếp tăng dần • So sánh phần tử x với số hạng dãy, trả vị trí cần tìm • Nếu x nhỏ tìm bên trái dãy • Nếu x lớn tìm bên phải dãy Ví dụ : • Tìm kiếm giá trị 15 dãy: 10 15 24 39 40 Tốn rời rạc huyenvt@tlu.edu.vn 31 2.1 CÁC THUẬT TỐN TÌM KIẾM THUẬT TỐN : Thuật tốn tìm kiếm nhị phân Procedure binary search (x: nguyên, a1, a2, an: số nguyên tăng dần) i := {i điểm mút trái khoảng tìm kiếm} j := n {j điểm mút phải khoảng tìm kiếm} while 𝑖 < 𝑗 begin m := (𝑖 + 𝑗)/2 if 𝑥 > 𝑎𝑚 then i:= m + else j:= m end if x = a then location :=i else location :=0 { location số số hạng x khơng tìm x} Tốn rời rạc huyenvt@tlu.edu.vn 32 2.1 CÁC THUẬT TỐN SẮP XẾP Sắp xếp kiểu bọt • So sánh liên tiếp phần tử kề • Đổi chỗ cho chúng chưa có thứ tự Ví dụ : • Sắp xếp danh sách 3, 2, 4, 1, Vòng lặp Vòng lặp Vòng lặp Vòng lặp Đổi chỗ Cặp thứ tự Tốn rời rạc huyenvt@tlu.edu.vn 34 2.1 CÁC THUẬT TỐN SẮP XẾP THUẬT TỐN : Thuật tốn xếp bọt Procedure bubble sort (a1, a2, an) for i:= to n -1 for j:=1 to n-i if aj > aj+1 then đổi chỗ aj aj+1 {a1, a2, , an xếp} Toán rời rạc huyenvt@tlu.edu.vn 35 2.1 CÁC THUẬT TOÁN SẮP XẾP Sắp xếp kiểu chèn • Bắt đầu với phần tử thứ • So sánh phần tử thứ với phần tử thứ nhất: • Chèn vào trước phần tử thứ nhỏ • Chèn vào sau phần tử thứ lớn • So sánh phần tử thứ với phần tử thứ so sánh tiếp với phần tử thứ Ví dụ : • Sắp xếp danh sách 3, Toán rời rạc 2, 4, 1, huyenvt@tlu.edu.vn 36 2.1 CÁC THUẬT TOÁN SẮP XẾP THUẬT TỐN : Thuật tốn xếp kiểu chèn Procedure insertion sort (a1, a2, an: số thực với 𝑛 ≥ 2) for j:= to n begin i:=1 while < aj i := i + m := aj for k:= to j – i – aj-k := aj-k-1 := m end {a1, a2, , an xếp} Toán rời rạc huyenvt@tlu.edu.vn 37 BÀI TẬP Bài 2: Sắp xếp danh sách 6, 2, 3, 1, 5, theo thứ tự tăng dần phương pháp: a) Sắp xếp kiểu bọt b) Sắp xếp kiểu chèn c) Sắp xếp kiểu lựa chọn (tham khảo sách) d) Sắp xếp kiểu chèn nhị phân (tham khảo sách) Toán rời rạc huyenvt@tlu.edu.vn 38 2.4 ĐỘ PHỨC TẠP THUẬT TỐN Tốn rời rạc huyenvt@tlu.edu.vn 39 2.3 ĐỘ PHỨC TẠP CỦA THUẬT TOÁN Hiệu thuật tốn: • Thời gian mà máy tính sử dụng để giải tốn • Dung lượng nhớ địi hỏi thực thuật tốn Độ phức tạp thời gian: • Biểu diễn qua số phép tốn dùng thuật tốn • Các phép tốn để đo: • Phép so sánh • Phép cộng, trừ, nhân, chia Ví dụ: Độ phức tạp thời gian thuật tốn tìm kiếm phần tử lớn (n) Toán rời rạc huyenvt@tlu.edu.vn 40 2.3 ĐỘ PHỨC TẠP CỦA THUẬT TOÁN Độ phức tạp trường hợp xấu nhất: • Là trường hợp phải dùng tối đa phép toán để giải toán theo thuật toán xét Độ phức tạp trường hợp trung bình: • Tìm số bước trung bình phép tốn dùng để giải tồn giá trị đầu vào • Phức tạp phân tích trường hợp xấu Tốn rời rạc huyenvt@tlu.edu.vn 41 2.3 ĐỘ PHỨC TẠP CỦA THUẬT TỐN Ví dụ 1: Xác định độ phức tạp trường hợp xấu thuật toán xếp kiểu bọt qua số phép so sánh Ví dụ 2: Xác định độ phức tạp trường hợp xấu thuật toán xếp kiểu chèn qua số phép so sánh Toán rời rạc huyenvt@tlu.edu.vn 42 2.3 ĐỘ PHỨC TẠP CỦA THUẬT TOÁN Các thuật ngữ thường dùng cho độ phức tạp tính tốn Độ phức tạp Thuật ngữ O(1) Độ phức tạp số O(logn) Độ phức tạp logarit O(n) Độ phức tạp tuyến tính O(nlogn) Độ phức tạp nlogn O(nb) Độ phức tạp đa thức O(bn) Độ phức tạp hàm mũ O(n!) Độ phức tạp giai thừa Toán rời rạc huyenvt@tlu.edu.vn 43 2.3 ĐỘ PHỨC TẠP CỦA THUẬT TOÁN Các thuật ngữ thường dùng cho độ phức tạp tính tốn Kích thước tốn n Các phép toán bit sử dụng logn n nlogn n2 2n n! 10 3.10-9s 10-8s 3.10-8s 10-7s 10-6s 3.10-3s 102 7.10-9s 10-7s 7.10-7s 10-5s * 103 10-8s 10-6s 10-5s 10-3s 4.1013 năm * 104 1.3*10-9s 10-5s 10-4s 10-1s * * 105 1.7*10-8s 10-4s 2*10-3s 10s * * 106 2*10-8s 2*10-2s 17 phút * * Toán rời rạc 10-3s huyenvt@tlu.edu.vn * 44 45 ... 1 0-8 s 3.1 0-8 s 1 0-7 s 1 0-6 s 3.1 0-3 s 1 02 7.1 0-9 s 1 0-7 s 7.1 0-7 s 1 0-5 s * 103 1 0-8 s 1 0-6 s 1 0-5 s 1 0-3 s 4.1013 năm * 104 1.3*1 0-9 s 1 0-5 s 1 0-4 s 1 0-1 s * * 105 1.7*1 0-8 s 1 0-4 s 2* 1 0-3 s 10s * * 106 2* 1 0-8 s... ? ?2, 1 = ? ? ?2, 1 = ? -2 , 1 = ? -2 , 1 = ? Toán rời rạc huyenvt@tlu.edu.vn 14 BÀI TẬP Bài 1: Hãy xác định xem hàm f: