36
CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT DATA STRUCTURE AND ALGORITHMS GV: Phạm Tuấn Hiệp Email: [email protected]

Ctdl c1-tong quan

Embed Size (px)

DESCRIPTION

Tổng quan về cấu trúc dữ liệu và giải thuật

Citation preview

Page 1: Ctdl c1-tong quan

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]

Page 2: Ctdl c1-tong quan

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

Page 3: Ctdl c1-tong quan

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

Page 4: Ctdl c1-tong quan

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

Page 5: Ctdl c1-tong quan

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

Page 6: Ctdl c1-tong quan

TỔNG QUAN VỀ CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT

Chương 16

Page 7: Ctdl c1-tong quan

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

Page 8: Ctdl c1-tong quan

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

Page 9: Ctdl c1-tong quan

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

Page 10: Ctdl c1-tong quan

Chương 1: Tổng quan về CTDL và GT

Cấu trúc dữ liệu là gì?10

Page 11: Ctdl c1-tong quan

Chương 1: Tổng quan về CTDL và GT

Cấu trúc dữ liệu là gì?11

Page 12: Ctdl c1-tong quan

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

Page 13: Ctdl c1-tong quan

Chương 1: Tổng quan về CTDL và GT

Kiểu dữ liệu cơ sở

Số nguyên

13

Page 14: Ctdl c1-tong quan

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

Page 15: Ctdl c1-tong quan

Chương 1: Tổng quan về CTDL và GT

Kiểu dữ liệu có cấu trúc15

Page 16: Ctdl c1-tong quan

Chương 1: Tổng quan về CTDL và GT

Kiểu dữ liệu có cấu trúc16

Page 17: Ctdl c1-tong quan

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

Page 18: Ctdl c1-tong quan

Chương 1: Tổng quan về CTDL và GT

Khái niệm giải thuật18

Page 19: Ctdl c1-tong quan

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

Page 20: Ctdl c1-tong quan

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

Page 21: Ctdl c1-tong quan

Chương 1: Tổng quan về CTDL và GT

Các ký hiệu lưu đồ21

Page 22: Ctdl c1-tong quan

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

Page 23: Ctdl c1-tong quan

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

Page 24: Ctdl c1-tong quan

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

Page 25: Ctdl c1-tong quan

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

Page 26: Ctdl c1-tong quan

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

Page 27: Ctdl c1-tong quan

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

Page 28: Ctdl c1-tong quan

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

Page 29: Ctdl c1-tong quan

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

Page 30: Ctdl c1-tong quan

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

Page 31: Ctdl c1-tong quan

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

Page 32: Ctdl c1-tong quan

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

Page 33: Ctdl c1-tong quan

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

Page 34: Ctdl c1-tong quan

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

Page 35: Ctdl c1-tong quan

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&GT 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

Page 36: Ctdl c1-tong quan

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