Thông tin tài liệu
Tổng quan Cấu trúc liệu giải thuật Mục tiêu Giới thiệu vai trò việc tổ chức liệu đề án tin học Mối quan hệ giải thuật cấu trúc liệu Các yêu cầu tổ chức cấu trúc liệu Tổng quan đánh giá độ phức tạp giải thuật Cấu trúc liệu - Khoa CNTT Nội dung Vai trò Cấu trúc liệu đề án tin học Các tiêu chuẩn đánh giá cấu trúc liệu Kiểu liệu Đánh giá độ phức tạp giải thuật Cấu trúc liệu - Khoa CNTT Dự án tin học Vai trò cấu trúc liệu dự án tin học: Bài toán giải máy tính Bài tốn thực tế Đối tượng liệu Cấu trúc liệu - Khoa CNTT Xử lý đối tượng DL Tổ chức biểu diễn đối tượng Dữ liệu thực tế: - Mn hình vạn trạng, đa dạng, phong phú Thường có chứa đựng quan hệ với Cần phải tổ chức biểu diễn thành cấu trúc thích hợp - Phản ánh xác liệu thực tế Dễ dàng xử lý máy tính Xây dựng CTDL Cấu trúc liệu - Khoa CNTT Xây dựng thao tác xử lý DL Dựa Y/C cụ thể, xác định trình tự giải vấn đề máy tính để đưa kết mong muốn Đối tượng DL Thao tác xử lý Kết mong muốn Cấu trúc liệu - Khoa CNTT Chương trình máy tính Quan hệ chặt chẽ Cấu trúc liệu Giải thuật Chương trình Cấu trúc liệu - Khoa CNTT CTDL & Giải thuật Có mối quan hệ mật thiết - - - - Giải thuật phản ánh phép xử lý, đối tượng xử lý giải thuật liệu Với CTDL chọn có giải thuật tương ứng phù hợp Khi CTDL thay đổi GT thay đổi tránh xử lý gượng ép, thiếu tự nhiên cấu trúc ko thích hợp CTDL tốt giúp giải thuật xử lý phát huy tốt đa khả Cấu trúc liệu - Khoa CNTT Ví dụ Quản lý điểm học sinh: gồm có điểm, học sinh Thao tác xuất điểm số môn học học sinh! Học sinh Toán Lý Hoá Văn Tiên Tùng Thảo Cấu trúc liệu - Khoa CNTT Ví dụ Phương án A: dùng mảng chiều int result[12] = { 7, 9, 5, 6, 9, 5, 8, 7, 8, 6, 9, }; Tiên 8 Tùng Thảo Cấu trúc liệu - Khoa CNTT 10 Kiểu liệu cấu trúc Hiện thực - - - Kiểu liệu sở cho phép mô tả thông tin: int DiemThi Thông tin khác đòi hỏi kiểu liệu cấu trúc: char MSSV[15]; char TenSV[30]; char NoiSinh[30]; Thông tin ngày tháng năm sinh dùng ghi: typedef struct tagDate { char ngay; char thang; char nam; } Date; Cấu trúc liệu - Khoa CNTT typedef struct tagSV { char MSSV[15]; char TenSV[30]; char NoiSinh[30]; Date NgaySinh; int DiemThi; } SinhVien; 33 Độ phức tạp giải thuật Sự cần thiết phân tích giải thuật GT A GT C GT tốt GT B Vấn đề cần giải Cấu trúc liệu - Khoa CNTT Giải thuật Giải thuật đơn giản Giải thuật thực nhanh 34 Thời gian thực Thời gian thực phụ thuộc vào - Giải thuật Tập thị máy tính Cấu hình máy tính (tốc độ) Kỹ người lập trình Tính phức tạp thời gian tiếp cận theo đo lường việc thực thi Thời gian thực chương trình hàm theo kích thước liệu vào: T(n), n kích thước liệu vào Cấu trúc liệu - Khoa CNTT 35 Thời gian thực Đơn vị T(n) : theo số lệnh thực T(n) = Cn CT cần Cn thị thực thi Thời gian thực xấu nhất: tính chất liệu ảnh hưởng - VD chương trình xếp cho thời gian khác với DL có thứ tự khác nhau! T(n) thường xem TG chương trình thực xấu DL kích thước n Cấu trúc liệu - Khoa CNTT 36 Tỉ suất tăng Hàm ko âm T(n) có tỉ xuất tăng f(n) tồn số C N0 cho: - T(n) < Cf(n), với n ≥ N0 - “cho hàm ko âm T(n) bất kỳ, ta ln tìm tỷ suất tăng f(n) nó” Giả sử T(0) =1, T(1) = 4, tổng quát T(n) = (n+1)2 ∀ n ≥ 1, chứng minh T(n) = (n+1) ≤ 4n , ∀ n ≥ 1, 2 tỉ suất tăng n2 Cấu trúc liệu - Khoa CNTT T ( n) Running Time Đặt N0 = 1, C = 4, c × f (n) n0 Input Size 37 Độ phức tạp giải thuật T1(n) = 100n2 T2(n) = 5n3 Khi n đủ lớn: n > 20, T1(n) < T2(n) Cách hợp lý xét tỷ suất tăng hàm TG thực CT thay thân thời gian thực Cấu trúc liệu - Khoa CNTT 38 Độ phức tạp giải thuật Cho hàm T(n), T(n) có độ phức tạp f(n) tồn C, N0 cho: - T(n) ≤ Cf(n) với n ≥ N0 (tức T(n) có tỉ suất tăng f(n) ký hiệu T(n) O(f(n)) - VD: T(n) = (n+1)2 có tỷ suất tăng n2 nên T(n) = (n+1)2 O(n2) Lưu ý: O(Cf(n)) = O(f(n)) với C số O(C) = O(1) - Nói cách khác độ phức tạp tính tốn giải thuật hàm chặn hàm thời gian Cấu trúc liệu - Khoa CNTT 39 Độ phức tạp giải thuật Các độ phức tạp thường gặp: - Log2n, n, nlog2n, n2, n3, 2n, n!, nn Thông thường thuật giải có độ phức tạp đa thức cài đặt Cịn phức tạp mức hàm mũ phải cải tiến giải thuật! Cấu trúc liệu - Khoa CNTT 40 Hàm tăng trưởng 1,00E+10 1,00E+09 1,00E+08 n log n sqrt n n log n 100n n^2 n^3 1,00E+07 T(n) 1,00E+06 1,00E+05 1,00E+04 1,00E+03 1,00E+02 1,00E+01 1,00E+00 1,00E-01 16 32 64 128 256 512 n Cấu trúc liệu - Khoa CNTT 41 1024 Hàm tăng trưởng 1,00E+155 1,00E+143 1,00E+131 n log n sqrt n n log n 100n n^2 n^3 2^n 1,00E+119 1,00E+107 T(n) 1,00E+95 1,00E+83 1,00E+71 1,00E+59 1,00E+47 1,00E+35 1,00E+23 1,00E+11 1,00E-01 16 32 64 128 256 512 n Cấu trúc liệu - Khoa CNTT 42 1024 Qui tắc tính độ phức tạp Thời gian thực lệnh gán, đọc/ghi liệu O(1) Thời gian thực chuỗi lệnh xác định quy tắc cộng Thời gian thực cấu trúc IF thời gian lớn thực sau THEN ELSE thời gian điều kiện Thường thời gian điều kiện O(1) Thời gian thực vòng lặp tổng thời gian thực thân vòng lặp Nếu thời gian thực thân vòng lặp ko đổi tg thực vịng lặp tích số lần lặp với thời gian thực thân vòng lặp Cấu trúc liệu - Khoa CNTT 43 VD tính độ phức tạp VD giải thuật xếp bọt - (1) for(i = 0; i < n-1; i++) (2) for(j=n-1; j >i; j ) (3) if (a[j-1] > a[j]){ (4) temp = a[j-1]; (5) a[j-1] = a[j]; (6) a[j] = temp; (7) } Cấu trúc liệu - Khoa CNTT 44 VD tính độ phức tạp VD hàm tìm kiếm - (1) (2) (3) (4) (5) (6) (7) (8) i=0; found = false; while ( i
Ngày đăng: 03/12/2015, 00:35
Xem thêm: Bài giảng cấu trúc dữ liệu bài 1 tổng quan về cấu trúc dữ liệu và giải thuật, Bài giảng cấu trúc dữ liệu bài 1 tổng quan về cấu trúc dữ liệu và giải thuật, Các tiêu chuẩn đánh giá CTDL, Thuật toán - giải thuật, Kiểu dữ liệu cấu trúc, Thời gian thực hiện, Độ phức tạp giải thuật