29
Giảng viên: Văn Chí Nam – Nguyễn Thị Hồng Nhung – Đặng Nguyễn Đức Tiến

CTDL 00 Introduction

Embed Size (px)

Citation preview

Page 1: CTDL 00 Introduction

Giảng viên:

Văn Chí Nam – Nguyễn Thị Hồng Nhung – Đặng Nguyễn Đức Tiến

Page 2: CTDL 00 Introduction

Cấu trúc dữ liệu và giải thuật - HCMUS 2010

2

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

Page 3: CTDL 00 Introduction

Cấu trúc dữ liệu và giải thuật - HCMUS 2010

3

Lý thuyết:

• Văn Chí Nam ([email protected])

• Giờ học: t4-t6 sáng T3 hàng tuần

• Địa điểm: C43

Thực hành:

• t4-t6 ngày T5 (I62)

• t7-t12t ngày T6 (I71)

• t7-t12t ngày T6 (I62)

• Bắt đầu từ 20/09/2010

Page 4: CTDL 00 Introduction

Cấu trúc dữ liệu và giải thuật - HCMUS 2010

4

http://courses.cs.hcmus.edu.vn/

Sử dụng cho các việc:

Đặt câu hỏi

Giải đáp thắc mắc

Nhận thông báo

Nhận/nộp bài tập

Page 5: CTDL 00 Introduction

Cấu trúc dữ liệu và giải thuật - HCMUS 2010

5

Điểm lý thuyết: 6 điểm

Thi viết.

Điểm thực hành: 4 điểm

Hình thức thi: Theo quy định của Giáo viên HDTH.

Điểm thưởng: Tính theo từng phần, không cộng dồn.

Bất kỳ trường hợp gian lận nào bị phát hiện trong quá

trình học, thi, bài tập,… sẽ bị phạt theo qui định sau:

Lần 1: trừ 30% trên tổng số điểm của môn học.

Lần 2: trừ 50% trên tổng số điểm của môn học.

Page 6: CTDL 00 Introduction

Cấu trúc dữ liệu và giải thuật - HCMUS 2010

6

KHÔNG bắt buộc phải có mặt. Nếu đi học, phải

đi học đúng giờ và nghiêm túc.

Có thể có các bài kiểm tra nhỏ với nội dung của

phần học có liên quan.

Có thể có điểm trừ cho việc chuẩn bị bài, làm

bài không tốt.

Page 7: CTDL 00 Introduction

Cấu trúc dữ liệu và giải thuật - HCMUS 2010

7

Ngôn ngữ lập trình: C/C++

Công cụ lập trình: Visual C++ 6 hoặ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 chú đầy đủ. Đặt tên biến và tên hàm phải

gợi nhớ, có qui ước xác định.

Page 8: CTDL 00 Introduction

Cấu trúc dữ liệu và giải thuật - HCMUS 2010

8

Adam Drozdek (2001), Data structures and

Algorithms in C++ (Second Edition)

Dương Anh Đức – Trần Hạnh Nhi (2003), Nhập môn

Cấu trúc dữ liệu và giải thuật, NXB ĐHQG TP.HCM

Đinh Mạnh Tường (2008), Cấu trúc dữ liệu và thuật

toán, NXB ĐHQG HN.

Đỗ Xuân Lôi (2007), Cấu trúc dữ liệu và 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)

Page 9: CTDL 00 Introduction

Cấu trúc dữ liệu và giải thuật - HCMUS 2010

9

1. Giới thiệu

2. Các khái niệm cơ bản

3. Các cấu trúc dữ liệu cơ bản

4. Cấu trúc cây

5. B-cây và ứng dụng

6. Nén dữ liệu

7. Các thuật toán sắp xếp

8. Các chiến lược tìm kiếm

9. Đối sánh chuỗi

Page 10: CTDL 00 Introduction

Cấu trúc dữ liệu và giải thuật - HCMUS 2010

10

Cái khái niệm cơ bản

• Kiểu dữ liệu: cơ bản, có cấu trúc, trừu tượng

• Đánh giá thuật toán

• Ôn tập: Con trỏ, Đệ qui

Các cấu trúc dữ liệu cơ bản:

• Danh sách liên kết

• Ngăn xếp

• Hàng đợi

Page 11: CTDL 00 Introduction

Cấu trúc dữ liệu và giải thuật - HCMUS 2010

11

Cấu trúc cây:

• Cây tổng quát

• Cây nhị phân tìm kiếm và các thao tác cơ bản

• Cây nhị phân tìm kiếm tự cân bằng: cây AVL, cây AA, cây Đỏ-Đen (đọc thêm)

B-cây và ứng dụng:

• Cây tìm kiếm m-nhánh

• B-cây, Cây B+

Page 12: CTDL 00 Introduction

Cấu trúc dữ liệu và giải thuật - HCMUS 2010

12

Nén dữ liệu:

• Tổng quan về mã hóa (nén)

• Nén Huffman: tĩnh và động

• Nén Run-Length Encoding (đọc thêm)

Các thuật toán sắp xếp:

• Selection Sort

• Heap Sort, Quick Sort, Merge Sort

Page 13: CTDL 00 Introduction

Cấu trúc dữ liệu và giải thuật - HCMUS 2010

13

Các chiến lược tìm kiếm:

• Tìm kiếm tuần tự

• Tìm kiếm nhị phân

• Bảng băm và các phương pháp xử lý đụng độ

Đối sánh chuỗi:

• Brute force

• Morris-Pratt, Knuth-Morris-Pratt

Page 14: CTDL 00 Introduction

Cấu trúc dữ liệu và giải thuật - HCMUS 2010

14

Mục đích môn học

Ngôn ngữ lập trình

Thuật toán

Biểu diễn thuật toán

Page 15: CTDL 00 Introduction

Cấu trúc dữ liệu và giải thuật - HCMUS 2010

15

Học môn này để làm gì?

Page 16: CTDL 00 Introduction

Cấu trúc dữ liệu và giải thuật - HCMUS 2010

16

Page 17: CTDL 00 Introduction

Cấu trúc dữ liệu và giải thuật - HCMUS 2010

17

George Boole

Page 18: CTDL 00 Introduction

Cấu trúc dữ liệu và giải thuật - HCMUS 2010

18

Alan Turing

Page 19: CTDL 00 Introduction

Cấu trúc dữ liệu và giải thuật - HCMUS 2010

19

Von Neumann

Page 20: CTDL 00 Introduction

Cấu trúc dữ liệu và giải thuật - HCMUS 2010

20

An algorithm is a sequence of steps required to accomplish a task (Al-Khwārizmī).

Thuật toán là tập hợp hữu hạn các lệnh chính xác để thực hiện tính toán hoặc để giải một bài toán (Rosen)

Al-Khwārizmī

Page 21: CTDL 00 Introduction

Cấu trúc dữ liệu và giải thuật - HCMUS 2010

21

Nhập dữ liệu

Xử lýXuất

dữ liệu

Page 22: CTDL 00 Introduction

Cấu trúc dữ liệu và giải thuật - HCMUS 2010

22

Tính xác định

Tính đúng đắn

Tính hữu hạn

Tính hiệu quả

Tính tổng quát

Page 23: CTDL 00 Introduction

Cấu trúc dữ liệu và giải thuật - HCMUS 2010

23

Biểu diễn

Lưu đồ

Bảng quyết định

Mã giả

Ngôn ngữ lập

trình

Page 24: CTDL 00 Introduction

Cấu trúc dữ liệu và giải thuật - HCMUS 2010

24

Nhập vào 2 số

nguyên

Tính tổng 2 số

Bắt đầu

Kết thúc

Hiển thị kết quả

Page 25: CTDL 00 Introduction

Cấu trúc dữ liệu và giải thuật - HCMUS 2010

25

Luật

Điều

kiện

Máy in không in C C C C K K K K

Đèn lỗi báo sáng C C K K C C K K

Máy in không được nhận biết C K C K C K C K

Hành

động

Kiểm tra cáp nguồn X

Kiểm tra cáp nối máy tinh – máy

in

X X

Kiểm tra driver X X X X

Kiểm tra/thay mực X X X X

Kiểm tra khe để giấy X X

Page 26: CTDL 00 Introduction

Cấu trúc dữ liệu và giải thuật - HCMUS 2010

26

Cấu trúc dữ liệu là một cách tổ chức các dữ liệu thành một đơn vị hoàn chỉnh bao gồm các thành phần (phần tử) là các dữ liệu cơ bản, các mối liên kết giữa các phần tử ấy và các thao tác cơ bản trên chúng.

Các thao tác này thường được gọi là các phép toán trên cấu trúc dữ liệu xác định. Các phép toán cơ bản thường gặp là tạo lập (create), hủy (dipose), thêm (add), chèn (insert), xóa(delete), tìm kiếm (search),...

Tùy theo yêu cầu của thuật toán, khi thiết kế chương trình người ta định nghĩa và sử dụng các cấu trúc dữ liệu khác nhau. Các cấu trúc dữ liệu cơ bản hay dùng là: mảng (array), danh sách (list), ngăn xếp (stack), hàng đợi (queue),cây(tree),...

[Wikipedia, tháng 6 - 2009]

Page 27: CTDL 00 Introduction

Cấu trúc dữ liệu và giải thuật - HCMUS 2010

27

Cấu trúc dữ liệu

Giải thuật

Chương trình

Page 28: CTDL 00 Introduction

Cấu trúc dữ liệu và giải thuật - HCMUS 2010

28

Programming is for programmers

[C++ in Action]

Page 29: CTDL 00 Introduction

Cấu trúc dữ liệu và giải thuật - HCMUS 2010

29