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

Bài giảng cấu trúc dữ liệu và giải thuật

187 23 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 187
Dung lượng 9,48 MB

Nội dung

Bài giảng cấu trúc dữ liệu và giải thuật Bài giảng cấu trúc dữ liệu và giải thuật Bài giảng cấu trúc dữ liệu và giải thuật Bài giảng cấu trúc dữ liệu và giải thuật Bài giảng cấu trúc dữ liệu và giải thuật Bài giảng cấu trúc dữ liệu và giải thuật Bài giảng cấu trúc dữ liệu và giải thuật Bài giảng cấu trúc dữ liệu và giải thuật Bài giảng cấu trúc dữ liệu và giải thuật Bài giảng cấu trúc dữ liệu và giải thuật Bài giảng cấu trúc dữ liệu và giải thuật Bài giảng cấu trúc dữ liệu và giải thuật Bài giảng cấu trúc dữ liệu và giải thuật Bài giảng cấu trúc dữ liệu và giải thuật Bài giảng cấu trúc dữ liệu và giải thuật Bài giảng cấu trúc dữ liệu và giải thuật Bài giảng cấu trúc dữ liệu và giải thuật Bài giảng cấu trúc dữ liệu và giải thuật Bài giảng cấu trúc dữ liệu và giải thuật Bài giảng cấu trúc dữ liệu và giải thuật Bài giảng cấu trúc dữ liệu và giải thuật Bài giảng cấu trúc dữ liệu và giải thuật Bài giảng cấu trúc dữ liệu và giải thuật Bài giảng cấu trúc dữ liệu và giải thuật Bài giảng cấu trúc dữ liệu và giải thuật Bài giảng cấu trúc dữ liệu và giải thuật Bài giảng cấu trúc dữ liệu và giải thuật Bài giảng cấu trúc dữ liệu và giải thuật Bài giảng cấu trúc dữ liệu và giải thuật Bài giảng cấu trúc dữ liệu và giải thuật Bài giảng cấu trúc dữ liệu và giải thuật

