Giảng viên: Văn Chí Nam – Nguyễn Thị Hồng Nhung – Đặng Nguyễn Đức Tiến According to Peter J Denning, the fundamental question underlying computer science is, "What can be (efficiently) automated?“ [Wikipedia.org, tháng – 2009] Cấu trúc liệu giải thuật - HCMUS 2016 ©FIT-HCMUS Để giải nhu cầu tự động hóa, nhu cầu Khoa học Máy tính, nhà khoa học máy tính phải tạo trừu tượng hóa tốn giới thực, để người sử dụng máy tính hiểu biểu diễn xử lý bên máy tính Ví dụ: Mơ hình hóa việc biểu diễn cầu thủ bóng đá Mơ hình hóa mạch điện … Cấu trúc liệu giải thuật - HCMUS 2016 Thông thường, tìm trừu tượng hóa thường khó, vì: Giới hạn khả xử lý máy Phải cung cấp cho máy mô hình giới đến mức chi tiết người có, khơng kiện mà nguyên tắc mối liên hệ Cấu trúc liệu giải thuật - HCMUS 2016 ©FIT-HCMUS Sự trừu tượng hóa sử dụng đơn giản hóa, thay tình phức tạp nhiều chi tiết giới thực mơ hình dễ hiểu để giải tốn Có thể hiểu loại bớt chi tiết có tác dụng khơng có tác dụng lời giải tốn -> tạo mơ hình cho phép giải với chất toán Cấu trúc liệu giải thuật - HCMUS 2016 Tách biệt mục đích module khỏi phần cài đặt Có thể sử dụng module mà không cần phải biết đến cài đặt thực tế Nghĩ “CÁI GÌ” thay “LÀM NHƯ THẾ NÀO” Cấu trúc liệu giải thuật - HCMUS 2016 ©FIT-HCMUS Che dấu thơng tin Cấu trúc liệu giải thuật - HCMUS 2016 10 Cập nhật cài đặt không ảnh hưởng đến chương trình Cấu trúc liệu giải thuật - HCMUS 2016 ©FIT-HCMUS 11 Kiểu liệu (của biến) xác định tập giá trị mà biến chấp nhận phép tốn thực giá trị Ví dụ: Kiểu liệu kiểu số nguyên, Kiểu liệu kiểu số thực, Kiểu liệu ký tự Cấu trúc liệu giải thuật - HCMUS 2016 12 Kiểu liệu sơ cấp kiểu liệu mà giá trị đơn dụ: Trong ngơn ngữ lập trình C chuẩn, kiểu int gọi kiểu sơ cấp kiểu bao gồm số nguyên (tùy kiến trúc máy tính, 16 bit, 32 bit hay 64 bit) phép toán +, -, *, /, %… Ví Mỗi ngơn ngữ có cung cấp sẵn kiểu liệu (basic data type) dùng thành phần sở để tạo nên liệu có cấu trúc phức tạp Cấu trúc liệu giải thuật - HCMUS 2016 ©FIT-HCMUS 13 Kiểu liệu có cấu trúc (Structured Data Type): kiểu liệu mà giá trị kết hợp giá trị khác Ví dụ: Kiểu liệu có cấu trúc gồm giá trị giao dịch phiên giao dịch (chứng khốn) Kiểu liệu mơ tả lí lịch sinh viên … Còn gọi kiểu liệu tổ hợp Cấu trúc liệu giải thuật - HCMUS 2016 14 Kiểu liệu trừu tượng (abstract data type - ADT) bao gồm tập hợp liệu thao tác liệu Cần phải ý nhiều thủ tục liệu GÌ thay ý LÀM THẾ NÀO cài đặt thực chúng Ví dụ: Kiểu liệu trừu tượng PhanSo Kiểu liệu trừu tượng Ngay Kiểu liệu trừu tượng Gio Cấu trúc liệu giải thuật - HCMUS 2016 ©FIT-HCMUS 15 FIGURE 1-4 A dispenser of chilled water, crushed ice, and ice cubes Cấu trúc liệu giải thuật - HCMUS 2016 16 FIGURE 1-5 A wall of ADT operations isolates a data structure from the program that uses it Cấu trúc liệu giải thuật - HCMUS 2016 ©FIT-HCMUS 17 Thiết kế Kiểu liệu trừu tượng, đặt câu hỏi: Loại liệu cần dùng đến? Names IDs Numerical Thao data tác cần thực hiện? Khởi tạo (Initialize) Hiển thị (Display) Tính tốn (Calculations) Cấu trúc liệu giải thuật - HCMUS 2016 18 Thiết kế kiểu liệu trừu tượng PHANSO biểu diễn phân số thực tế Cấu trúc liệu giải thuật - HCMUS 2016 ©FIT-HCMUS 19 Kiểu liệu trừu tượng PHANSO * Dữ liệu: - Tử số: nguyên - Mẫu số: nguyên khác * Thao tác: + Cộng phân số: cộng phân số để tạo thành phân số tổng Ví dụ: 1/2 + 1/3 -> 5/6 + Trừ phân số: trừ phân số để tạo thành phân số hiệu Ví dụ: 1/2 - 1/3 -> 1/6 + Nhân phân số: nhân phân số để tạo thành phân số tích Ví dụ: 1/2 * 1/3 -> 1/6 + Chia phân số + Rút gọn phân số: rút gọn phân số Ví dụ: 4/6 -> 2/3 Cấu trúc liệu giải thuật - HCMUS 2016 20 Thiết kế kiểu liệu trừu tượng NGAY biểu diễn ngày thực tế Cấu trúc liệu giải thuật - HCMUS 2016 ©FIT-HCMUS 24 Kiểu liệu trừu tượng DANHSACH: Biểu diễn danh sách thực tế (ví dụ: DANH SÁCH sinh viên, DANH SÁCH mơn học, DANH SÁCH đường tròn, DANH SÁCH phân số, ) Cấu trúc liệu giải thuật - HCMUS 2016 25 Dữ liệu Thao tác - Tập hợp (collection) phần tử kiểu liệu + Tạo danh sách (rỗng) + Thêm (mới) vào danh sách phần tử: Thêm vị trí đầu danh sách Thêm cuối danh sách, + Xóa danh sách (đang tồn tại): xóa tất phần tử + Xóa khỏi danh sách phần tử + Duyệt danh sách + Tìm kiếm phần tử (theo vài loại thông tin) danh sách + Sắp xếp danh sách phần tử theo một/một vài tiêu chí, + Gộp danh sách + Tách thành danh sách Cấu trúc liệu giải thuật - HCMUS 2016 ©FIT-HCMUS 10 26 Cấu trúc liệu thành phần ngôn ngữ lập trình dùng để lưu giữ liệu kiểu liệu trừu tượng dụ mảng (array), tập tin (file), danh sách liên kết (linked list), nhị phân,… Ví Các cấu trúc liệu chọn phải có khả biểu diễn tập input output toán cần giải Cấu trúc liệu giải thuật - HCMUS 2016 27 Mặc dù tên nghe giống nhau, “danh sách” “danh sách liên kết” khái niệm khác sách kiểu liệu trừu tượng (ADT) Danh sách liên kết cấu trúc liệu Danh Cấu trúc liệu giải thuật - HCMUS 2016 ©FIT-HCMUS 11 28 A bag is a container Contains finite number of data objects All objects of same type Objects in no particular order Objects may be duplicated Cấu trúc liệu giải thuật - HCMUS 2016 29 Get the number of items currently in the bag See whether the bag is empty Add a given object to bag Remove occurrence of specific object from bag Remove all objects from bag Cấu trúc liệu giải thuật - HCMUS 2016 ©FIT-HCMUS 12 30 Count the number of times certain object occurs in bag Test whether bag contains particular object Look at all objects in bag Cấu trúc liệu giải thuật - HCMUS 2016 31 FIGURE 1-6 A CRC card for a class Bag Cấu trúc liệu giải thuật - HCMUS 2016 ©FIT-HCMUS 13 32 FIGURE 1-7 UML notation for the class Bag Cấu trúc liệu giải thuật - HCMUS 2016 ©FIT-HCMUS 14 ... bit, 32 bit hay 64 bit) phép toán +, -, *, /, %… Ví Mỗi ngơn ngữ có cung cấp sẵn kiểu liệu (basic data type) dùng thành phần sở để tạo nên liệu có cấu trúc phức tạp Cấu trúc liệu giải thuật... liệu tổ hợp Cấu trúc liệu giải thuật - HCMUS 2016 14 Kiểu liệu trừu tượng (abstract data type - ADT) bao gồm tập hợp liệu thao tác liệu Cần phải ý nhiều thủ tục liệu GÌ thay ý LÀM THẾ NÀO... water, crushed ice, and ice cubes Cấu trúc liệu giải thuật - HCMUS 2016 16 FIGURE 1-5 A wall of ADT operations isolates a data structure from the program that uses it Cấu trúc liệu giải thuật