Upload
hiep0109
View
3.085
Download
8
Embed Size (px)
DESCRIPTION
Tổng quan về cấu trúc dữ liệu và giải thuật
Citation preview
CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT
DATA STRUCTURE AND ALGORITHMS
GV: Phạm Tuấn HiệpEmail: [email protected]
Chương 1: Tổng quan về CTDL và GT
Nội dung môn học
Chương 1: Tổng quan về CTDL và GT Chương 2.1: Các giải thuật Tìm kiếm Chương 2.2: Các giải thuật Sắp xếp Chương 3.1: Danh sách liên kết Chương 3.2: Ngăn xếp - Hàng đợi Chương 4: Cây
2
Chương 1: Tổng quan về CTDL và GT
Đánh giá kết quả
1. Kiểm tra giữa kỳ: trắc nghiệm Điểm Kiểm tra giữa kỳ < 4 không được thi kết thúc môn
học lại
2. Thi kết thúc môn: trắc nghiệm
3. Kiểm tra thường kỳ: thực hành
3
Chương 1: Tổng quan về CTDL và GT
Tài liệu học tập
Tham khảo: Giáo trình Cấu trúc dữ liệu 1, Trần Hạnh Nhi – Dương Anh
Đức, Trường ĐHKHTN – ĐHQG TP.HCM.
Phần mềm lập trình: C-Free Visual C++ …
4
Chương 1: Tổng quan về CTDL và GT
Nhắc nhở một số quy định
Đi học đúng giờ Đeo thẻ SV Không để chuông điện thoại reo trong giờ học Không nghe điện thoại, nhắn tin trong giờ học Không nói chuyện riêng, làm ồn khi nghe giảng Mang đầy đủ tài liệu học tập của môn học (khi
học LT và TH): giáo trình, bài tập, tập chép bài (hoặc slide bài giảng), usb để lưu bài tập
Phải làm bài tập ở nhà
Nếu vi phạm: Nhắc nhở chung Bị mời ra khỏi lớp Xóa tên khỏi môn học 5
TỔNG QUAN VỀ CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT
Chương 16
Chương 1: Tổng quan về CTDL và GT
Nội dung
Khái niệm cấu trúc dữ liệu Khái niệm giải thuật (thuật toán, thuật giải) Mối liên hệ giữa cấu trúc dữ liệu và giải thuật
7
Chương 1: Tổng quan về CTDL và GT
Khái niệm dữ liệu
Tại sao sử dụng máy tính để sử lý dữ liệu? Nhanh hơn, chính xác hơn Giải quyết nhiều bài toán đòi hỏi khối lượng tính
toán cực lớn, hoặc những bài toán phức tạp với khối lượng dữ liệu lớn
8
Chương 1: Tổng quan về CTDL và GT
Khái niệm dữ liệu
Trong tin học: Dữ liệu để biểu diễn các thông tin cần thiết cho bài
toán Các dữ liệu máy tính:
Dữ liệu đầu vào, dữ liệu trung gian, dữ liệu đầu ra
9
Chương 1: Tổng quan về CTDL và GT
Cấu trúc dữ liệu là gì?10
Chương 1: Tổng quan về CTDL và GT
Cấu trúc dữ liệu là gì?11
Chương 1: Tổng quan về CTDL và GT
Cấu trúc dữ liệu là gì?
Khái niệm: Cấu trúc dữ liệu (data structure) là một phương
thức cụ thể để lưu trữ và tổ chức dữ liệu trong máy tính để việc xử lý hiệu quả
Các kiểu cấu trúc dữ liệu: Dữ liệu không cấu trúc (kiểu dữ liệu đơn hay còn gọi
là kiểu dữ liệu cơ sở) Mỗi đối tượng dữ liệu là một phần tử đơn lẻ Ví dụ: int, float, char,…
Dữ liệu có cấu trúc Được cấu thành bởi các phần tử dữ liệu cơ sở Ví dụ: Mảng, Chuỗi, Cấu trúc (struct), …
12
Chương 1: Tổng quan về CTDL và GT
Kiểu dữ liệu cơ sở
Số nguyên
13
Chương 1: Tổng quan về CTDL và GT
Kiểu dữ liệu cơ sở
Số thực
Luận lý (đúng/sai)
14
Chương 1: Tổng quan về CTDL và GT
Kiểu dữ liệu có cấu trúc15
Chương 1: Tổng quan về CTDL và GT
Kiểu dữ liệu có cấu trúc16
Chương 1: Tổng quan về CTDL và GT
Kiểu dữ liệu có cấu trúc
Kiểu cấu trúc (struct) Ví dụ: Bảng thông tin sinh viên như sau:
17
Chương 1: Tổng quan về CTDL và GT
Khái niệm giải thuật18
Chương 1: Tổng quan về CTDL và GT
Các đặc trưng của giải thuật
Có dữ liệu Đầu vào (Input) Có dữ liệu kết quả Đầu ra (Output) Tính chính xác (Precision): Các bước của giải thuật được
mô tả chính xác Tính hữu hạn (Finiteness): Giải thuật phải đưa được đầu ra
sau một số bước hữu hạn với mọi đầu vào Tính đơn trị (Uniqueness): Các kết quả trung gian của từng
bước thực hiện giải thuật được xác định một cách đơn trị và chỉ phụ thuộc đầu vào và các kết quả của các bước trước
Tính tổng quát (Generality): Giải thuật có thể áp dụng để giải mọi bài toán có dạng đã cho
19
Chương 1: Tổng quan về CTDL và GT
Các cách biểu diễn giải thuật
Ngôn ngữ tự nhiên Lưu đồ (Flow chart) Mã giả (Pseudo code) Ngôn ngữ lập trình
20
Chương 1: Tổng quan về CTDL và GT
Các ký hiệu lưu đồ21
Chương 1: Tổng quan về CTDL và GT
Các ký hiệu mã giả
IF <điều kiện> THEN … ENDIF IF <điều kiện> THEN … ELSE … ENDIF WHILE <điều kiện> DO … ENDWHILE DO … UNTIL <điều kiện> DISPLAY … RETURN …
22
Chương 1: Tổng quan về CTDL và GT
Ví dụ
Bài toán: Cho 3 số nguyên a, b, c. Mô tả giải thuật tìm số lớn nhất trong 3 số đã cho
Phân tích Đầu vào: 3 số nguyên a, b, c Đầu ra: số lớn nhất trong 3 số
23
Chương 1: Tổng quan về CTDL và GT
Ví dụ
Dùng ngôn ngữ tự nhiên mô tả giải thuật tìm số lớn nhất trong 3 số a, b, c Bước 1. Gán max = a; Bước 2. Nếu b > max thì gán max = b; Bước 3. Nếu c > max thì gán max = c;
24
Chương 1: Tổng quan về CTDL và GT
Ví dụ
Dùng mã giả mô tả giải thuật tìm số lớn nhất trong 3 số a, b, cmax = a
IF b > max THEN
max = b
ENDIF
IF c > max THEN
max = c
ENDIF
DISPLAY max
25
Chương 1: Tổng quan về CTDL và GT
Ví dụ
Dùng lưu đồ mô tả giải thuật tìm số lớn nhất trong 3 số a, b, c
26
Chương 1: Tổng quan về CTDL và GT
Độ phức tạp của giải thuật
Một thuật toán hiệu quả Sử dụng tài nguyên thấp: bộ nhớ, thời gian sử dụng
CPU, … Phương pháp đánh giá độ phức tạp của giải thuật
Dựa trên thời gian để thực hiện giải thuật đến khi ra được kết quả
Dựa trên số phép toán để thực hiện giải thuật
27
Chương 1: Tổng quan về CTDL và GT
Tính thời gian thực hiện giải thuật
Hoàn toàn có thể đo bằng cách lập trình
28
Chương 1: Tổng quan về CTDL và GT
Tính số phép toán thực hiện giải thuật
n – Kích thước đầu vào của dữ liệu Mô tả độ phức tạp của thuật toán qua một hàm O(n) Hai nguyên tắc đánh giá
Nguyên tắc cộng Nguyên tắc nhân
29
Chương 1: Tổng quan về CTDL và GT
Tính số phép toán thực hiện giải thuật
30
Chương 1: Tổng quan về CTDL và GT
Tính số phép toán thực hiện giải thuật
31
Chương 1: Tổng quan về CTDL và GT
Mối liên hệ giữa CTDL và GT
Giải thuật = phép xử lý Đối tượng của giải thuật chính là dữ liệu được tổ chức
thành các cấu trúc CTDL & GT gắn chặt với nhau. Niklaus Wirth đã tổng
kết:
Cấu trúc dữ liệu + Giải thuật = Chương trình Nếu thay đổi cấu trúc dữ liệu thì giải thuật cũng sẽ thay
đổi theo
32
Chương 1: Tổng quan về CTDL và GT
Mối liên hệ giữa CTDL và GT
Ví dụ quản lý danh bạ điện thoại Dữ liệu gồm:
Họ và tên Số điện thoại
33
Chương 1: Tổng quan về CTDL và GT
Mối liên hệ giữa CTDL và GT
Bài toán tìm số điện thoại theo họ tên: Nếu danh bạ không có tổ chức thì dẫn đến giải thuật là
tìm tuần tự từ đầu đến cuối Nếu danh bạ (họ và tên) tổ chức theo thứ tự a,b,c thì ta
có thể tìm kiếm nhanh hơn
34
Chương 1: Tổng quan về CTDL và GT
Hướng tiếp cận môn CTDL và GT
Tìm hiểu về mặt lý thuyết và chi tiết cài đặt các cấu trúc dữ liệu và giải thuật Điểm mạnh: hiểu sâu về bản chất, có thể xây dựng
CTDL> cho những bài toán phức tạp Điểm yếu: khó hiểu, đòi hỏi sinh viên nắm vững cả lý
thuyết và công cụ lập trình
35
Chương 1: Tổng quan về CTDL và GT
Tổng kết
Cấu trúc dữ liệu là cách tổ chức các dữ liệu cơ bản thành các cấu trúc như mảng, chuỗi, file, …
Giải thuật là tập hữu hạn có thứ tự các bước tác động lên dữ liệu nào đó để sau một số hữu hạn lần thực hiện sẽ cho ta kết quả
Việc lựa chọn cấu trúc dữ liệu và giải thuật cho bài toán là rất quan trọng
36