Cấu trúc dữ liệu phân tích thuật toán và phát triển phần mềm

297 188 2
Cấu trúc dữ liệu phân tích thuật toán và phát triển phần mềm

Đ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

H THUẦN (Chủ biên) C Ấ U P H Â N v đ T R Ú C T ÍC H P H Á T D ữ L IÇ U T H U Ộ T T O R N T R Iấ N P H Ầ N M € M NHÀ X U Ấ T BẢN G IÁO DỤC VIỆT NAM Chương I KHÁi QUÁT vế THUẬT TOnN cnu TRÚC DỮ Llfu THUẬT TOÁN 1.1 KHÁI NIỆM THUẬT TỐN Thuật ngữ thuật tốn (Algorithm) xuất phát từ tên nhà toán học Ảrập Abu Ja'far Mohamed ibn Musa al'Khwarizmi, thường gọi arKhwarizmi ông tác giả sách số học, ơng dùng phương pháp mô tả rõ ràng, mạch lạc cách giải tốn Sau này, phương pháp mơ tả cách giải ông xem chuẩn mực nhiều nhà toán học khác tuân theo Thuật ngữ algorithm đời từ dựa theo cách phiên âm tên ông Cùng với thời gian khái niệm thuật tốn hồn chỉnh dần khái niệm hình thức xác thuật tốn định nghĩa thơng qua mơ hình máy Turing Giáo trình khơng sâu vào khía cạnh lí thuyết thuật tốn nên trình bày khái niệm khơng hình thức thuật toán; Thuật toán hệ thống quy tắc chặt chẽ rỗ ràng nhằm xác định dãy thao tác đối tượng cho sau số hữu hạn bước thực thao tác đạt mục tiêu định trước 1.2 CÁC ĐẶC TRƯNG CỦA THUẬT TỐN Một thuật tốn thơng thường có đặc trưng sau: 1.2.1 Tính kết thúc (tính dừng) Thuật tốn phải dừng sau số hữu hạn bước thực Ví dụ, quy tắc sau khơng phải thuật tốn khơng có tứứi dừng: Bước ỉ' a[i] th en M in ;= a [i]; + Kích thước liệu vào đặc trưng số phần tử mảng mà ta eần tìm số nhỏ + Phép tốn thuật toán phép so sánh biểu thức Min > a[ĩ\ + Số phép so sánh trưòfng hợp tốt xấu n - + Vậy độ phức tạp thuật tốn tìm số nhỏ mảng có n phần tử T(«) = n - \ Trong trưcmg hợp thuật toán thực nhiều phép tốn bản, ta đánh giá độ phức tạp loại phép toán tổng hợp phép toán cách gán trọng số cho phép tốn Ví dụ Thuật tốn nhân hai ma trận a„,x„ b„^p Kết lưu vào ma trận c„,xpi F o r i : =1 t o m d o F o r j : =1 t o p d o B egin c [ i , j ] :=0; For k : = l t o n c [i,j]:= c [i,j]+ a [i,k ]* b [k ,j]; End; Đánh giá độ phức tạp thuật tốn: + Đặc trưng kích thước liệu vào: giả sử n số lớn ba số m, n, p Khi ta lấy n đại lượng đặc trưng cho liệu vào + Phép toán bản: thuật toán sử dụng hai phép toán phép cộn^ (+) phép nhân (*) Dễ tíiấy độ phức tạp tính trường hợp tốt xấu nhau, cụ thể: + Số phép cộng: Tl(n) = m.(n - ).p\ + Số phép nhân: T2{n) = m.n.p-, + Không túih tổng quát ta giả thiết m = n= p v ằ xem phép nhân phép toán bản, ta đánh giá độ phức tạp thuật tốn nhân hai ma trận vng có kích thước nxn là: T{n) = n^ Ví dụ Thuật tốn tìm phần tử X danh sách L e ó n phần tử cách tìm tuần tư fou n d := F alse; F o r i :=1 t o n I f L [i] = X then B egin found:=T rue; E xit; End; + Do phiic tap duac danh gia qua s6' l^n thiic hien phep so sanh L[/]=jf + Truofng.hop tot nhat: so Ian so sanh la 1, tnicmg hop ph^n tu can tim x la ph^n tu dau tien cua danh sach Do Min(n) =1 + TnJotig hop xau nhat la ph^n tir c^n tim khong c6 danh sach Khi Max(«) = n Vi du Thu^t toan sap xep day so a[\ n] tang ddn For i : = l t o n - For j ; = i + l If t o n a [i]> a [j] then B egin tg := a [i] ; a [i]:= a [j]; a[j]:= tg; E nd ; Do phlic tap cua thuat toan diioc danh gia trdn hai phep toan cd ban la phep so s^nh bieu thurc di^u kien cua lenh //v a phep gan, ki hieu tuong ling la C{n) va M(n) Do phlic tap duoc danh gia trucmg hop "xa'u" nhat cua dii lieu vao la day so b tinh trang thii tu giam Khi ta tinh dugc: n + So phep so sanh C{n) = ( « - ! ) — + So phep gan M(n) = 3(n ~ • Danh gia thuat toan trucmg hop thuan Igi nha't, Irudng hop day so da sap theo thii tu tang Khi do: + So phep so sanh C{n) = { n - 1) + So phep gan M(n) = 2.CTDL - PTPMEMA 1.5 ĐỘ PHỨC TẠP TRUNG BÌNH Việc đánh giá độ phức tạp thuật toán trường hợp xấu hay tốt nhiều trường hợp khơng thể tính "phức tạp" thuật tốn vào trường hợp liệu vào có tính đặc thù Độ phức tạp trung bình: gọi piđ) xác suất để liệu d e D„ chọn Độ phức tạp trung bình thuật tốn A tnicmg hợp kích thước liệu vào n, kí hiệu Avg^(rt): Avg^(n) = X P (d).cost^(d) deD„ Việc túih độ phức tạp trung bình nhiều trường hợp khó khăn Để thuận lợi tính tốn, xét số trường hợp sau: i) Min^(n) < Avg^(n) < Max^(rt) ii) Phân bố liêu vào phân bố đều, p{d) = A vg»= (điều ln đúng) D Do ^co st^(tí?) deD„ Giả sử D„ phân hoạch thành D „ J u D „2 u u D„„„ D „J tập liệu mà độ phức tạp thuật toán A liệu kí hiệu cost^(D„y) Gọi p(D„j) xác suất để liệu D„ thuộc vào D„J Khi ta có: iii) Avg^(n)= X P(D„j) cosị^{D„j) Ví dụ Tính độ phức tạp trung bình thuật tốn tìm kiếm Gọi: q xác suất để X có mặt danh sách Sự xuất X vị trí danh sách - ợ xác suất để X khơng có mặt danh sách Phân hoạch D„ thành tập: Z)„o tập liệu thuộc D„ mà khơng chứa phần tử cần tìm X tập liệu thuộc D„ mà phần tử JClà phần tử thứ D„J tập liệu thuộc D„ mà phần tử Xlà phần tử thứ j D„„ tập liệu thuộc D„ mà phần tử Xlà phần tử thứ n Khi đó: 10 2.CTDL PTPWẾM.B ... vào Mỗi thuật toán thường có đại lượng vào gọi liệu vào để cung cấp liệu cho thuật toán Tuy nhiên, có thuật tốn khơng có liệu vào 1.2.5 Dữ liệu Sau kết thúc thuật toán, tuỳ vào*chức thuật toán mà... liên hệ cấu trúc liệu thuật tốn: THUẬT TỐN + CẤU TRÚC DỮ LIỆU = CHƯƠNG TRÌNH (Algorithms + Data Structures = Programs) Một thuật toán giải' toán thao tác cách tổ chức liệu (cấu trúc liệu) cụ... hợp kiểu liệu sở để tạo nên kiểu liệu phức tạp gọi kiểu liệu có cấu trúc Các kiểu liệu có cấu trúc thưòng dùng ngơn ngữ lập trình bậc cao như; Aưay, String, Record, File, cấu trúc liệu thường

Ngày đăng: 05/05/2020, 23:24

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

Tài liệu liên quan