Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 65 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
65
Dung lượng
814,59 KB
Nội dung
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 ca+b, ab, bc... 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