Giảng viên: Văn Chí Nam – Nguyễn Thị Hồng Nhung – Đặng Nguyễn Đức Tiến     Thông tin môn học Quy định môn học Tài liệu tham khảo Nội dung môn học Cấu trúc liệu v gii thut - HCMUS 2017 âFIT-HCMUS ã Văn Chí Nam (vcnam@fit.hcmus.edu.vn) • Giờ học: t1-t4 sáng T3 Lý thuyết: • Địa điểm: F301 • Lê Ngọc Thành (lnthanh@fit.hcmus.edu.vn) • Bùi Huy Thơng Thực hành: (bhthong@mso.hcmus.edu.vn) Cấu trúc liệu giải thuật - HCMUS 2017  Moodle: https://courses.fit.hcmus.edu.vn  Sử dụng cho việc:  Đặt câu hỏi  Giải đáp thắc mắc  Nhận thông báo  Nhận/nộp tập Cấu trúc liệu giải thuật - HCMUS 2017 ©FIT-HCMUS     Điểm lý thuyết cuối kỳ: 50% Điểm thực hành (đồ án, tập cá nhân): 30% Điểm trình (Điểm hoạt động nhóm, chun cần, quiz): 20% Bất kỳ trường hợp gian lận bị phát trình học, kiểm tra, tập,… bị phạt theo qui định sau:  Lần 1: trừ 30% tổng số điểm môn học  Lần 2: trừ 50% tổng số điểm môn học Cấu trúc liệu giải thuật - HCMUS 2017  Sinh viên phải có mặt lớp từ 80% số buổi trở lên Nếu hơn, sinh viên khơng thi kết thúc học phần (->không đạt) Cấu trúc liệu giải thuật - HCMUS 2017 ©FIT-HCMUS   Đi học nghiêm túc Có thể có kiểm tra nhỏ với nội dung phần học có liên quan  Có tập ghi chép dành riêng cho môn học  Không sử dụng laptop vào công việc riêng  Điện thoại đặt chế độ im lặng Cấu trúc liệu giải thuật - HCMUS 2017    Ngôn ngữ lập trình: C/C++ Cơng cụ lập trình: Visual C++ Visual Studio 2005, 2008, 2010,… (chế độ console) Chương trình viết phải ngăn nắp, thẳng hàng, ghi đầy đủ Đặt tên biến tên hàm phải gợi nhớ, có qui ước xác định Cấu trúc liệu giải thuật - HCMUS 2017 ©FIT-HCMUS  Sử dụng email thức  Đọc tài liệu Cấu trúc liệu giải thuật - HCMUS 2017 10      Frank M Carrano, Timothy Henry (2013), Data Abstraction and Problem Solving with C++: Walls and Mirrors (Sixth Edition) Dương Anh Đức – Trần Hạnh Nhi (2003), Nhập môn Cấu trúc liệu giải thuật, NXB ĐHQG TP.HCM Đinh Mạnh Tường (2008), Cấu trúc liệu thuật tốn, NXB ĐHQG HN Đỗ Xn Lơi (2007), Cấu trúc liệu giải thuật, NXB ĐHQG HN Thomas H Cormen, Charles E Leiserson, Ronald L Rivest and Clifford Stein (2001), Introduction to Algorithms (Second Edition) Cấu trúc liệu giải thuật - HCMUS 2017 ©FIT-HCMUS 11 Đánh giá thuật tốn Các chiến lược tìm kiếm Các thuật toán xếp Các cấu trúc liệu Cấu trúc Đối sánh chuỗi Nén liệu Cấu trúc liệu giải thuật - HCMUS 2017 12 Đánh giá thuật tốn Các chiến lược tìm kiếm • Tìm kiếm: tuần tự, kiếm nhị phân • Bảng băm Các thuật tốn xếp • Selection Sort • Quick Sort, Merge Sort, Heap Sort, Radix Sort Cấu trúc liệu giải thuật - HCMUS 2017 ©FIT-HCMUS 13 Kiểu liệu trừu tượng Các cấu trúc liệu • Danh sách liên kết, Ngăn xếp, Hàng đợi • Cấu trúc cây: Cây tổng quát, Cây nhị phân tìm kiếm, Heap, Cây AVL, 23, 2-3-4, B-Cây Cấu trúc liệu giải thuật - HCMUS 2017 14 Đối sánh chuỗi: • Brute Force, Rabin Karp, KMP Các thuật tốn nén liệu: • Nén Run-Length Encoding • Nén Huffman tĩnh • Nén LZW Cấu trúc liệu giải thuật - HCMUS 2017 ©FIT-HCMUS 15 Cấu trúc liệu giải thuật - HCMUS 2017 ©FIT-HCMUS 33  Big-O  Một số kết Big-O quan trọng Cấu trúc liệu giải thuật - HCMUS 2016 34    Khái niệm Big-O lần đưa nhà toán học người Đức Paul Bachmann vào năm 1892 Big-O trở nên phổ biến nhờ nhà toán học Landau Do vậy, Big-O gọi ký hiệu Landau, hay Bachmann-Landau Donald Knuth xem người truyền bá khái niệm Big-O tin học từ năm 1970 Ông người đưa khái niệm BigOmega Big-Theta Cấu trúc liệu giải thuật - HCMUS 2016 ©FIT-HCMUS 35  Cho f g hai hàm số từ tập số nguyên số thực đến số thực Ta nói f(x) O(g(x)) tồn số C k cho: |f(x)| ≤ C |g(x)| với x > k Cấu trúc liệu giải thuật - HCMUS 2016 36  Cho f g hai hàm số từ tập số nguyên số thực đến số thực Ta nói f(x) O(g(x)) tồn số C k cho: |f(x)| ≤ C |g(x)| với x > k • Ví dụ, hàm f(x) = x2 + 3x + O(x2) Thật vậy, x > x < x2 < 2x2 Do x2 + 3x + < 6x2 Nghĩa ta chọn C = k = Cấu trúc liệu giải thuật - HCMUS 2016 ©FIT-HCMUS 86 Độ phức tạp:  Nén:  O(n)  với n độ dài chuỗi cần nén Giải nén:  O(n) với n độ dài liệu cần giải nén Cấu trúc liệu giải thuật - HCMUS 2015 87     Là phương thức nén sử dụng rộng rãi máy tính Là tiện ích hệ điều hành Unix Một số tiện ích nén sử dụng LZW phương pháp thuật toán nén LZW Trở nên phổ biến trở thành phần định dạng GIF sử dụng TIFF, PDF Cấu trúc liệu giải thuật - HCMUS 2015 ©FIT-HCMUS 42 88  LZMW (năm 1985, V Miller, M Wegman)  LZAP (năm 1988, James Storer)  LZWL biến thể âm tiết (syllable-based) dựa LZW Cấu trúc liệu giải thuật - HCMUS 2015 89 Cấu trúc liệu giải thuật - HCMUS 2015 ©FIT-HCMUS 43 Giảng viên: Văn Chí Nam – Nguyễn Thị Hồng Nhung – Đặng Nguyễn Đức Tiến Khái quát băm Hàm băm Sự đụng độ Các phương pháp giải đụng độ Kết luận Cấu trúc liệu giải thuật – HCMUS 2015 © FIT-HCMUS Hash Table Cấu trúc liệu giải thuật – HCMUS 2015   Vấn đề: Cho trước tập S gồm phần tử đặc trưng giá trị khóa Trên giá trị khóa có quan hệ thứ tự Tổ chức S để tìm kiếm phần tử có khóa k cho trước có độ phức tạp giới hạn nhớ cho phép? Ý tưởng: Biến đổi khóa k thành số (bằng hàm hash) sử dụng số địa để tìm kiếm bảng liệu Cấu trúc liệu giải thuật – HCMUS 2015 © FIT-HCMUS ĐNĐTiến +84.95.8345678 VCNam +84.91.2345678 NTHNhung +84.90.9345678 Cấu trúc liệu giải thuật – HCMUS 2015   Chi phí tìm kiếm trung bình: O(1) Chi phí tìm kiếm trường hợp xấu nhất: O(n) (rất gặp) Cấu trúc liệu giải thuật – HCMUS 2015 © FIT-HCMUS   Định nghĩa: Hàm băm (hash function) hàm biến đổi khóa k phần tử thành địa bảng băm Tổng quát phép biến đổi khóa: Là ánh xạ thích hợp từ tập khóa U vào tập địa A H: U  A k  a = h(k)  Tập giá trị khóa (U) lớn nhiều so với số khóa thực tế (K) nhiều Cấu trúc liệu giải thuật – HCMUS 2015 T Tập U Tập K 10 7 10 Key Data 10 Cấu trúc liệu giải thuật – HCMUS 2015 © FIT-HCMUS  Chọn số (Digit-selection):  Chọn vài chữ số khóa ghép lại tạo thành giá trị băm  Ví dụ:  h(001364825) = 35  Ưu điểm: Đơn giản, tính tốn nhanh  Khuyết điểm: Khơng thể tính chất khóa, khơng phân bố Cấu trúc liệu giải thuật – HCMUS 2015 10  Gấp số (folding)  Cộng chữ số khóa  Nhóm chữ số thành số cộng lại  Ví dụ:  h(001364825) = + + + + + + + + = 29  h(001364825) = 001 + 364 + 825 = 1190 Cấu trúc liệu giải thuật – HCMUS 2015 © FIT-HCMUS 11  Lấy dư (modulo arithmetic)  Sử dụng phép tính lấy dư  h (Key) = Key mod tableSize  Ví dụ:  h(Key) = Key mod 101  h(001364825) = 12 Cấu trúc liệu giải thuật – HCMUS 2015 12  k1, k2  K: k1 ≠ k2, H(k1) = H(k2) Tập U T H(3) H(4) Tập K 10 H(2) = H(8) H(10) Cấu trúc liệu giải thuật – HCMUS 2015 © FIT-HCMUS 13 Ít xảy đụng độ Tính tốn nhanh Các khóa phân bố Cấu trúc liệu giải thuật – HCMUS 2015 14   Phương pháp nối kết (separate chaining) Phương pháp địa mở (Open-addressing) Cấu trúc liệu giải thuật – HCMUS 2015 © FIT-HCMUS 15   Ứng với địa bảng, ta có danh sách liên kết chứa phần tử có khóa khác mà có địa Ta có danh sách (bảng băm) gồm M phần tử chứa địa đầu danh sách liên kết Cấu trúc liệu giải thuật – HCMUS 2015 16 ĐNĐTiến +84.95.8345678 VCNam +84.91.2345678 ĐTMHậu +84.95.6543210 NTHNhung +84.90.9345678 Cấu trúc liệu giải thuật – HCMUS 2015 © FIT-HCMUS 17  Tên gọi khác:  Phương pháp dò  Phương pháp thử  Ý tưởng:  Khi đụng độ xảy ra, ta thử tìm đến vị trị bảng tìm thấy vị trí cịn trống Cấu trúc liệu giải thuật – HCMUS 2015 18    Phương pháp dị tuyến tính (Linear probing) Phương pháp dị bậc (Quadratic probing) Phương pháp băm kép (Double hashing) Cấu trúc liệu giải thuật – HCMUS 2015 © FIT-HCMUS 19 Phương pháp dị tuyến tính: H(k, i) = (h(k) + i) mod M  Cấu trúc liệu giải thuật – HCMUS 2015 20 Phương pháp dò bậc 2: H(k, i) = (h(k) + i2) mod M  Cấu trúc liệu giải thuật – HCMUS 2015 © FIT-HCMUS 10 21 Phương pháp băm kép: H(k, i) = (h1(k) + i*h2(k)) mod M  h1(key) = key mod 11 h2(key) = – (key mod 7) Cấu trúc liệu giải thuật – HCMUS 2015 22 Cấu trúc liệu giải thuật – HCMUS 2015 © FIT-HCMUS 11 23  Phương pháp địa mở:  Đơn giản cài đặt  Sử dụng cấu trúc liệu  Giải đụng độ lại gây đụng độ  Phương pháp nối kết: bị ảnh hưởng tốc độ mảng gần đầy  Ít tốn nhớ mảng thưa (ít phần tử)  Không Cấu trúc liệu giải thuật – HCMUS 2015 24 Cho bảng băm có kích thước M = 11 Hàm băm: h(k) = k mod M Dùng phương pháp địa mở Cho biết kết sau thêm vào bảng băm khóa 10, 22, 31, 4, 15, 28, 17, 88, 59, với phương pháp xử lý đụng độ: a Dị tuyến tính b Dị bậc c Băm kép h2(k) = (k mod 19)+1 Cấu trúc liệu giải thuật – HCMUS 2015 © FIT-HCMUS 12 25 Cho từ điển Anh – Việt có 15.000 từ, tổ chức cấu trúc liệu bảng băm cho biết hàm băm thích hợp giúp cho việc tra từ hiệu Cấu trúc liệu giải thuật – HCMUS 2015 26 Cấu trúc liệu giải thuật – HCMUS 2015 © FIT-HCMUS 13 ... Edition) Cấu trúc liệu giải thuật - HCMUS 2017 ©FIT-HCMUS 11 Đánh giá thuật tốn Các chiến lược tìm kiếm Các thuật toán xếp Các cấu trúc liệu Cấu trúc Đối sánh chuỗi Nén liệu Cấu trúc liệu giải thuật. .. } Cấu trúc liệu giải thuật – HCMUS 2016 © FIT-HCMUS 10 27  Đánh giá giải thuật:  Độ phức tập giải thuật (không thay đổi): O(nlog2n) Cấu trúc liệu giải thuật – HCMUS 2016 28 Quick Sort Cấu trúc. .. dụng sau: f(x) O(g(x)), f(x) với bậc g(x) Cấu trúc liệu giải thuật - HCMUS 2016 ©FIT-HCMUS 45 Cấu trúc liệu Giải thuật Chương trình Cấu trúc liệu giải thuật - HCMUS 2016 46      Tốc độ thực

Ngày đăng: 27/02/2022, 14:48

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN