Upload
phuccntt90
View
68
Download
0
Embed Size (px)
Citation preview
Giảng viên:
Văn Chí Nam – Nguyễn Thị Hồng Nhung – Đặng Nguyễn Đức Tiến
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
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
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
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.
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.
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.
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)
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
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
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+
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
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
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
Cấu trúc dữ liệu và giải thuật - HCMUS 2010
15
Học môn này để làm gì?
Cấu trúc dữ liệu và giải thuật - HCMUS 2010
16
Cấu trúc dữ liệu và giải thuật - HCMUS 2010
17
George Boole
Cấu trúc dữ liệu và giải thuật - HCMUS 2010
18
Alan Turing
Cấu trúc dữ liệu và giải thuật - HCMUS 2010
19
Von Neumann
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ī
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
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
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
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ả
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
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]
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
Cấu trúc dữ liệu và giải thuật - HCMUS 2010
28
Programming is for programmers
[C++ in Action]
Cấu trúc dữ liệu và giải thuật - HCMUS 2010
29