Bài giảng Cấu trúc dữ liệu và giải thuật - Chương 1: Giới thiệu cung cấp cho người học các kiến thức cơ sở về cấu trúc dữ liệu và giải thuật, những vấn đề cần lưu ý khi học môn học này. Mời các bạn cùng tham khảo nội dung chi tiết.
CuuDuongThanCong.com GIỚI THIỆU Bùi Tiến Lên 01/01/2017 https://fb.com/tailieudientucntt Một số quy định chung Sinh viên phải làm đầy đủ tập lý thuyết thực hành Sinh viên không vắng buổi lý thuyết thực hành Cách tính điểm chung Tổng điểm = 50%Lý thuyết + 30%Thực hành + 20%Đồ án CuuDuongThanCong.com Spring 2017 https://fb.com/tailieudientucntt Data structure & Algorithm Nội dung Các thuật toán Phân tích thuật tốn Thuật tốn xếp Thuật tốn tìm kiếm Các cấu trúc liệu Mảng & danh sách liên kết Ngăn xếp & hàng đợi Cây Các thuật toán nâng cao Nén liệu Cấu trúc liệu nâng cao Đồ thị CuuDuongThanCong.com Spring 2017 https://fb.com/tailieudientucntt Data structure & Algorithm Cấu trúc liệu giải thuật ”Giải thuật + Cấu trúc liệu = Chương trình” Niklaus Wirth Định nghĩa Cấu trúc liệu & giải thuật (data structures & algorithms) nghiên cứu Tổ chức, lưu trữ liệu Xây dựng cài đặt thuật toán liên quan CuuDuongThanCong.com Spring 2017 https://fb.com/tailieudientucntt Data structure & Algorithm Cấu trúc liệu giải thuật (cont.) Việc lựa chọn cấu trúc liệu giải thuật tạo khác biệt cho chương trình Chạy vài giây Chạy vài ngày CuuDuongThanCong.com Spring 2017 https://fb.com/tailieudientucntt Data structure & Algorithm Cấu trúc liệu giải thuật (cont.) Ghi nhớ Mỗi cấu trúc liệu có điểm mạnh điểm yếu Khơng có cấu trúc liệu tốt cho tốn Mỗi tốn có ràng buộc không gian lưu trữ thời gian thực khả lập trình Chỉ sau phân tích tốn cẩn thận biết cấu trúc liệu tốt để giải CuuDuongThanCong.com Spring 2017 https://fb.com/tailieudientucntt Data structure & Algorithm Cấu trúc liệu Định nghĩa Cấu trúc liệu (data structure) cách thức tổ chức (organizing) lưu trữ (storing) để mang lại hiệu thi hành thuật toán Cấu trúc liệu cách thức cài đặt kiểu liệu Cấu trúc liệu (internal memory data structure) Cấu trúc liệu (external memory data structure) CuuDuongThanCong.com Spring 2017 https://fb.com/tailieudientucntt Data structure & Algorithm Cấu trúc liệu (cont.) Mỗi cấu trúc liệu phù hợp cho ứng dụng cụ thể Ứng dụng sở liệu thường sử dụng B-tree Ứng dụng trình biên dịch thường dùng bảng băm Ứng dụng từ điển thường dùng bảng băm Ứng dụng phân phối hàng hóa thường sử dụng hàng đợi CuuDuongThanCong.com Spring 2017 https://fb.com/tailieudientucntt Data structure & Algorithm Cấu trúc liệu (cont.) Một cấu trúc liệu xem hiệu cho ứng dụng thỏa: Lưu trữ đầy đủ đắn liệu ứng dụng Dễ dàng truy xuất xử lý Tiết kiệm nhớ CuuDuongThanCong.com Spring 2017 https://fb.com/tailieudientucntt Data structure & Algorithm Kiểu liệu gì? Định nghĩa Kiểu liệu (data type) T = (V , O) V tập hợp giá trị cho kiểu liệu T O tập hợp thao tác định nghĩa V Ví dụ Xét T short int V = {−32768, 32767} O = {+, −, ∗, /} CuuDuongThanCong.com Spring 2017 https://fb.com/tailieudientucntt Data structure & Algorithm 10 Kiểu liệu gì? (cont.) Kiểu liệu ngơn ngữ lập trình phân loại thành Kiểu liệu Kiểu liệu có cấu trúc Kiểu liệu trừu tượng CuuDuongThanCong.com Spring 2017 https://fb.com/tailieudientucntt Data structure & Algorithm 11 Kiểu liệu Định nghĩa Các ngơn ngữ lập trình (C, C++, Java, ) có sẵn kiểu liệu cho người lập trình sử dụng CuuDuongThanCong.com Spring 2017 Bảng 1: Các kiểu liệu Kiểu liệu bool char, unsigned char short, unsigned short int, unsigned int long, unsigned long long long, unsigned long long float double Kích thước (byte) 1 4 8 https://fb.com/tailieudientucntt Data structure & Algorithm 12 Kiểu liệu có cấu trúc Định nghĩa Các ngơn ngữ lập trình cung cấp công cụ để tạo kiểu liệu cách kết hợp kiểu liệu theo cấu trúc sau Kiểu mảng Kiểu chuỗi Kiểu cấu trúc CuuDuongThanCong.com Spring 2017 https://fb.com/tailieudientucntt Data structure & Algorithm 13 Kiểu liệu mảng Định nghĩa Mảng dùng để biểu diễn liệu dạng dãy phần tử có kiểu với CuuDuongThanCong.com Spring 2017 https://fb.com/tailieudientucntt Data structure & Algorithm 14 Kiểu liệu chuỗi Định nghĩa Chuỗi ký tự mảng chiều mà phần tử ký tự ký tự cuối ký tự NULL CuuDuongThanCong.com Spring 2017 https://fb.com/tailieudientucntt Data structure & Algorithm 15 Kiểu liệu cấu trúc Định nghĩa Kiểu liệu cấu trúc nhóm thành phần có kiểu không giống thành phần xác định tên riêng Kiểu liệu thành phần kiểu lại kiểu có cấu trúc CuuDuongThanCong.com Spring 2017 https://fb.com/tailieudientucntt Data structure & Algorithm 16 Kiểu liệu trừu tượng Định nghĩa Kiểu liệu trừu tượng (abstract data type - ADT ) tập hợp giá trị, thao tác Mỗi thao tác ADT xác định thông qua liệu vào liệu Không đề cập cách thức cài đặt CuuDuongThanCong.com Spring 2017 https://fb.com/tailieudientucntt Data structure & Algorithm 17 Kiểu liệu trừu tượng (cont.) Ví dụ ADT stack tập hợp phần tử có thao tác chính: push pop top ADT stack cài đặt nhiều cách khác nhau: mảng chiều danh sách liên kết đơn danh sách liên kết đôi CuuDuongThanCong.com Spring 2017 https://fb.com/tailieudientucntt Data structure & Algorithm 18 Tài liệu tham khảo Apostol, T M (1976) Introduction to analytic number theory Springer Bauer, F L and Samelson, K (2001) Verfahren zur automatischen verarbeitung von kodierten daten und rechenmaschine zur ausübung des verfahrens In Pioneers and Their Contributions to Software Engineering, pages 29–40 Springer Boyer, R S and Moore, J S (1977) A fast string searching algorithm Communications of the ACM, 20(10):762–772 CuuDuongThanCong.com Spring 2017 https://fb.com/tailieudientucntt Data structure & Algorithm 19 Tài liệu tham khảo (cont.) Cook, S A (1971) The complexity of theorem-proving procedures In Proceedings of the third annual ACM symposium on Theory of computing, pages 151–158 ACM Gonnet, G H and Baeza-Yates, R (1991) Handbook of algorithms and data structures: in Pascal and C Addison-Wesley Longman Publishing Co., Inc Karp, R M and Rabin, M O (1987) Efficient randomized pattern-matching algorithms IBM Journal of Research and Development, 31(2):249–260 Knuth, D E (1976) Big omicron and big omega and big theta ACM Sigact News, 8(2):18–24 CuuDuongThanCong.com Spring 2017 https://fb.com/tailieudientucntt Data structure & Algorithm 20 Tài liệu tham khảo (cont.) Knuth, D E., Morris, Jr, J H., and Pratt, V R (1977) Fast pattern matching in strings SIAM journal on computing, 6(2):323–350 Landau, E., Goodman, J E., Bateman, P T., and Kohlbecker, E E (1958) Elementary number theory Chelsea Publishing Company New York Sedgewick, R (2002) Algorithms in Java, Parts 1-4, volume Addison-Wesley Professional Shell, D L (1959) A high-speed sorting procedure Communications of the ACM, 2(7):30–32 CuuDuongThanCong.com Spring 2017 https://fb.com/tailieudientucntt Data structure & Algorithm 21 Tài liệu tham khảo (cont.) Wirth, N (1986) Algorithms and data structures Prentice-Hall London et al CuuDuongThanCong.com Spring 2017 https://fb.com/tailieudientucntt Data structure & Algorithm 22 ... Nén liệu Cấu trúc liệu nâng cao Đồ thị CuuDuongThanCong.com Spring 2 017 https://fb.com/tailieudientucntt Data structure & Algorithm Cấu trúc liệu giải thuật Giải thuật + Cấu trúc liệu = Chương. .. structure & Algorithm Cấu trúc liệu giải thuật (cont.) Việc lựa chọn cấu trúc liệu giải thuật tạo khác biệt cho chương trình Chạy vài giây Chạy vài ngày CuuDuongThanCong.com Spring 2 017 https://fb.com/tailieudientucntt... tích tốn cẩn thận biết cấu trúc liệu tốt để giải CuuDuongThanCong.com Spring 2 017 https://fb.com/tailieudientucntt Data structure & Algorithm Cấu trúc liệu Định nghĩa Cấu trúc liệu (data structure)