Bài giảng cấu trúc dữ liệu và giải thuật chương 1 ths nguyễn thị khiêm hòa

65 225 1
Bài giảng cấu trúc dữ liệu và giải thuật  chương 1   ths  nguyễn thị khiêm hòa

Đ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

Chương 1: Tổng quan Giảng viên: Ths Nguyễn Thị Khiêm Hòa Khoa Công Nghệ Thông Tin - Trường Đại học Ngân hàng TP.HCM Nội dung    Cấu trúc liệu thuật toán  Thuật toán đặc trưng thuật toán  Diễn đạt thuật toán  Kiểu liệu, ADT, cấu trúc liệu Phân tích thiết kế thuật toán  Thiết kế thuật toán  Phân tích thuật toán Một số lớp thuật toán Khoa Công Nghệ Thông Tin - Trường Đại học Ngân hàng TP.HCM Mục tiêu  Tìm hiểu nội dung:  Thiết kế phân tích thuật toán  Hiểu rõ kiểu liệu, kiểu liệu trừu tượng, cấu trúc liệu  Đánh giá độ phức tạp thuật toán Khoa Công Nghệ Thông Tin - Trường Đại học Ngân hàng TP.HCM Giải toán máy tính  Giải toán:    Mục tiêu Phương pháp Giải toán tin học cần phải:   Tổ chức biểu diễn đối tượng thực tế Xây dựng trình tự thao tác xử lý đối tượng liệu Khoa Công Nghệ Thông Tin - Trường Đại học Ngân hàng TP.HCM Giải toán máy tính Cấu trúc liệu + Thuật toán Chương trình Khoa Công Nghệ Thông Tin - Trường Đại học Ngân hàng TP.HCM Kiểu liệu trừu tượng _ADT  Kiểu liệu  Kiểu liệu trừu tượng  ADT - abstract data type  Kiểu liệu trừu tượng: T =  V: Values - miền giá trị  O: Operators – thao tác Khoa Công Nghệ Thông Tin - Trường Đại học Ngân hàng TP.HCM Cấu trúc liệu  Cấu trúc liệu (Data structure): Cách tổ chức liệu cho toán  Có số cấu trúc liệu riêng ngôn ngữ lập trình gọi CTDL tiền định Khoa Công Nghệ Thông Tin - Trường Đại học Ngân hàng TP.HCM Đánh giá cấu trúc liệu  Phản ánh thực tế  Phù hợp với thao tác  Tiết kiệm tài nguyên hệ thống Khoa Công Nghệ Thông Tin - Trường Đại học Ngân hàng TP.HCM Cấu trúc lưu trữ (trong/ngoài)   Cách biểu diễn tối ưu cấu trúc liệu nhớ (trong/ngoài) máy tính gọi cấu trúc lưu trữ Có nhiều cấu trúc lưu trữ khác cho cấu trúc liệu Khoa Công Nghệ Thông Tin - Trường Đại học Ngân hàng TP.HCM Thuật toán Định nghĩa  Lý thuyết thuật toán quan tâm đến vấn đề sau:     Giải thuật toán Tối ưu hóa thuật toán Triển khai thuật toán Khoa Công Nghệ Thông Tin - Trường Đại học Ngân hàng TP.HCM 10 Một số ví dụ Sum=0 for (i=0;i Khoa Công Nghệ Thông Tin - Trường Đại học Ngân hàng TP.HCM 56 Phân tích hàm đệ quy  Sử dụng phép T(n-1) = T(n-2) + b, T(n-2) = T(n-3) + b, , ta có T(n) = T(n-1) + b = T(n-2) + 2b = T(n-3) + 3b = T(1) + (n-1)b = a + (n-1)b Từ đó, ta suy T(n) = O(n) Khoa Công Nghệ Thông Tin - Trường Đại học Ngân hàng TP.HCM 57 Phân tích hàm đệ quy  Gọi T(n) thời gian chạy hàm đệ quy F  Khi đó, thời gian chạy lời gọi hàm hàm F T(m) (với m < n)  Trước hết, phải đánh giá thời gian chạy hàm F liệu nhỏ n = 1, giả sử T(1) = a (điều kiện dừng)  Sau đó, đánh giá thời gian chạy câu lệnh thân hàm F  Tìm quan hệ đệ quy biểu diễn thời gian chạy hàm F thông qua lời gọi hàm Khoa Công Nghệ Thông Tin - Trường Đại học Ngân hàng TP.HCM 58 Sự phân lớp giải thuật  Độ phức tạp  O(1) độ phức tạp số  O(logn) độ phức tạp logarit  O(n) độ phức tạp tuyến tính  O(nlogn) độ phức tạp nlogn  O(nb) độ phức tạp đa thức  O(bn) độ phức tạp mũ  O(n!) độ phức tạp giai thừa Khoa Công Nghệ Thông Tin - Trường Đại học Ngân hàng TP.HCM 59 Sự phân lớp giải thuật Khoa Công Nghệ Thông Tin - Trường Đại học Ngân hàng TP.HCM 60 Đánh giá độ phức tạp ba trường hợp  Ví dụ: Thuật toán tìm kiếm int sequenceSearch(int x, int a[], int n) { for (int i=0;i[...]... Cấu trúc dữ liệu và thuật toán  Đối tượng xử lý của thuật toán chính là dữ liệu  Với một cấu trúc dữ liệu, sẽ có những thuật toán tương ứng  Thuật toán thường thay đổi khi cấu trúc dữ liệu thay đổi Khoa Công Nghệ Thông Tin - Trường Đại học Ngân hàng TP.HCM 18 Thiết kế thuật toán  Từ bài toán đến chương trình Lập trình Thiết kế Bài toán thực tế Giải thuật Kỹ thuật thiết kế giải thuật: Chia để trị,... trong 2 số còn lại để vào vị trí thứ n -1 Khoa Công Nghệ Thông Tin - Trường Đại học Ngân hàng TP.HCM 22 Thiết kế thuật toán Tinh chế 1: For (i= 1, i min thì min = x[j] với j [i +1, n] - đổi chổ x[i] và min } Khoa Công Nghệ... i +1, quay lại bước 4 Khoa Công Nghệ Thông Tin - Trường Đại học Ngân hàng TP.HCM 16 Diễn đạt thuật toán Ví dụ 3: Tìm phần tử lớn nhất trong mảng A  Thuật toán Tim_max(A, n) Input: Mảng A, gồm n số nguyên Output: Giá trị lớn nhất của A Max  A[0] for i  1 to n  1 do if A[i]  Max then Max  A[i] return Max Khoa Công Nghệ Thông Tin - Trường Đại học Ngân hàng TP.HCM 17 Mối quan hệ giữa Cấu trúc dữ liệu. .. i  bước 6  Bước 5: Gán i  i +1, trở lại bước 4  Bước 6:  Nếu i > √n  n nguyên tố  dừng  Ngược lại, n không là nguyên tố  dừng Khoa Công Nghệ Thông Tin - Trường Đại học Ngân hàng TP.HCM 15 Diễn đạt thuật toán Ví dụ 2: Thuật toán tìm phần tử thứ n của dãy số Fibonacci  Bước 1: Nhập n  Bước 2: Nếu n =1 hay n=2  fn =1  dừng  Bước 3: Nếu n > 2, gán a 1, b 1, i 1  Bước 4: Gán ca+b, ab, bc... hàng TP.HCM 25 Phân tích thuật toán   Giải quyết bài toán  Phải đứng trước việc lựa chọn giải thuật nào?  Dựa trên cơ sở nào để lựa chọn ? Có hai mục tiêu trái ngược  Thuật toán dễ hiểu, cài đặt và gỡ lỗi  Thuật toán sử dụng hiệu quả tài nguyên máy tính, đặc biệt chạy càng nhanh càng tốt Khoa Công Nghệ Thông Tin - Trường Đại học Ngân hàng TP.HCM 26 Đánh giá độ phức tạp thuật toán  Độ phức tạp... toán  Độ phức tạp không gian (Space complexity) Dung lượng bộ nhớ mà thuật toán đòi hỏi  Độ phức tạp thời gian (Time complexity) Thời gian thực hiện thuật toán Khoa Công Nghệ Thông Tin - Trường Đại học Ngân hàng TP.HCM 27 Phân tích thời gian thực hiện thuật toán  Thời gian thực hiện giải thuật phụ thuộc vào các yếu tố sau:  Dữ liệu vào  Tốc độ thực hiện các phép toán của máy tính (phần cứng máy tính)... hiệu biểu diễn thuật toán bằng sơ đồ khối Nút thao tác Nút điều khiển: trong đó ghi điều kiện cần kiểm tra trong quá trình tính toán Nút khởi đầu ,kết thúc Cung Khoa Công Nghệ Thông Tin - Trường Đại học Ngân hàng TP.HCM 13 Khoa Công Nghệ Thông Tin - Trường Đại học Ngân hàng TP.HCM 14 Diễn đạt thuật toán Ví dụ 1: Thuật toán xác định n là số nguyên tố  Bước 1: Nhập n  Bước 2: Nếu n ≤ 1  n ko nguyên... thiết kế giải thuật: Chia để trị, quy hoạch động, back tracking v.v… #include … Chương trình •Ngôn ngữ lập trình: •PASCAL, C/C++, JAVA, … Khoa Công Nghệ Thông Tin - Trường Đại học Ngân hàng TP.HCM 19 Thiết kế thuật toán  Module hoá và việc giải quyết bài toán  Chiến thuật chia để trị (divide-conquer):  Để thực hiện chiến thuật này, thường có hai cách thiết kế:  Từ trên xuống (Top-Down Design)  Tinh... Thiết kế thuật toán  Tinh chỉnh từng bước:  Biểu diễn ý tưởng bằng ngôn ngữ tự nhiên  Chi tiết hóa các công việc nhỏ hơn dùng mã giả rồi đến ngôn ngữ lập trình Khoa Công Nghệ Thông Tin - Trường Đại học Ngân hàng TP.HCM 21 Thiết kế thuật toán  Ví dụ: Bài toán sắp xếp một dãy n số, theo thứ tự tăng dần  Chọn số bé nhất trong n số để vào vị trí thứ 1  Chọn số bé nhất trong n -1 số còn lại để vào vị.. .Thuật toán  Đặc trưng của thuật toán Tính  Tính  Tính  Tính  Tính  xác định hữu hạn (Tính dừng) đúng đắn phổ dụng khả thi Khoa Công Nghệ Thông Tin - Trường Đại học Ngân hàng TP.HCM 11 Diễn đạt thuật toán  Dạng lưu đồ (sơ đồ khối)  Dạng ngôn ngữ tự nhiên (Ngôn ngữ liệt kê từng bước)  Ngôn ngữ lập trình  Dạng mã giả Khoa Công Nghệ Thông Tin - Trường Đại học Ngân hàng TP.HCM 12 Diễn đạt thuật ... Tin - Trường Đại học Ngân hàng TP.HCM 17 Mối quan hệ Cấu trúc liệu thuật toán  Đối tượng xử lý thuật toán liệu  Với cấu trúc liệu, có thuật toán tương ứng  Thuật toán thường thay đổi cấu trúc. .. dung    Cấu trúc liệu thuật toán  Thuật toán đặc trưng thuật toán  Diễn đạt thuật toán  Kiểu liệu, ADT, cấu trúc liệu Phân tích thiết kế thuật toán  Thiết kế thuật toán  Phân tích thuật toán... diễn tối ưu cấu trúc liệu nhớ (trong/ngoài) máy tính gọi cấu trúc lưu trữ Có nhiều cấu trúc lưu trữ khác cho cấu trúc liệu Khoa Công Nghệ Thông Tin - Trường Đại học Ngân hàng TP.HCM Thuật toán

Ngày đăng: 03/12/2015, 02:15

Từ khóa liên quan

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

Tài liệu liên quan