Bài giảng Cơ sở dữ liệu giải thuật: Bài 1 - Giới thiệu bao gồm những nội dung về cấu trúc dữ liệu, thuật toán, biểu diễn thuật toán, cách viết giải mã. Mời các bạn tham khảo bài giảng để bổ sung thêm kiến thức về lĩnh vực này.
Bài 1: Giới thiệu Giảng viên: Hoàng Thị Điệp Khoa Công nghệ Thông tin – Đại học Công Nghệ Tài liệu • [Giáo trình] Đinh Mạnh Tường CTDL Thuật toán: Cách tiếp cận định hướng đối tượng sử dụng C++ NXB DHQGHN • [Tham khảo] Main M., Savitch W Data Structures and other objects using C++ Addison Wesley 1998 • [Tham khảo] Mark Alen Weiss Data Structures and Problem Solving using C++ Addison Wesley 2000 diepht@vnu Lịch trình • • • • • • • • • • • • Phân tích thuật tốn Trừu tượng hố liệu Danh sách Danh sách liên kết Ngăn xếp Hàng đợi Cây Bảng băm Hàng ưu tiên Thiết kế thuật toán Sắp xếp Đồ thị diepht@vnu Ứng dụng từ điển Anh-Việt! diepht@vnu Tổ chức liệu Tra từ Thêm từ Xóa từ diepht@vnu int2203/w01 Giải tốn tin học • • • • • • Đặc tả vấn đề Thiết kế cấu trúc liệu Thiết kế giải thuật Cài đặt (C++, Java…) Thử nghiệm sửa lỗi Tối ưu chương trình diepht@vnu Đặc tả vấn đề • Khác với tốn t tốn học • Ví dụ: cài đặt hàm số phức tạp – Khai triển chuỗi vô hạn – Xấp xỉ • Ví dụ: – Một dự án có n người tham gia thảo luận, họ muốn chia thành nhóm nhóm thảo luận riêng phần dự án Nhóm có người trình lên nhiêu ý kiến Nếu lấy nhóm ý kiến đem ghép lại ý kiến triển khai dự án Hãy tìm cách chia để số ý kiến cuối thu lớn diepht@vnu Cấu trúc liệu • Cấu trúc liệu cách tổ chức lưu giữ liệu máy tính cho hiệu • Một cấu trúc liệu liệu phức hợp – gồm nhiều thành phần liệu (cơ sở dựng sẵn) – liên kết thành phần liệu • mảng • cấu trúc • trỏ diepht@vnu Cấu trúc liệu quan trọng • • • • • • • • • • Tập động – dynamic set Từ điển – dictionary Danh sách – list Ngăn xếp – stack Hàng đợi – queue Cây – tree Cây nhị phân – binary tree Cây tìm kiếm nhị phân – binary search tree Hàng ưu tiên – priority queue Bảng băm – hash table diepht@vnu Thuật tốn • Thuật tốn đặc tả xác dãy bước thực cách máy móc để giải vấn đề • Các tiêu chí đánh giá thuật tốn: – Đơn giản, dễ hiểu – Dễ cài đặt – Cần nhớ – Chạy nhanh diepht@vnu 10 Biểu diễn thuật toán • Sơ đồ khối Ví dụ: tìm UCLN diepht@vnu 14 Ví dụ thuật tốn diepht@vnu 15 Ví dụ 1: Sắp xếp bọt (bubble sort) Ý tưởng: Lần lượt duyệt qua danh sách thí sinh từ cuối lên, hai thí sinh khơng thứ tự, đổi chỗ hai thí sinh Lặp lại trình danh sách xếp 4 Bước (Tuấn, 22) (Thăng , 29) (Vinh, 26) (Ánh , 27) Bước 1 (Tuấn, 22) (Thăng, 29) (Ánh, 27) (Vinh, 26) Bước Bước (Thăng, 29) (Ánh, 27) (Tuấn, 22) (Vinh, 26) (Thăng, 29) (Ánh, 27) (Vinh, 26) (Tuấn, 22) diepht@vnu Bước (Thăng, 29) (Tuấn, 22) (Ánh, 27) (Vinh, 26) 16 diepht@vnu 17 Ví dụ 1’: Sắp xếp danh sách website (google search) Google có danh sách N website trả cho truy vấn q Website x có độ ưu tiên f(x) Hãy xếp website theo độ ưu tiên giảm dần Câu hỏi: Có thể dùng bubble sort không? Trả lời: Được, không hiệu diepht@vnu 18 Ví dụ 2: Danh bạ điện thoại Viết chương trình quản lý danh bạ điện thoại tồn thành phố Hà Nội, cho thao tác sau hiệu nhất: Tìm số điện thoại Thêm số điện thoại Xóa số điện thoại diepht@vnu 19 Ví dụ 3: Tìm đường tốt • Xây dựng hệ thống phần mềm đường tốt cho người dùng Đường ngắn Đường qua đèn xanh – đèn đỏ Đường tắc diepht@vnu 20 Ví dụ 3: Tìm đường tốt (google map) diepht@vnu 21 Ví dụ 3: Tìm đường tốt (google map) diepht@vnu 22 Ví dụ 4: Xây dựng hệ thống từ điển Viết chương trình từ điển Anh – Việt, cho phép thực thao tác sau: Tìm từ Thêm từ Xóa từ Sửa từ Tìm từ đồng nghĩa diepht@vnu 23 Ví dụ 5: Người bán hàng traveling salesman problem (TSP) Một người bán hàng cần đến thăm N khách hàng N địa điểm khác Tìm hành trình cho người bán hàng cho: Mỗi địa điểm thăm lần, sau quay điểm xuất phát Tổng chi phí lại diepht@vnu 24 Người bán hàng Thuật toán: Thăm địa điểm gần (nearest neighbor tour) Từ điểm xuất phát, thăm điểm theo quy tắc: “Đến thăm điểm chưa thăm gần với điểm nhất” diepht@vnu 25 Người bán hàng Nearest neighbor tour: → → → X → → → → → → → Đương tối ưu: diepht@vnu 1→2 →3→4 →5 →6 →8→7→X→9→1 26 Mục tiêu • Bạn chọn cấu trúc liệu, thuật toán tốt cho ứng dụng diepht@vnu 27 Chuẩn bị tới • Đọc chương 15 giáo trình diepht@vnu 28 ... diepht@vnu Cấu trúc liệu • Cấu trúc liệu cách tổ chức lưu giữ liệu máy tính cho hiệu • Một cấu trúc liệu liệu phức hợp – gồm nhiều thành phần liệu (cơ sở dựng sẵn) – liên kết thành phần liệu • mảng •... Ứng dụng từ điển Anh-Việt! diepht@vnu Tổ chức liệu Tra từ Thêm từ Xóa từ diepht@vnu int2203/w 01 Giải tốn tin học • • • • • • Đặc tả vấn đề Thiết kế cấu trúc liệu Thiết kế giải thuật Cài đặt (C++,... tìm giá trị a Kết thúc thuật tốn diepht@vnu 13 Biểu diễn thuật tốn • Sơ đồ khối Ví dụ: tìm UCLN diepht@vnu 14 Ví dụ thuật tốn diepht@vnu 15 Ví dụ 1: Sắp xếp bọt (bubble sort) Ý tưởng: Lần lượt