Tổng quan - CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT ppsx

103 855 2
Tổng quan - CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT ppsx

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

TRƯỜNG ĐH CÔNG NGHIỆP TP. HCM TT CNTT CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT Giáo viên: Trần Thị Kim Chi DATA STRUCTURES & ALGORITHMS Giới thiệu  Mục tiêu  Nắm vững khái niệm kiểu dữ liệu, kiểu dữ liệu trừu tượng.  Nắm vững và cài đặt được các kiểu dữ liệu trừu tượng cơ bản như danh sách, ngăn xếp, hàng đợi, cây, tập hợp, bảng băm, đồ thị bằng một ngôn ngữ lập trình căn bản.  Vận dụng được các kiểu dữ liệu trừu tượng để giải quyết bài toán đơn giản trong thực tế.  Ngôn ngữ lập trình minh hoạ  Mã giả (pseudocode)  C++ Nội dung chương trình TT Nội dung Số tiết Phân bổ thời gian Ghi chú Lý thuyết Thực hành Tự học 1 Tổng quan 3 3 0 6 2 Đệ quy 6 3 3 10 3 Tìm kiếm 10 6 4 12 4 Sắp xếp 5 3 3 10 5 Chồng (Stacks) 6 3 3 10 6 Hàng đợi (Queues) 6 3 3 12 7 Danh sách và chuỗi 10 6 4 15 8 Các bảng và phục hồi thông tin 10 6 4 10 9 Cây nhị phân 14 9 5 10 10 Cây nhiều nhánh 5 3 2 10 TỔNG 75 45 30 105 Kiến thức tiên quyết  Đã học môn phương pháp lập trình.  Kiến thức về kỹ thuật lập trình.  Sử dụng thành thạo ngôn ngữ C++ Tài liệu  Tài liệu học tập: [1] C & Data Structures, P. S. Deshpande, O. G. Kakde - CHARLES RIVER MEDIA, INC. Hingham, Massachusetts. [2] Robert L.Kruse, Alexander J.Ryba, Data Structures And Program Design In C++, Prentice-Hall International Inc., 1999. [3] Bài giảng & Bài thực hành CTDL - Trường ĐHCN.  Tài liệu tham khảo: [1] Giáo trình Cấu trúc dữ liệu 1, Trần Hạnh Nhi – Dương Anh Đức, Trường DHKHTN – DHQG TP.HCM. [2] Cấu trúc dữ liệu, Nguyễn Trung Trực, Trường DHBK – DHQG TP.HCM [3] Nguyễn Ngô Bảo Trân, Giáo trình cấu trúc dữ liệu và giải thuật – Trường Đại học Bách Khoa TP.HCM, 2005. Tiêu chuẩn đánh giá Kiểm tra và Thi Điểm Tuần Kiểm tra thường xuyên 10% Bất kỳ Thi giữa kỳ 20% Tuần5 Thi cuối kỳ 50% Tuần 9 Báo cáo tiểu luận 20% Hàng tuần Yêu cầu đối với sinh viên: • Dự lớp: lý thuyết trên 80% , thực hành bắt buộc 100% • Bài tập: hoàn thành các bài tập trên lớp và ở nhà • Tham gia đầy đủ các buổi thảo luận của nhóm Trao đổi thông tin Địa chỉ mail: • Kimchi_12041972@yahoo.com Địa chỉ download tài liệu: • http://my.opera.com/LinhChi10/blog/ Tổng quan 1.1. Khái niệm cấu trúc dữ liệu & giải thuật 1.2. Đánh giá cấu trúc dữ liệu và giải thuật 1.3. Ôn lại ngôn ngữ C++ 1.4. Các kiểu dữ liệu 1.5. Kiểu dữ liệu trừu tượng 1.6. Hàm 1.7. Tổng kết 1.8. Câu hỏi và bài tập Chương 1  Dữ liệu có thể là dữ liệu đưa vào (input data), dữ liệu trung gian hoặc dữ liệu đưa ra (output data). Mỗi dữ liệu có một kiểu dữ liệu riêng. Kiểu dữ liệu có thể là kiểu cơ bản hay kiểu trừu tượng  Cấu trúc dữ liệu là sự sắp xếp có logic của thành phần dữ liệu được kết hợp với nhau và là tập hợp các thao tác chúng ta cần để truy xuất các thành phần dữ liệu.  Ví dụ: thư viện  Bao gồm các sách  Truy cập/tìm kiếm một cuốn sách nào đó đòi hỏi phải biết cách sắp xếp của các sách  Người dùng truy cập sách chỉ thông qua người quản lý thư viện. Cấu trúc dữ liệu Một cấu trúc dữ liệu tốt phải thỏa mãn:  Phản ánh đúng thực tế: Cần xem xét kỹ lưỡng cũng như dự trù các trạng thái biến đổi của dữ liệu trong chu trình sống để có thể chọn CTDL lưu trữ thể hiện chính xác đối tượng thực tế.  Phù hợp với các thao tác trên đó: Tăng tính hiệu quả của đề án, việc phát triển các thuật toán đơn giản, tự nhiên hơn => chương trình đạt hiệu quả cao hơn về tốc độ xử lý.  Tiết kiệm tài nguyên hệ thống: CTDL chỉ nên sử dụng tài nguyên hệ thống vừa đủ để đảm nhiệm được chức năng của nó. Loại tài nguyên cần quan tâm là : CPU và bộ nhớ. Cấu trúc dữ liệu [...]... trúc dữ liệu  Để đánh giá một cấu trúc dữ liệu chúng ta thường dựa vào một số tiêu chí sau:  Cấu trúc dữ liệu phải tiết kiệm tài nguyên (bộ nhớ trong),  Cấu trúc dữ liệu phải phản ảnh đúng thực tế của bài toán,  Cấu trúc dữ liệu phải dễ dàng trong việc thao tác dữ liệu Đánh giá CTDL và GT Thời gian thực hiện chương trình  Thời gian thực hiện một chương trình là một hàm của kích thước dữ liệu vào,... của giải thuật phải được xác định rõ ràng và phải được thực hiện chính xác, nhất quán 􀂾 Hiệu quả (effectiveness): các thao tác trong giải thuật phải được thực hiện trong một lượng thời gian hữu hạn  Ngoài ra một giải thuật còn phải có đầu vào (input) và đầu ra (output) Mối quan hệ giữa cấu trúc dữ liệu và giải thuật CTDL + Thuật toán = Chương trình Đánh giá CTDL và GT 1 Các tiêu chuẩn đánh giá cấu trúc. ..Những cấu trúc dữ liệu cơ bản  Các cấu trúc bao gồm  Danh sách liên kết (linked lists)  Ngăn xếp (Stack), Hàng đợi (Queue)  Cây nhị phân (binary trees)  … Giải thuật giải là gì?  Giải thuật (Algorithm):     Còn gọi là thuật toán là tập các bước có thể tính toán được để đạt được kết quả mong muốn Giải thuật được xây dựng trên cơ sở của cấu trúc dữ liệu đã được chọn Giải thuật có thể... các phần tử 2 1 1 4 3 2 3 6 5 4 5 7 6 7 Giải thuật giải là gì? 13  Ví dụ: Tính tổng các số nguyên lẻ từ 1 n        B1: B2: B3: B4: B5: B6: B7: S=0 i=1 Nếu i>n thì sang B7, ngược lại sang B4 S=S+i i=i+2 Quay lại B3 Tổng cần tìm là S Giải thuật giải là gì?   Giải thuật (Algorithm): Các tính chất quan trọng của giải thuật là: 􀂾 Hữu hạn (finiteness): giải thuật phải luôn luôn kết thúc sau một... C/C++ Biến, Hằng, Kiểu dữ liệu và Các cú pháp cơ bản Địa chỉ (Address) Con trỏ (Pointer) Mảng (Array) Mảng con trỏ (Pointer array) Mảng hai chiều (Two-dimensional array) Cấu trúc (Structure) Con trỏ cấu trúc (Structure pointer) Chuỗi (String) Tập tin (File) Hàm (Function) 32 2 Biến và Hằng số 33  Khai báo biến: Kiểu _dữ_ liệu tên_biến;  Khai báo và khởi tạo biến: Kiểu _dữ_ liệu tên_biến = giá trị; ... tập C/C++ 1  2 3 4 5 6 7 8 9 10 11 12 Cấu trúc chương trình C/C++ Các cú pháp cơ bản Địa chỉ (Address) Con trỏ (Pointer) Mảng (Array) Mảng con trỏ (Pointer array) Mảng hai chiều (Two-dimensional array) Cấu trúc (Structure) Con trỏ cấu trúc (Structure pointer) Chuỗi (String) Tập tin (File) Hàm (Function) 29 1 Cấu trúc chương trình C/C++  C Lệnh nhập và xuất dữ liệu  Using scanf, prinf (C standard)... {1} for (i = 0 ; ii ; j ) {3} if(a[j]< a[j-1]) // nếu sai vị trí thì đổi chỗ {4} { temp = a[j]; {5} a[j] = a[j-1]; {6} a[j-1] = temp; } } Cả ba lệnh đổi chỗ {4} {5} {6} tốn O(1) thời gian, do đó lệnh {3} tốn O(1) Vòng lặp {2} thực hiện (n-i) lần, mỗi lần O(1) do đó vòng lặp {2} tốn O((ni).1)=O(n-i) Vòng lặp {1} lặp (n-1) lần vậy độ phức tạp của giải thuật là: Chương 1:... các hàm khác gọi là hàm đa thức Một giải thuật mà thời gian thực hiện có độ phức tạp là một hàm đa thức thì chấp nhận được tức là có thể cài đặt để thực hiện, còn các giải thuật có độ phức tạp hàm mũ thì phải tìm cách cải tiến giải thuật Độ phức tạp thuật toán 20      Để đánh giá hiệu quả của một thuật toán, có thể tính số lượng các phép tính phải thực hiện của thuật toán này:  Phép so sánh  Phép... Kiểu _dữ_ liệu tên_biến = giá trị; Chương 1: Ôn tập 2 Kiểu dữ liệu cơ sở  Kiểu số nguyên:    Có thể có dấu hoặc không có dấu Các phép toán: O = {+, -, *, /, %,, =, =, …} Kiểu số thực:  Các phép toán: O = {+, -, *, /, , =, =, …} 2 Kiểu dữ liệu  Kiểu ký tự:  Có thể có các kích thước sau: + Kiểu ký tự 1 byte + Kiểu ký tự 2 bytes   Kiểu chuỗi ký tự:    Các phép toán: O = {+, -, ... được thực hiện phụ thuộc vào cỡ của bài toán, tức là độ lớn của đầu vào Vì thế độ phức tạp thuật toán là một hàm phụ thuộc đầu vào Tuy nhiên, không cần biết chính xác hàm này mà chỉ cần biết một ước lượng đủ tốt của chúng Để ước lượng độ phức tạp của một thuật toán ta Ví dụ 21    Bước 1 Gán Tổng = 0 Gán i = 0 Bước 2 int tong=0, i=0; – Tăng i thêm 1 đơn vị do{ – Gán Tổng = Tổng + i i++; Bước 3 So . liệu: • http://my.opera.com/LinhChi10/blog/ Tổng quan 1.1. Khái niệm cấu trúc dữ liệu & giải thuật 1.2. Đánh giá cấu trúc dữ liệu và giải thuật 1.3. Ôn lại ngôn ngữ C++ 1.4. Các kiểu dữ liệu 1.5. Kiểu dữ liệu trừu tượng. đánh giá cấu trúc dữ liệu  Để đánh giá một cấu trúc dữ liệu chúng ta thường dựa vào một số tiêu chí sau:  Cấu trúc dữ liệu phải tiết kiệm tài nguyên (bộ nhớ trong),  Cấu trúc dữ liệu phải. Hàm 1.7. Tổng kết 1.8. Câu hỏi và bài tập Chương 1  Dữ liệu có thể là dữ liệu đưa vào (input data), dữ liệu trung gian hoặc dữ liệu đưa ra (output data). Mỗi dữ liệu có một kiểu dữ liệu riêng.

Ngày đăng: 09/07/2014, 19:20

Từ khóa liên quan

Mục lục

  • TRƯỜNG ĐH CÔNG NGHIỆP TP. HCM TT CNTT

  • Giới thiệu

  • Nội dung chương trình

  • Kiến thức tiên quyết

  • Tài liệu

  • Tiêu chuẩn đánh giá

  • Trao đổi thông tin

  • Tổng quan

  • Slide 9

  • Slide 10

  • Những cấu trúc dữ liệu cơ bản

  • Giải thuật giải là gì?

  • Slide 13

  • Slide 14

  • Mối quan hệ giữa cấu trúc dữ liệu và giải thuật

  • Đánh giá CTDL và GT

  • Slide 17

  • Slide 18

  • Slide 19

  • Độ phức tạp thuật toán

Tài liệu cùng người dùng

Tài liệu liên quan